aboutsummaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-03-27 11:04:30 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-03-27 11:04:30 +0300
commit2b5bea3871d0ccc1b7da32929f195dc161bcc1ec (patch)
tree01818fe382b7f0990bcae08b21c7eddc82610ad0 /mod
parent8c9524f9abbbed78677baa92125be550b6560fc6 (diff)
Fix external test package configuration selection semantics in build task handler
Diffstat (limited to 'mod')
-rw-r--r--mod/mod-build-task.cxx41
1 files changed, 14 insertions, 27 deletions
diff --git a/mod/mod-build-task.cxx b/mod/mod-build-task.cxx
index 4dd1e3d..e2f69f7 100644
--- a/mod/mod-build-task.cxx
+++ b/mod/mod-build-task.cxx
@@ -1257,13 +1257,12 @@ handle (request& rq, response& rs)
// Try to use the test package configuration named the same as the
// current configuration of the main package. If there is no such
- // a configuration or it excludes the current target
- // configuration, then fallback to using the default configuration
- // (which must exist). If in this case the default configuration
- // excludes the current target configuration, then exclude this
- // external test package from the build task.
+ // a configuration, then fallback to using the default
+ // configuration (which must exist). If the selected test package
+ // configuration excludes the current target configuration, then
+ // exclude this external test package from the build task.
//
- // Note that potentially the test package default configuration
+ // Note that potentially the selected test package configuration
// may contain some (bpkg) arguments associated, but we currently
// don't provide build bot worker with such information. This,
// however, is probably too far fetched so let's keep it simple
@@ -1271,6 +1270,13 @@ handle (request& rq, response& rs)
//
const build_package_config* tpc (find (pc.name, tp->configs));
+ if (tpc == nullptr)
+ {
+ tpc = find ("default", tp->configs);
+
+ assert (tpc != nullptr); // Must always be present.
+ }
+
// Use the `all` class as a least restrictive default underlying
// build class set. Note that we should only apply the explicit
// build restrictions to the external test packages (think about
@@ -1279,32 +1285,13 @@ handle (request& rq, response& rs)
//
build_db_->load (*tp, tp->constraints_section);
- if (tpc == nullptr ||
- exclude (*tpc,
+ if (exclude (*tpc,
tp->builds,
tp->constraints,
tc,
nullptr /* reason */,
true /* default_all_ucs */))
- {
- // If the current package configuration is "default", then we
- // cannot fallback and just exclude the test package outright.
- //
- if (pc.name == "default")
- continue;
-
- tpc = find ("default", tp->configs);
-
- assert (tpc != nullptr); // Must always be present.
-
- if (exclude (*tpc,
- tp->builds,
- tp->constraints,
- tc,
- nullptr /* reason */,
- true /* default_all_ucs */))
- continue;
- }
+ continue;
for (const build_auxiliary& ba:
tpc->effective_auxiliaries (tp->auxiliaries))