diff options
Diffstat (limited to 'tests/sync.testscript')
-rw-r--r-- | tests/sync.testscript | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/tests/sync.testscript b/tests/sync.testscript new file mode 100644 index 0000000..d01550b --- /dev/null +++ b/tests/sync.testscript @@ -0,0 +1,204 @@ +# file : tests/sync.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 += $cxx -d prj 2>! +status += --all --recursive -d prj +deinit += -d prj + +: single-pkg-cfg +: +{ + $new -C @cfg prj $cxx &prj/*** &prj-cfg/***; + + $new -t lib libprj &libprj/***; + + cat <<EOI >+prj/repositories.manifest; + : + role: prerequisite + location: ../libprj + type: dir + EOI + + cat <<EOI >+prj/manifest; + depends: libprj + EOI + + sed -i -e 's/^(#import .+)$/import libs += libprj%lib{prj}/' \ + prj/prj/buildfile; + + cat <<EOI >=prj/prj/prj.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 + + $* -d prj 2>>/~"%EOE%"; + fetching dir:$~/libprj \(prerequisite of dir:$~/prj\) + synchronizing: + % new libprj.+ \\\(required by prj\\\)% + % upgrade prj.+19700101000000#1% + EOE + + $status >>~%EOO%; + prj configured 0.1.0-a.0.19700101000000#1 + % libprj configured 0.+% + EOO + + $build prj/ 2>>~%EOE%; + %(mkdir|version\.in|c\+\+|ld|ln) .+%{8} + EOE + + $build 'clean:' prj/ 2>>~%EOE%; + %rm .+%{3} + EOE + + $deinit 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + drop libprj + EOE +} + +: multi-pkg-cfg +: +{ + $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 + + # Sync the default (cfg1) configuration (via the package directory). + # + $* -d prj/pkg2 2>>/~"%EOE%"; + fetching dir:$~/libprj \(prerequisite of dir:$~/prj\) + synchronizing: + % new libprj.+ \\\(required by pkg1\\\)% + % upgrade pkg1.+19700101000000#1% + % upgrade pkg2.+19700101000000#1% + EOE + + $status >>~%EOO% 2>>/~"%EOE%"; # Note: implicitly fetches into cfg2. + in configuration @cfg1: + pkg1 configured 0.1.0-a.0.19700101000000#1 + % libprj configured 0.+% + pkg2 configured 0.1.0-a.0.19700101000000#1 + + in configuration @cfg2: + pkg1 configured 0.1.0-a.0.19700101000000 available 0.1.0-a.0.19700101000000#1 + pkg2 configured 0.1.0-a.0.19700101000000 available 0.1.0-a.0.19700101000000#1 + EOO + fetching dir:$~/libprj \(prerequisite of dir:$~/prj\) + EOE + + # Sync all configurations (via the project directory). + # + $* --all -d prj 2>>~%EOE%; + in configuration @cfg1: + + in configuration @cfg2: + synchronizing: + % new libprj.+ \(required by pkg1\)% + upgrade pkg1/0.1.0-a.0.19700101000000#1 + upgrade pkg2/0.1.0-a.0.19700101000000#1 + EOE + + $status >>~%EOE%; + in configuration @cfg1: + pkg1 configured 0.1.0-a.0.19700101000000#1 + % libprj configured 0.+% + pkg2 configured 0.1.0-a.0.19700101000000#1 + + in configuration @cfg2: + pkg1 configured 0.1.0-a.0.19700101000000#1 + % libprj configured 0.+% + pkg2 configured 0.1.0-a.0.19700101000000#1 + EOE + + $build prj/pkg1/ 2>>~%EOE%; + %(mkdir|version\.in|c\+\+|ld|ln) .+%{8} + EOE + + $build prj/pkg2/ 2>>~%EOE%; + %(mkdir|c\+\+|ld|ln) .+%{4} + EOE + + $build 'clean:' prj/pkg1/ 2>>~%EOE%; + %rm .+%{3} + EOE + + $build 'clean:' prj/pkg2/ 2>>~%EOE%; + %rm .+%{3} + EOE + + $deinit 2>>/"EOE" + deinitializing in project $~/prj/ + deinitializing package pkg1 + deinitializing package pkg2 + synchronizing: + drop pkg1 + drop libprj + drop pkg2 + EOE +} |