From ab0d6919707349436edd336bbfa8f433bd6e6749 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 9 Feb 2018 15:00:16 +0200 Subject: Fix broken test (and few other things) --- build2/test/rule.cxx | 4 ++-- tests/build/root.build | 2 +- tests/test/config-test/testscript | 5 +++-- tests/test/script/generated/buildfile | 2 +- tests/test/script/generated/driver.cxx | 11 ----------- tests/test/script/generated/testscript | 7 +------ tests/test/script/generated/testscript.in | 2 +- tests/test/simple/generated/buildfile | 4 +++- tests/test/simple/generated/driver.cxx | 25 +++++++++++++++++++++++-- tests/test/simple/generated/input.in | 1 + tests/test/simple/generated/testscript | 25 ++++++++++++++----------- tests/test/simple/generated/utility.cxx | 28 ---------------------------- 12 files changed, 50 insertions(+), 66 deletions(-) delete mode 100644 tests/test/script/generated/driver.cxx create mode 100644 tests/test/simple/generated/input.in delete mode 100644 tests/test/simple/generated/utility.cxx diff --git a/build2/test/rule.cxx b/build2/test/rule.cxx index 7f6a133..392c9d5 100644 --- a/build2/test/rule.cxx +++ b/build2/test/rule.cxx @@ -172,9 +172,9 @@ namespace build2 } // If this is not a script, then determine if it is a simple test. - // Ignore aliases and testscript files themselves at the outset. + // Ignore testscript files themselves at the outset. // - if (!script && !t.is_a () && !t.is_a ()) + if (!script && !t.is_a ()) { // For the simple case whether this is a test is controlled by the // test variable. Also, it feels redundant to specify, say, "test = diff --git a/tests/build/root.build b/tests/build/root.build index 7d483fe..76ed483 100644 --- a/tests/build/root.build +++ b/tests/build/root.build @@ -13,7 +13,7 @@ cxx{*}: extension = cxx # as our $build.path). # import b = build2%exe{b} -dir{*}: test = $b +test{*}: test = $b # Specify the test target for cross-testing. # diff --git a/tests/test/config-test/testscript b/tests/test/config-test/testscript index 7423322..0561a59 100644 --- a/tests/test/config-test/testscript +++ b/tests/test/config-test/testscript @@ -75,8 +75,9 @@ EOI # units/simple - simple (non-scripted) test # # This one is a bit tricky since we need an executable to run. We don't want -# to be building anything as part of our test project so what we do is test -# a dummy file target with an overridden test target. +# to be building anything as part of our test project so what we do is test a +# dummy file target with an overridden test target (note that $src_root here +# refers to the root of the project being tested). # +mkdir proj/units/simple +touch proj/units/simple/driver diff --git a/tests/test/script/generated/buildfile b/tests/test/script/generated/buildfile index c27b49d..524be44 100644 --- a/tests/test/script/generated/buildfile +++ b/tests/test/script/generated/buildfile @@ -5,4 +5,4 @@ # Test generated testscripts. # -./: test{testscript} $b file{*.cxx +*.in} +./: test{testscript} $b file{*.in} diff --git a/tests/test/script/generated/driver.cxx b/tests/test/script/generated/driver.cxx deleted file mode 100644 index e155462..0000000 --- a/tests/test/script/generated/driver.cxx +++ /dev/null @@ -1,11 +0,0 @@ -// file : tests/test/script/generated/driver.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -int -main () -{ - std::cout << "1.2.3" << std::endl; -} diff --git a/tests/test/script/generated/testscript b/tests/test/script/generated/testscript index 572c73f..8b9d2ab 100644 --- a/tests/test/script/generated/testscript +++ b/tests/test/script/generated/testscript @@ -19,16 +19,11 @@ name: test version: 1.2.3 EOI -+cat <=build/root.build -using cxx -EOI - : testscript : -ln -s $src_base/driver.cxx ./; ln -s $src_base/testscript.in ./; $* <'@version@' +echo '@version@' >'1.2.3' diff --git a/tests/test/simple/generated/buildfile b/tests/test/simple/generated/buildfile index af97abd..2d795a8 100644 --- a/tests/test/simple/generated/buildfile +++ b/tests/test/simple/generated/buildfile @@ -5,4 +5,6 @@ # Test generated test inputs/outputs. # -./: test{testscript} $b file{*.cxx +*.in} +./: test{testscript} exe{driver} $b file{*.in} + +exe{driver}: cxx{driver} diff --git a/tests/test/simple/generated/driver.cxx b/tests/test/simple/generated/driver.cxx index fb3ab8f..a8e5cab 100644 --- a/tests/test/simple/generated/driver.cxx +++ b/tests/test/simple/generated/driver.cxx @@ -2,10 +2,31 @@ // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file +#include +#include #include +using namespace std; + int -main () +main (int argc, char* argv[]) { - std::cout << "1.2.3" << std::endl; + int r (0); + + if (argc == 1) + { + cout << "1.2.3" << endl; + } + else + { + ifstream ifs (argv[1]); + + if (!ifs.is_open ()) + cerr << "unable to open " << argv[1] << endl; + + string s; + r = getline (ifs, s) && s == "1.2.3" ? 0 : 1; + } + + return r; } diff --git a/tests/test/simple/generated/input.in b/tests/test/simple/generated/input.in new file mode 100644 index 0000000..36d79d4 --- /dev/null +++ b/tests/test/simple/generated/input.in @@ -0,0 +1 @@ +$version$ diff --git a/tests/test/simple/generated/testscript b/tests/test/simple/generated/testscript index 9ec5220..f7ab8d6 100644 --- a/tests/test/simple/generated/testscript +++ b/tests/test/simple/generated/testscript @@ -17,26 +17,29 @@ name: test version: 1.2.3 EOI -+cat <=build/root.build -using cxx -EOI +# This one is a bit tricky since we need an executable to run. We don't want +# to be building anything as part of our test project so what we do is test +# the directory target with an overridden test target (note that $src_root +# here refers to the root of the project being tested). : input : -ln -s $src_base/driver.cxx ./; -ln -s $src_base/utility.cxx ./; +ln -s $src_base/input.in ./; $* < -#include - -using namespace std; - -int -main (int argc, char* argv[]) -{ - if (argc != 2) - { - cerr << "usage: " << argv[0] << " " << endl; - return 1; - } - - ifstream ifs (argv[1], ifstream::in | ifstream::binary | ifstream::ate); - - if (!ifs.is_open ()) - cerr << "unable to open " << argv[1] << endl; - - if (ifs.tellg () == 0) - cerr << argv[1] << " is empty" << endl; - - return 0; -} -- cgit v1.1