Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
c0ffee9
feat: init
simon-something Feb 27, 2025
c0ffeea
chore: lexing/parsing
simon-something Feb 27, 2025
c0ffeef
chore: visiting contracts
simon-something Feb 28, 2025
c0ffeea
chore: wip
simon-something Mar 1, 2025
c0ffee4
chore: wip
simon-something Mar 1, 2025
c0ffee0
chore: wip
simon-something Mar 1, 2025
c0ffee0
chore: visitor not visiting anything
simon-something Mar 1, 2025
c0ffee1
chore: visitor visiting
simon-something Mar 1, 2025
c0ffee0
chore: quick refactor before its too late
simon-something Mar 3, 2025
c0ffee1
chore: quick refactor
simon-something Mar 3, 2025
c0ffee1
chore: mutation gen part1
simon-something Mar 3, 2025
c0ffeed
feat: mutation collection
simon-something Mar 4, 2025
c0ffeee
feat: visitor refactor
simon-something Mar 4, 2025
c0ffeeb
feat: visitor refactor
simon-something Mar 4, 2025
c0ffeef
feat: temp folder mgmt
simon-something Mar 5, 2025
c0ffeec
feat: temp file creation logic
simon-something Mar 6, 2025
c0ffee6
feat: compiling mutants
simon-something Mar 6, 2025
c0ffee2
chore: wip future multithread
simon-something Mar 9, 2025
c0ffeeb
feat: mutation set building
simon-something Mar 10, 2025
c0ffee1
feat: multithread compile
simon-something Mar 11, 2025
c0ffee8
chore: fmt
simon-something Mar 11, 2025
c0ffeeb
chore: fmt
simon-something Mar 11, 2025
c0ffeef
chore: fmt
simon-something Mar 11, 2025
c0ffeee
chore: fmt
simon-something Mar 11, 2025
c0ffeec
feat: refactor for test runner
simon-something Mar 12, 2025
c0ffee4
chore: test runner wip
simon-something Mar 12, 2025
c0ffee1
feat: working poc
simon-something Mar 12, 2025
c0ffee2
chore: doc
simon-something Mar 12, 2025
c0ffee5
chore: fmt
simon-something Mar 12, 2025
c0ffeec
chore: fmt
simon-something Mar 12, 2025
c0ffeed
chore: fmt
simon-something Mar 12, 2025
c0ffee2
feat: assign mut gen
simon-something Mar 12, 2025
c0ffeef
feat: unary mut
simon-something Mar 13, 2025
c0ffeea
feat: binary mut
simon-something Mar 13, 2025
c0ffee4
feat: members unary mut
simon-something Mar 13, 2025
c0ffee4
feat: members unary mut
simon-something Mar 13, 2025
c0ffee1
feat: rm delegatecall mut
simon-something Mar 13, 2025
c0ffeea
chore: refactor modular mut wip
simon-something Mar 13, 2025
c0ffee0
chore: refactor modular mut wip
simon-something Mar 13, 2025
c0ffee5
chore: refactor modular mut wip
simon-something Mar 14, 2025
c0ffeee
feat: mutator assign trait
simon-something Mar 17, 2025
c0ffee3
chore: fmt
simon-something Mar 17, 2025
c0ffee2
chore: fmt
simon-something Mar 17, 2025
c0ffee6
feat: bin mutator
simon-something Mar 18, 2025
c0ffee1
feat: other mutator mod
simon-something Mar 19, 2025
c0ffeea
feat: visitor refactor registry
simon-something Mar 20, 2025
0060f79
Merge branch 'master' into feat/mutation-tests-wonder
simon-something Mar 20, 2025
c0ffee8
chore: merge fix
simon-something Mar 20, 2025
39e5f62
Merge pull request #2 from defi-wonderland/feat/mutation-tests-wonder
simon-something Mar 20, 2025
1a90f9c
Merge branch 'master' into master
simon-something Mar 20, 2025
18fb058
chore: comment
simon-something Mar 20, 2025
c0ffee1
fix: solar visitor use
simon-something Mar 20, 2025
c0ffee8
chore: clippy and min refactors
simon-something Mar 21, 2025
c0ffeef
feat: assign mutator tests
simon-something Mar 21, 2025
c0ffeea
feat: test gen mut ident
simon-something Mar 21, 2025
5b67d3f
feat: test binop and delete expr
simon-something Mar 25, 2025
7690e44
feat: test delegate unaryop mut
simon-something Mar 25, 2025
8137d21
feat: test unaryop mut
simon-something Mar 25, 2025
15b8cec
feat: wip generic test
simon-something Mar 25, 2025
d12d1ca
refactor: add mutate-path and mutate-contract optional args, keep mut…
0xChin Mar 26, 2025
565ce30
feat: enable contract match filter in mutation tests
0xChin Mar 26, 2025
47aa3ca
Merge remote-tracking branch 'upstream/master'
simon-something Mar 28, 2025
b782603
feat: optional mutators
simon-something Mar 28, 2025
246d21e
feat: generic mutator test(length)
simon-something Mar 28, 2025
2e8dc62
Merge pull request #1 from simon-something/feat/mutation-tests-filters
simon-something Mar 28, 2025
bf7ae62
feat: generic mutator test(content)
simon-something Mar 28, 2025
775600f
fix: unary mut for bool
simon-something Mar 28, 2025
7e3a9c0
test: unary mut
simon-something Mar 28, 2025
be42620
test: all mutators
simon-something Mar 28, 2025
8d9dab2
test: add neg case
simon-something Mar 28, 2025
c0ffee0
chore: refactor visitor
simon-something Mar 30, 2025
c0ffee1
chore: clippy
simon-something Mar 30, 2025
c0ffeec
chore: typos
simon-something Mar 30, 2025
c0ffeec
feat: integ test (hacky)
simon-something Mar 31, 2025
c0ffee5
feat: basic reporting
simon-something Apr 9, 2025
5821d58
fix: copy only src
simon-something May 28, 2025
c0ffeec
fix: copy only src
simon-something May 28, 2025
b7ea26e
fix: rel path
simon-something May 28, 2025
c5387f6
fix: add walker in visitor
simon-something May 28, 2025
7b7bcfc
fix: assign mutator
simon-something May 28, 2025
bfeb71c
chore: dbg cleanup
simon-something May 28, 2025
c0ffee1
chore: merge upstream
simon-something Jul 21, 2025
c0ffeec
fix: dyn test linking
simon-something Jul 25, 2025
c9e9d06
fix: missing mutant fmt
simon-something Jul 25, 2025
c0ffeea
fix: path in mut ctxt
simon-something Jul 28, 2025
c0ffee9
feat: save and resume mutation tests
simon-something Aug 29, 2025
c0ffeea
chore: typo and doc
simon-something Aug 29, 2025
b4271c3
chore: remove cache file
emo-eth Oct 5, 2025
2dea042
Merge branch 'master' into simon-something/master
emo-eth Oct 5, 2025
9607840
merge master
emo-eth Oct 5, 2025
5e731f1
clippy
emo-eth Oct 5, 2025
752700a
update
emo-eth Oct 6, 2025
ab63df5
use serde instead of manual dto for json caching
emo-eth Oct 6, 2025
26fd5e5
fix cache filenames
emo-eth Oct 6, 2025
84479d2
initial pass at adaptive testing - skip surviving sibling or child spans
emo-eth Oct 6, 2025
17a232e
Merge branch 'master' into mutation-testing
emo-eth Oct 6, 2025
2ee3570
clippy && fmt
emo-eth Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions crates/config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,8 @@ pub struct Config {
pub coverage_pattern_inverse: Option<RegexWrapper>,
/// Path where last test run failures are recorded.
pub test_failures_file: PathBuf,
/// Pathe where mutation tests are cached, to resume running them
pub mutation_dir: PathBuf,
/// Max concurrent threads to use.
pub threads: Option<usize>,
/// Whether to show test execution progress.
Expand Down Expand Up @@ -1209,6 +1211,9 @@ impl Config {
// Remove last test run failures file.
let _ = fs::remove_file(&self.test_failures_file);

// Remove mutation test cache directory
let _ = fs::remove_dir_all(project.root().join(&self.mutation_dir));

// Remove fuzz and invariant cache directories.
let remove_test_dir = |test_dir: &Option<PathBuf>| {
if let Some(test_dir) = test_dir {
Expand Down Expand Up @@ -2494,6 +2499,7 @@ impl Default for Config {
path_pattern_inverse: None,
coverage_pattern_inverse: None,
test_failures_file: "cache/test-failures".into(),
mutation_dir: "cache/mutation".into(),
threads: None,
show_progress: false,
fuzz: FuzzConfig::new("cache/fuzz".into()),
Expand Down
11 changes: 9 additions & 2 deletions crates/forge/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,23 @@ alloy-serde.workspace = true
alloy-signer.workspace = true
alloy-transport.workspace = true

revm.workspace = true

clap = { version = "4", features = ["derive", "env", "unicode", "wrap_help"] }
clap_complete.workspace = true
dunce.workspace = true
indicatif.workspace = true
inferno = { version = "0.12", default-features = false }
itertools.workspace = true
parking_lot.workspace = true
rand.workspace = true
regex = { workspace = true, default-features = false }
reqwest = { workspace = true, features = ["json"] }
revm.workspace = true
semver.workspace = true
serde_json.workspace = true
similar = { version = "2", features = ["inline"] }
solar.workspace = true
strum = { workspace = true, features = ["derive"] }
tempfile.workspace = true
thiserror.workspace = true
tokio = { workspace = true, features = ["time"] }
toml_edit.workspace = true
Expand All @@ -85,6 +87,7 @@ watchexec-events = "6.0"
watchexec-signals = "5.0"
clearscreen = "4.0"
evm-disassembler.workspace = true
num-bigint = "0.4"
path-slash.workspace = true

# doc server
Expand All @@ -95,6 +98,8 @@ opener = "0.8"
# soldeer
soldeer-commands.workspace = true
quick-junit = "0.5.1"
solar-parse = "0.1.8"
solar-interface = "0.1.8"

[dev-dependencies]
alloy-hardforks.workspace = true
Expand All @@ -108,6 +113,8 @@ reqwest = { workspace = true, features = ["json"] }
mockall = "0.13"
globset = "0.4"
paste = "1.0"

rstest = "0.25.0"
similar-asserts.workspace = true
svm.workspace = true
tempfile.workspace = true
Expand Down
Loading
Loading