error-stack test feature distribution #877
Replies: 3 comments
-
The discussions forum are fine and a good way! Your powerset calculation is not correct. Some features implies other features (like The groups seem fine to me, and 32 elements seem like a good compromise between test size and coverage (for normal testing). As @nonparibus proposed, we could still do the full powerset on publish-builds, I will take this into account just before we release a new version. Thank you for doing the research and pointing it out! 🎉 |
Beta Was this translation helpful? Give feedback.
-
Yea @nonparibus proposal is excellent, and having a lengthy test time only for each release is the best compromise. |
Beta Was this translation helpful? Give feedback.
-
Correction: After digging (compiling cargo-hack locally and printing all permutations generated). This is my updated list of thing, the amount of items in the Test conditions (have been normalized):
Correction:
Grouping:
Footnotes
|
Beta Was this translation helpful? Give feedback.
-
(I don't have any other channel to contact, so I guess the discussion forum is the best forum)
I thought about the different features with
glyph
(and then in a couple of days™ - serde), our current test permutations are exploding.A powerset (without any additional$2^n$ , where
--optional-deps
) can be expressed asn
is our amount of features. Currently, #794 has seven features (excluding thedefault
feature), totaling 128 different variations!This means that lint are about$384$ ($128 * 3$ ) invocations ($384$ for testing (I am unsure as to why it multiplies by 3)
format
,clippy
,doc
) andGrouping features together has an exponential gain in test complexity and time.
After some deliberation, this is the preliminary list I came up with:
anyhow
,eyre
- they can be grouped because they are both a compatibility layer and completely independent from each otherexperimental
- this enables experimental features, therefore cannot be groupedglyph
,serde
- both do formatting that is entirely separate from each otherstd
,hooks
-hooks
is dependent onstd
and "only" enables additional functionalityspantrace
,futures
,small
- separate from each other and do not influence each other.small
is included here because it changes fromVec
toSmallVec
and does not change any other behavior.Doing this preliminary grouping, we would only have$2^5$ , which results in "only" $32$ elements.
@TimDiekmann, what do you think? Is there a better solution? A flaw?
Beta Was this translation helpful? Give feedback.
All reactions