diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2024-03-27 11:04:30 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2024-03-27 11:04:30 +0300 |
commit | 2b5bea3871d0ccc1b7da32929f195dc161bcc1ec (patch) | |
tree | 01818fe382b7f0990bcae08b21c7eddc82610ad0 /mod | |
parent | 8c9524f9abbbed78677baa92125be550b6560fc6 (diff) |
Fix external test package configuration selection semantics in build task handler
Diffstat (limited to 'mod')
-rw-r--r-- | mod/mod-build-task.cxx | 41 |
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)) |