Suppose we have three features: feature_a, feature_b, and feature_only_if_a_or_b. The third feature, feature_only_if_a_or_b, is meaningful only when at least one of feature_a or feature_b is enabled. Otherwise, it does nothing and shouldn't be tested.
In terms of combinations, I want to test the following setups:
feature_a
feature_b
feature_a + feature_only_if_a_or_b
feature_b + feature_only_if_a_or_b
feature_a + feature_b + feature_only_if_a_or_b
I understand --group-features can enforce specific groupings, like:
--group-features feature_a,feature_only_if_a_or_b --group-features feature_b,feature_only_if_a_or_b
However, this approach excludes feature_a and feature_b from running without feature_only_if_a_or_b. It doesn't allow single features to run independently.
Likewise, no combination of --exclude-features or --include-features achieves the desired behavior. For example, --exclude-features feature_only_if_a_or_b prevents it from running solo but also removes it from any valid combination.
When a feature is a strict sub-feature of another, there's an easy fix, you just make the sub-feature enable the parent feature. This is, however, not possible when a feature is orthogonally integrated with others, like in this case.
Suppose we have three features:
feature_a,feature_b, andfeature_only_if_a_or_b. The third feature,feature_only_if_a_or_b, is meaningful only when at least one offeature_aorfeature_bis enabled. Otherwise, it does nothing and shouldn't be tested.In terms of combinations, I want to test the following setups:
feature_afeature_bfeature_a+feature_only_if_a_or_bfeature_b+feature_only_if_a_or_bfeature_a+feature_b+feature_only_if_a_or_bI understand
--group-featurescan enforce specific groupings, like:However, this approach excludes
feature_aandfeature_bfrom running withoutfeature_only_if_a_or_b. It doesn't allow single features to run independently.Likewise, no combination of
--exclude-featuresor--include-featuresachieves the desired behavior. For example,--exclude-features feature_only_if_a_or_bprevents it from running solo but also removes it from any valid combination.When a feature is a strict sub-feature of another, there's an easy fix, you just make the sub-feature enable the parent feature. This is, however, not possible when a feature is orthogonally integrated with others, like in this case.