aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/dependency/recipe/testscript22
-rw-r--r--tests/recipe/buildscript/testscript20
-rw-r--r--tests/recipe/cxx/testscript39
3 files changed, 79 insertions, 2 deletions
diff --git a/tests/dependency/recipe/testscript b/tests/dependency/recipe/testscript
index 4c4abe5..3126691 100644
--- a/tests/dependency/recipe/testscript
+++ b/tests/dependency/recipe/testscript
@@ -436,7 +436,7 @@ alias{x}:
echo
}}
EOI
-<stdin>:2:3: error: duplicate recipe for perform(update)
+<stdin>:2:3: error: duplicate perform(update) recipe
EOE
: duplicate-action-multiple
@@ -451,7 +451,25 @@ alias{x}:
echo
}}
EOI
-<stdin>:5:3: error: duplicate recipe for perform(update)
+<stdin>:5:3: error: duplicate perform(update) recipe
+EOE
+
+: duplicate-action-multipe-decls
+:
+$* <<EOI 2>>EOE != 0
+alias{y}:
+{{
+ echo
+}}
+
+alias{x y}:
+% perform(update)
+{{
+ diag echo
+ echo
+}}
+EOI
+<stdin>:7:3: error: duplicate perform(update) recipe for target alias{y}
EOE
: if-else
diff --git a/tests/recipe/buildscript/testscript b/tests/recipe/buildscript/testscript
index 3ccfdd5..12c5717 100644
--- a/tests/recipe/buildscript/testscript
+++ b/tests/recipe/buildscript/testscript
@@ -724,3 +724,23 @@ if $posix
}
}
}
+
+# @@ TODO: test $1 when implemented.
+#
+: rule
+:
+{
+ cat <<EOI >=buildfile;
+ alias{far}: alias{bar}
+ alias{bar}:
+
+ alias{~'/f(.+)/'}: alias{~'/b\1/'}
+ {{
+ diag $< $>
+ }}
+ EOI
+
+ $* 2>>EOE
+ alias{bar} alias{far}
+ EOE
+}
diff --git a/tests/recipe/cxx/testscript b/tests/recipe/cxx/testscript
index 323e049..9a87c24 100644
--- a/tests/recipe/cxx/testscript
+++ b/tests/recipe/cxx/testscript
@@ -165,6 +165,45 @@ if (!$static && $test.target == $build.host)
$* clean 2>-
}
+ : rule
+ :
+ {
+ cat <<EOI >=buildfile;
+ alias{far}: alias{bar}
+ alias{bar}:
+
+ alias{~'/f(.+)/'}: alias{~'/b\1/'}
+ {{ c++ 1 --
+
+ #include <iostream>
+
+ --
+
+ recipe
+ apply (action, target&) const override
+ {
+ return [this] (action a, const target& t)
+ {
+ return perform_update (a, t);
+ };
+ }
+
+ target_state
+ perform_update (action, const target& t) const
+ {
+ const auto& mr (t.data<regex_match_results> ());
+ text << pattern->rule_name << ": " << mr.str (1);
+ return target_state::changed;
+ }
+ }}
+ EOI
+
+ $* 2>>~%EOE%
+ %^(c\+\+|ld).*%+
+ <ad hoc pattern rule #1>: ar
+ EOE
+ }
+
# Clean recipe builds if the testscript is enabled (see above for details).
#
-$* clean 2>-