aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2019-03-21 21:56:15 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2019-03-23 16:25:12 +0300
commit51e1d64dccf4967eb078858529a0d7f05b8b461e (patch)
treee8314c5d2ece0964f828dedb203465e79d5a634b /tests
parentbba28902195a9aceb987d474cf2004d034932533 (diff)
Add --post-hook option to bdep-new
Diffstat (limited to 'tests')
-rw-r--r--tests/new.testscript102
1 files changed, 95 insertions, 7 deletions
diff --git a/tests/new.testscript b/tests/new.testscript
index 7e484fc..186c7e7 100644
--- a/tests/new.testscript
+++ b/tests/new.testscript
@@ -4,6 +4,12 @@
.include common.testscript
+posix = ($cxx.target.class != 'windows')
+
+# Our C tests use fmemopen() which is not always available.
+#
+c_tests = ($c.target.class != 'windows' && $c.target.class != 'macos')
+
# Disable nesting checks in the created projects.
#
test.arguments += --no-checks
@@ -154,12 +160,9 @@ status += -d prj
EOE
}
- # Our C tests use fmemopen() which is not always available.
- #
-
: lib-c
:
- if ($c.target.class != 'windows' && $c.target.class != 'macos')
+ if $c_tests
{
$* -t lib -l c libprj-foo 2>>/"EOE" &libprj-foo/***;
created new library project libprj-foo in $~/libprj-foo/
@@ -172,7 +175,7 @@ status += -d prj
: lib-c-unit-tests
:
- if ($c.target.class != 'windows' && $c.target.class != 'macos')
+ if $c_tests
{
$* -t lib,unit-tests -l c libfoo 2>>/"EOE" &libfoo/***;
created new library project libfoo in $~/libfoo/
@@ -500,7 +503,7 @@ status += -d prj
: type
:
- if ($c.target.class != 'windows' && $c.target.class != 'macos')
+ if $c_tests
{
: exe
:
@@ -584,7 +587,7 @@ status += -d prj
: c
:
- if ($c.target.class != 'windows' && $c.target.class != 'macos')
+ if $c_tests
{
$* -l c libprj 2>>/"EOE" &libprj/***;
created new library project libprj in $~/libprj/
@@ -613,6 +616,91 @@ status += -d prj
}
}
}
+
+ : post-hook
+ :
+ if $posix
+ {
+ : success
+ :
+ {
+ $* -t empty prj \
+ --post-hook "echo .idea/ >>.gitignore" \
+ --post-hook "echo @mode@ @name@ @base@ @stem@" \
+ --post-hook "echo @type@ @lang@ @vcs@ @root@" \
+ >>"EOO" 2>>/"EOE" &prj/***;
+ project prj prj prj
+ empty c++ git $~/prj
+ EOO
+ created new empty project prj in $~/prj/
+ EOE
+
+ cat prj/.gitignore >>~%EOO%;
+ %.+
+ .idea/
+ EOO
+
+ $* --package prj -d prj \
+ --post-hook "echo @@@@TODO >>NEWS" \
+ --post-hook "echo @mode@ @name@ @base@ @stem@ @root@" \
+ >>"EOO" 2>>/"EOE" &prj/prj/***;
+ package prj prj prj $~/prj
+ EOO
+ created new executable package prj in $~/prj/prj/
+ EOE
+
+ cat prj/prj/NEWS >'@@TODO';
+
+ $* --package -t lib libprj.bash -d prj \
+ --post-hook "echo @@@@TODO >>NEWS" \
+ --post-hook "echo @mode@ @name@ @base@ @stem@ @root@" \
+ >>"EOO" 2>>/"EOE" &prj/prj/***;
+ package libprj.bash libprj prj $~/prj
+ EOO
+ created new library package libprj.bash in $~/prj/libprj.bash/
+ EOE
+
+ cat prj/libprj.bash/NEWS >'@@TODO';
+
+ cat <<EOI >=hook;
+ #!/bin/sh
+ echo "$(pwd)"
+ echo "$BDEP_NEW_MODE $BDEP_NEW_ROOT"
+ EOI
+
+ chmod u+x hook;
+
+ $* -t lib --subdirectory libprj -d prj/prj --post-hook "$~/hook" \
+ >>"EOO" 2>>/"EOE" &prj/prj/libprj/***
+ $~/prj/prj/libprj
+ subdirectory $~/prj/prj
+ EOO
+ created new library source subdirectory libprj in $~/prj/prj/libprj/
+ EOE
+ }
+
+ : failure
+ :
+ {
+ : substitution
+ :
+ $* prj --post-hook 'echo foo >>@bar@' 2>>EOE &prj/*** != 0
+ error: invalid post hook 'echo foo >>@bar@': unknown variable 'bar'
+ EOE
+
+ : open-redirect
+ :
+ $* prj --post-hook 'echo foo >>bar/baz' 2>>/~%EOE% &prj/*** != 0
+ %error: unable to execute post hook 'echo foo >>bar/baz': unable to open stdout redirect file '.+baz': .+%
+ EOE
+
+ : process
+ :
+ $* prj --post-hook '""' 2>>~%EOE% &prj/*** != 0
+ %error: unable to execute post hook '""': .+%
+ EOE
+ }
+ }
}
: cfg