aboutsummaryrefslogtreecommitdiff
path: root/build2/test
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-03-06 10:29:00 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-03-06 10:29:00 +0200
commit4da38e50a096e9aa19a75149bcc9dbb6e1de901e (patch)
tree9bac645e06f419f9bfa56bc93503d1390514ef53 /build2/test
parentd1d1d444f0b4abbb628625240025bfe3cfe77459 (diff)
Iterate over group members in test rule only if resolvable
Diffstat (limited to 'build2/test')
-rw-r--r--build2/test/rule.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/build2/test/rule.cxx b/build2/test/rule.cxx
index 9861baf..0a346d8 100644
--- a/build2/test/rule.cxx
+++ b/build2/test/rule.cxx
@@ -63,7 +63,15 @@ namespace build2
// If we have any prerequisites of the test{} type, then this is the
// testscript case.
//
- for (prerequisite_member p: group_prerequisite_members (a, t))
+ // If we can, go inside see-through groups. Normally groups won't be
+ // resolvable for this action but then normally they won't contain any
+ // testscripts either. In other words, if there is a group that
+ // contains testscripts as members then it will need to arrange for
+ // the members to be resolvable (e.g., by registering an appropriate
+ // rule for the test operation).
+ //
+ for (prerequisite_member p:
+ group_prerequisite_members (a, t, members_mode::maybe))
{
if (p.is_a<testscript> ())
{
@@ -215,7 +223,8 @@ namespace build2
// Collect all the testscript targets in prerequisite_targets.
//
- for (prerequisite_member p: group_prerequisite_members (a, t))
+ for (prerequisite_member p:
+ group_prerequisite_members (a, t, members_mode::maybe))
{
if (p.is_a<testscript> ())
t.prerequisite_targets.push_back (&p.search ());