diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-09-04 14:32:11 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-09-04 14:49:21 +0300 |
commit | d1d9fbc899be37bba7b05f31ac5c7a4d15d64811 (patch) | |
tree | 99722bfda82125c5ad383917df0af794ff1b9e1f /tests/config.testscript | |
parent | 971b29ac8c45da1659a57421f95d4caa237ee6be (diff) |
Rename .test/test{} to .testscript/testscript{}
Diffstat (limited to 'tests/config.testscript')
-rw-r--r-- | tests/config.testscript | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/tests/config.testscript b/tests/config.testscript new file mode 100644 index 0000000..68e504c --- /dev/null +++ b/tests/config.testscript @@ -0,0 +1,320 @@ +# file : tests/config.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Note that we test the list sub-command while testing other sub-commands. +# + +.include common.testscript project.testscript + +cxx = cc config.cxx="$recall($cxx.path)" + +status += -d prj +init += -d prj +update += -d prj +deinit += -d prj + +: create +: +{ + : name-dir + : + { + $clone_root_prj; + + $* create @cfg cfg-dir $cxx 2>>/"EOE" &cfg-dir/***; + created configuration @cfg $~/cfg-dir/ 1 default,forwarded,auto-synchronized + EOE + + $status 2>'error: package prj is not initialized in configuration @cfg' != 0; + + $init @cfg 2>>/~"%EOE%"; + initializing in project $~/prj/ + synchronizing: + % new prj.+19700101000000% + EOE + + $status >'prj configured 0.1.0-a.0.19700101000000'; + + $* list @cfg >>/"EOO"; + @cfg $~/cfg-dir/ 1 default,forwarded,auto-synchronized + EOO + + $update @cfg 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit @cfg 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE + } + + : name + : + { + $clone_root_prj; + + $* create -- @cfg $cxx 2>>/"EOE" &prj-cfg/***; + created configuration @cfg $~/prj-cfg/ 1 default,forwarded,auto-synchronized + EOE + + $init @cfg 2>>/~"%EOE%"; + initializing in project $~/prj/ + synchronizing: + % new prj.+19700101000000% + EOE + + $status >'prj configured 0.1.0-a.0.19700101000000'; + + $* list >>/"EOO"; + @cfg $~/prj-cfg/ 1 default,forwarded,auto-synchronized + EOO + + $update @cfg 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit @cfg 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE + } + + : dir + : + { + $clone_root_prj; + + $* create cfg $cxx 2>>/"EOE" &cfg/***; + created configuration $~/cfg/ 1 default,forwarded,auto-synchronized + EOE + + $init -c cfg 2>>/~"%EOE%"; + initializing in project $~/prj/ + synchronizing: + % new prj.+19700101000000% + EOE + + $status >'prj configured 0.1.0-a.0.19700101000000'; + + $* list >>/"EOO"; + $~/cfg/ 1 default,forwarded,auto-synchronized + EOO + + $update -c cfg 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit -c cfg 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE + } + + : wipe + : + { + $clone_root_prj; + + mkdir --no-cleanup cfg; + touch --no-cleanup cfg/a; + + $* create cfg $cxx 2>>/"EOE" != 0; + error: directory $~/cfg/ is not empty + info: use --wipe to clean it up but be careful + EOE + + $* create --wipe cfg $cxx 2>>/"EOE" &cfg/*** + created configuration $~/cfg/ 1 default,forwarded,auto-synchronized + EOE + } +} + +: add +: +{ + $clone_root_prj; + + # Pre-create configurations. + # + $new -C prj-cfg1 tmp1 $cxx 2>! &prj-cfg1/*** &tmp1/***; + $new -C prj-cfg2 tmp2 $cxx 2>! &prj-cfg2/*** &tmp2/***; + + $* add @cfg1 prj-cfg1 2>>/"EOE"; + added configuration @cfg1 $~/prj-cfg1/ 1 default,forwarded,auto-synchronized + EOE + + $* add @cfg2 prj-cfg2 2>>/"EOE"; + added configuration @cfg2 $~/prj-cfg2/ 2 auto-synchronized + EOE + + $init --all 2>>/~"%EOE%"; + initializing in project $~/prj/ + in configuration @cfg1: + synchronizing: + % new prj.+19700101000000% + + in configuration @cfg2: + synchronizing: + % new prj.+19700101000000% + EOE + + $status --all >>EOO; + in configuration @cfg1: + prj configured 0.1.0-a.0.19700101000000 + + in configuration @cfg2: + prj configured 0.1.0-a.0.19700101000000 + EOO + + $* list >>/"EOO"; + @cfg1 $~/prj-cfg1/ 1 default,forwarded,auto-synchronized + @cfg2 $~/prj-cfg2/ 2 auto-synchronized + EOO + + $update --all 2>>~%EOE%; + in configuration @cfg1: + %(mkdir|c\+\+|ld) .+%{3} + + in configuration @cfg2: + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit --all 2>>/"EOE" + deinitializing in project $~/prj/ + in configuration @cfg1: + synchronizing: + drop prj + + in configuration @cfg2: + synchronizing: + drop prj + EOE +} + +: move +: +{ + $clone_root_prj; + + $* create -- @cfg $cxx &prj-cfg/*** 2>>/"EOE"; + created configuration @cfg $~/prj-cfg/ 1 default,forwarded,auto-synchronized + EOE + + $init @cfg 2>>/~"%EOE%"; + initializing in project $~/prj/ + synchronizing: + % new prj.+19700101000000% + EOE + + mv prj-cfg prj-cfg2; + + $* move @cfg prj-cfg2 2>>/"EOE"; + moved configuration @cfg $~/prj-cfg/ 1 to $~/prj-cfg2/ + EOE + + $update --all 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE +} + +: rename +: +{ + $clone_root_prj; + + $* create -- @cfg $cxx 2>>/"EOE" &prj-cfg/***; + created configuration @cfg $~/prj-cfg/ 1 default,forwarded,auto-synchronized + EOE + + $init @cfg 2>>/~"%EOE%"; + initializing in project $~/prj/ + synchronizing: + % new prj.+19700101000000% + EOE + + $* rename @cfg cfg2 2>>/"EOE"; + renamed configuration @cfg $~/prj-cfg/ 1 to @cfg2 + EOE + + $update @cfg2 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE +} + +: remove +: +: Here we also test the set sub-command. +: +{ + $clone_root_prj; + + $* create -- @cfg1 $cxx 2>! &prj-cfg1/***; + $* create -- @cfg2 $cxx 2>! &prj-cfg2/***; + + $init --all 2>!; + + $* remove @cfg1 2>>EOE != 0; + error: configuration @cfg1 contains initialized packages + info: use deinit command to deinitialize packages + info: use status command to list initialized packages + EOE + + $deinit @cfg1 2>>/"EOE"; + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE + + $* remove @cfg1 2>>/"EOE"; + removed configuration @cfg1 $~/prj-cfg1/ 1 + EOE + + $status --all >>EOO; + prj configured 0.1.0-a.0.19700101000000 + EOO + + $* list >>/"EOO"; + @cfg2 $~/prj-cfg2/ 2 auto-synchronized + EOO + + $update 2>>/"EOE" != 0; + error: no default configuration in project $~/prj/ + info: use \(@<cfg-name> | --config|-c <cfg-dir> | --all|-a\) to specify configuration explicitly + EOE + + $* set @cfg2 --default --forward --no-auto-sync 2>>/"EOE"; + updated configuration @cfg2 $~/prj-cfg2/ 2 default,forwarded + info: explicit bdep-sync is required for changes to take effect + EOE + + $* list >>/"EOO"; + @cfg2 $~/prj-cfg2/ 2 default,forwarded + EOO + + $update 2>>~%EOE%; + %(mkdir|c\+\+|ld) .+%{3} + EOE + + $deinit --all 2>>/"EOE" + deinitializing in project $~/prj/ + synchronizing: + drop prj + EOE +} |