aboutsummaryrefslogtreecommitdiff
path: root/tests/test.testscript
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2018-09-04 14:32:11 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2018-09-04 14:49:21 +0300
commitd1d9fbc899be37bba7b05f31ac5c7a4d15d64811 (patch)
tree99722bfda82125c5ad383917df0af794ff1b9e1f /tests/test.testscript
parent971b29ac8c45da1659a57421f95d4caa237ee6be (diff)
Rename .test/test{} to .testscript/testscript{}
Diffstat (limited to 'tests/test.testscript')
-rw-r--r--tests/test.testscript106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/test.testscript b/tests/test.testscript
new file mode 100644
index 0000000..dec9177
--- /dev/null
+++ b/tests/test.testscript
@@ -0,0 +1,106 @@
+# file : tests/test.testscript
+# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+.include common.testscript
+
+cxx = cc config.cxx="$recall($cxx.path)"
+
+new += 2>!
+init += cc "config.cxx=$config.cxx" -d prj 2>!
+deinit += -d prj
+
+: single-pkg-cfg
+:
+{
+ $new -C @cfg prj $cxx &prj/*** &prj-cfg/***;
+
+ $* -d prj 2>>~%EOE%;
+ %(mkdir|c\+\+|ld|test) .+%{4}
+ EOE
+
+ $deinit 2>>/"EOE"
+ deinitializing in project $~/prj/
+ synchronizing:
+ drop prj
+ EOE
+}
+
+: multi-pkg-cfg
+:
+: Here we will also test recursively.
+:
+{
+ $new -t empty prj &prj/***;
+
+ $new --package pkg1 -d prj;
+ $new --package pkg2 -d prj;
+
+ $init -C @cfg1 &prj-cfg1/***;
+ $init -C @cfg2 &prj-cfg2/***;
+
+ $new -t lib libprj &libprj/***;
+
+ cat <<EOI >+prj/repositories.manifest;
+ :
+ role: prerequisite
+ location: ../libprj
+ type: dir
+ EOI
+
+ cat <<EOI >+prj/pkg1/manifest;
+ depends: libprj
+ EOI
+
+ sed -i -e 's/^(#import .+)$/import libs += libprj%lib{prj}/' \
+ prj/pkg1/pkg1/buildfile;
+
+ cat <<EOI >=prj/pkg1/pkg1/pkg1.cxx;
+ #include <iostream>
+
+ #include <libprj/prj.hxx>
+
+ using namespace std;
+
+ int main (int argc, char* argv[])
+ {
+ if (argc < 2)
+ {
+ cerr << "error: missing name" << endl;
+ return 1;
+ }
+
+ prj::say_hello (cout, argv[1]);
+ }
+ EOI
+
+ cat <<EOI >+prj/pkg2/manifest;
+ tags: c++
+ EOI
+
+ $* -d prj/pkg2 2>>/~"%EOE%"; # Default (cfg1).
+ fetching dir:$~/libprj \(prerequisite of dir:$~/prj\)
+ synchronizing:
+ % new libprj.+ \\\(required by pkg1\\\)%
+ % upgrade pkg1.+19700101000000#1%
+ % upgrade pkg2.+19700101000000#1%
+ %\(mkdir|c\\+\\+|ld|test\) .+%{4}
+ EOE
+
+ $* @cfg2 -d prj/pkg2 2>>/~"%EOE%"; # By name (cfg2).
+ fetching dir:$~/libprj \(prerequisite of dir:$~/prj\)
+ synchronizing:
+ % new libprj.+ \\\(required by pkg1\\\)%
+ % upgrade pkg1.+19700101000000#1%
+ % upgrade pkg2.+19700101000000#1%
+ %\(mkdir|c\\+\\+|ld|test\) .+%{4}
+ EOE
+
+ $* -a --recursive -d prj/pkg1 2>>~%EOE% # All configs recursive.
+ in configuration @cfg1:
+ %(mkdir|version\.in|c\+\+|ld|test) .+%{12}
+
+ in configuration @cfg2:
+ %(mkdir|version\.in|c\+\+|ld|test) .+%{12}
+ EOE
+}