aboutsummaryrefslogtreecommitdiff
path: root/tests/recipe
diff options
context:
space:
mode:
Diffstat (limited to 'tests/recipe')
-rw-r--r--tests/recipe/buildscript/testscript20
-rw-r--r--tests/recipe/cxx/testscript39
2 files changed, 59 insertions, 0 deletions
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>-