aboutsummaryrefslogtreecommitdiff
path: root/tests/config.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/config.testscript')
-rw-r--r--tests/config.testscript320
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
+}