diff options
-rw-r--r-- | build2/test/rule.cxx | 4 | ||||
-rw-r--r-- | tests/build/root.build | 2 | ||||
-rw-r--r-- | tests/test/config-test/testscript | 5 | ||||
-rw-r--r-- | tests/test/script/generated/buildfile | 2 | ||||
-rw-r--r-- | tests/test/script/generated/driver.cxx | 11 | ||||
-rw-r--r-- | tests/test/script/generated/testscript | 7 | ||||
-rw-r--r-- | tests/test/script/generated/testscript.in | 2 | ||||
-rw-r--r-- | tests/test/simple/generated/buildfile | 4 | ||||
-rw-r--r-- | tests/test/simple/generated/driver.cxx | 25 | ||||
-rw-r--r-- | tests/test/simple/generated/input.in | 1 | ||||
-rw-r--r-- | tests/test/simple/generated/testscript | 25 | ||||
-rw-r--r-- | tests/test/simple/generated/utility.cxx | 28 |
12 files changed, 50 insertions, 66 deletions
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<alias> () && !t.is_a<testscript> ()) + if (!script && !t.is_a<testscript> ()) { // 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 <iostream> - -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 <<EOI >=build/root.build -using cxx -EOI - : testscript : -ln -s $src_base/driver.cxx ./; ln -s $src_base/testscript.in ./; $* <<EOI -exe{driver}: cxx{driver} test{testscript} +./: test{testscript} test{testscript}: in{testscript} $src_root/file{manifest} #@@ in module test{testscript}: in.symbol = '@' EOI diff --git a/tests/test/script/generated/testscript.in b/tests/test/script/generated/testscript.in index b030b39..297d79d 100644 --- a/tests/test/script/generated/testscript.in +++ b/tests/test/script/generated/testscript.in @@ -2,4 +2,4 @@ # copyright : Copyright (c) 2014-2017 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -$* >'@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 <string> +#include <fstream> #include <iostream> +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 <<EOI >=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 ./; $* <<EOI -exe{utility}: cxx{utility} -exe{utility}: exe{driver}: test.input = true -exe{driver}: cxx{driver} +driver = $src_root/../exe{driver} +dir{./}: test = $driver # @@ TMP (target/scope regularity) +./: $driver +./: file{input}: test.input = true +file{input}: in{input} $src_root/file{manifest} #@@ in module EOI : output : -ln -s $src_base/driver.cxx ./; ln -s $src_base/output.in ./; $* <<EOI -exe{driver}: cxx{driver} -exe{driver}: file{output}: test.stdout = true +driver = $src_root/../exe{driver} +dir{./}: test = $driver # @@ TMP (target/scope regularity) +./: $driver +./: file{output}: test.stdout = true file{output}: in{output} $src_root/file{manifest} #@@ in module EOI diff --git a/tests/test/simple/generated/utility.cxx b/tests/test/simple/generated/utility.cxx deleted file mode 100644 index e2113bd..0000000 --- a/tests/test/simple/generated/utility.cxx +++ /dev/null @@ -1,28 +0,0 @@ -// file : tests/test/simple/generated/utility.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include <iostream> -#include <fstream> - -using namespace std; - -int -main (int argc, char* argv[]) -{ - if (argc != 2) - { - cerr << "usage: " << argv[0] << " <file>" << 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; -} |