Simplify FeatureFlags implementation, and fix epic = none/any for work items
What does this MR do and why?
Looking to address GLQL: how to find issues with missing epics (gitlab#583341 - closed), I started reading the code. There's a fair bit of unidiomatic/unnecessarily complex Rust in here, and I figure that, as I work on GLQL, I'll look to tidy it up.
This MR has three seven (lol) commits:
- Rework
FeatureFlagsto remove the oddHashMapand "manual defaulting", as well as remove the gap betweenFeatureFlagsandFeatureFlag. The current implementation relies oncrate::compilemanually callingseton eachFeatureFlagthat corresponds to a givenFeatureFlagsfield. The new one removes most of the code inutils::feature_flagswhile improving its usability and performance. - Add failing "work items FF on" sections to the tests that need it.
- Fix the tests by adding
Nullableto the type for the mapping forField::Epicon issues when the work items FF is enabled. 📎 - Remove some aliases that make it harder to know which function is what, and an iter clone we didn't need
- Fix the epic tests(' generated GraphQL) by scoping the work items queries to a project
- Add
test:graphqlnpm script to make this closer to hand
How to set up and validate locally
cargo nextest run
Edited by Asherah Connor