Read config from more standard locations - #646
Open
theaddonn wants to merge 1 commit into
Open
Conversation
As well as `.cargo/mutants.toml`, the config can now be read from `mutants.toml`, `.mutants.toml` or `.config/mutants.toml` in the root of the tree, or from a `[workspace.metadata.mutants]` or `[package.metadata.mutants]` table in the root `Cargo.toml`. Only the first location that exists is read; configs are never merged. Fixes sourcefrog#645
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements #645.
read_tree_configcurrently only looks at.cargo/mutants.toml. This adds four more locations, searched in this order, first match wins:.cargo/mutants.tomlmutants.toml.mutants.toml.config/mutants.toml[workspace.metadata.mutants]in the rootCargo.toml[package.metadata.mutants]in the rootCargo.toml.cargo/mutants.tomlstays first, so nothing changes for existing trees. Configs are never merged across locations, matching the current single-file behaviour.--configand--no-configare unchanged.The metadata tables deserialize into the same
Configstruct, sodeny_unknown_fieldsstill applies and a typo in[workspace.metadata.mutants]is still an error. No new dependencies: this uses thetomlcrate already in the tree.Tests in
tests/main.rscover each location and every precedence step, plus an invalid key in the metadata table and--no-config. Docs are updated inbook/src/config-file.mdand there's aNEWS.mdentry.cargo fmt --check,cargo clippy --all-targets --all-features -- -D warnings, andcargo test --all-featuresare all clean locally.A couple of things worth a second look:
read_tree_confignow testsis_file()rather thanexists(), so a directory namedmutants.tomlfalls through to the next candidate instead of erroring.src/options.rs; happy to drop that if it's out of scope.Written with AI assistance (Claude Code), following AGENTS.md. I've reviewed and tested it.