diff options
Diffstat (limited to 'tests/recipe')
-rw-r--r-- | tests/recipe/buildscript/testscript | 20 | ||||
-rw-r--r-- | tests/recipe/cxx/testscript | 39 |
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>- |