aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-07-10 18:50:28 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-07-31 16:36:42 +0300
commit176b8902f6288e24b2c8bbaf89cf9683e61f4046 (patch)
tree469b449070940660dc3b325cf51ab640e5af9fc2 /tests
parent8982192386d4c67a16211bb1f3e1e642ebed6212 (diff)
Add regression test for GH issue #359
Diffstat (limited to 'tests')
-rw-r--r--tests/sync.testscript94
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/sync.testscript b/tests/sync.testscript
index 25b53a6..caf6b32 100644
--- a/tests/sync.testscript
+++ b/tests/sync.testscript
@@ -384,3 +384,97 @@ deinit += -d prj
EOO
}
}
+
+: failure-preserve-user-config
+:
+{
+ $new -t empty -C @cfg prj $config_cxx &prj/*** &prj-cfg/***;
+
+ $new --package pkg -d prj;
+ $new --package -t lib libpkg -d prj;
+
+ echo 'depends: libpkg' >+prj/pkg/manifest;
+ sed -i -e 's/^#import.+$/import libs += libpkg%lib{pkg}/' prj/pkg/pkg/buildfile;
+
+ echo 'config [bool] config.pkg.feature ?= false' >+prj/pkg/build/root.build;
+ echo 'config [bool] config.libpkg.feature ?= false' >+prj/libpkg/build/root.build;
+
+ $init -d prj/ @cfg config.pkg.feature=true config.libpkg.feature=true;
+
+ sed -n -e 's/config.pkg.feature = (.+)/\1/p' \
+ prj-cfg/pkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/pkg/build/bootstrap/src-root.build >/~'%.+/prj/pkg/%';
+
+ sed -n -e 's/config.libpkg.feature = (.+)/\1/p' \
+ prj-cfg/libpkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/%';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/tests/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/tests/%';
+
+ mkdir --no-cleanup prj/libpkg/stray;
+ echo '' >+prj/libpkg/manifest;
+
+ $build prj/pkg/ 2>>~%EOE% != 0;
+ %synchronizing .*prj-cfg.:%
+ upgrade libpkg/0.1.0-a.0.19700101000000#1
+ config.libpkg.feature=true (user configuration)
+ reconfigure pkg/0.1.0-a.0.19700101000000
+ config.pkg.feature=true (user configuration)
+ %error: no explicit target for .+stray.+%
+ info: while configuring libpkg
+ %.*
+ EOE
+
+ sed -n -e 's/config.pkg.feature = (.+)/\1/p' \
+ prj-cfg/pkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/pkg/build/bootstrap/src-root.build >/~'%.+/prj/pkg/%';
+
+ sed -n -e 's/config.libpkg.feature = (.+)/\1/p' \
+ prj-cfg/libpkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/%';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/tests/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/tests/%';
+
+ rmdir prj/libpkg/stray;
+
+ $build prj/pkg/ 2>>~%EOE%;
+ %synchronizing .*prj-cfg.:%
+ update libpkg/0.1.0-a.0.19700101000000#1
+ update pkg/0.1.0-a.0.19700101000000
+ %(mkdir|version|c\+\+|ld|ln) .+%{8}
+ EOE
+
+ sed -n -e 's/config.pkg.feature = (.+)/\1/p' \
+ prj-cfg/pkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/pkg/build/bootstrap/src-root.build >/~'%.+/prj/pkg/%';
+
+ sed -n -e 's/config.libpkg.feature = (.+)/\1/p' \
+ prj-cfg/libpkg/build/config.build >'true';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/%';
+
+ sed -n -e 's/src_root = (.+)/\1/p' \
+ prj-cfg/libpkg/tests/build/bootstrap/src-root.build >/~'%.+/prj/libpkg/tests/%';
+
+ $deinit 2>>/"EOE"
+ deinitializing in project $~/prj/
+ deinitializing package pkg
+ deinitializing package libpkg
+ synchronizing:
+ drop pkg
+ drop libpkg
+ EOE
+}