From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QQ64Y-0003m3-Fj for garchives@archives.gentoo.org; Fri, 27 May 2011 23:04:02 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9010F1C0F4; Fri, 27 May 2011 23:03:25 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 5F3361C0F3 for ; Fri, 27 May 2011 23:03:25 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 27C831BC013 for ; Fri, 27 May 2011 23:03:25 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 7FFAA8050B for ; Fri, 27 May 2011 23:03:24 +0000 (UTC) From: "Petteri Räty" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Petteri Räty" Message-ID: Subject: [gentoo-commits] proj/libbash:master commit in: src/builtins/tests/, src/builtins/ X-VCS-Repository: proj/libbash X-VCS-Files: src/builtins/source_builtin.cpp src/builtins/tests/source_tests.cpp X-VCS-Directories: src/builtins/tests/ src/builtins/ X-VCS-Committer: betelgeuse X-VCS-Committer-Name: Petteri Räty X-VCS-Revision: d33c85725fde46652bf0d625e3738103686f3190 Date: Fri, 27 May 2011 23:03:24 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 3651e943d3d3e04e0f5ade9775ed6e00 commit: d33c85725fde46652bf0d625e3738103686f3190 Author: Mu Qiao gentoo org> AuthorDate: Thu May 26 08:52:58 2011 +0000 Commit: Petteri R=C3=A4ty gentoo org> CommitDate: Thu May 26 14:56:52 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/libbash.git;a= =3Dcommit;h=3Dd33c8572 Builtin: source returns 1 if the script is illegal If the given script can not be parsed properly, source will return 1 rather than printing error message only. A test is added for testing empty argument. --- src/builtins/source_builtin.cpp | 3 +++ src/builtins/tests/source_tests.cpp | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 0 deletions(-) diff --git a/src/builtins/source_builtin.cpp b/src/builtins/source_builti= n.cpp index 87f8a5d..5f78177 100644 --- a/src/builtins/source_builtin.cpp +++ b/src/builtins/source_builtin.cpp @@ -50,7 +50,10 @@ int source_builtin::exec(const std::vector& bash_args) { stored_ast.reset(new bash_ast(path)); if(stored_ast->get_error_count()) + { std::cerr << path << " could not be parsed properly" << std::endl; + return 1; + } } =20 const std::string& original_path =3D _walker.resolve("0")= ; diff --git a/src/builtins/tests/source_tests.cpp b/src/builtins/tests/sou= rce_tests.cpp index 4549954..b051de3 100644 --- a/src/builtins/tests/source_tests.cpp +++ b/src/builtins/tests/source_tests.cpp @@ -73,3 +73,22 @@ TEST(source_builtin_test, source_return) EXPECT_EQ(status, 10); EXPECT_TRUE(walker.is_unset_or_null("NOT_EXIST", 0)); } + +TEST(source_builtin_test, invalid) +{ + interpreter walker; + EXPECT_THROW(cppbash_builtin::exec("source", + {}, + std::cout, + std::cerr, + std::cin, + walker), + interpreter_exception); + int status =3D cppbash_builtin::exec("source", + {get_src_dir() + "/scripts/illegal_= script.sh"}, + std::cout, + std::cerr, + std::cin, + walker); + EXPECT_NE(status, 0); +}