@@ -16,12 +16,12 @@ jobs:
1616 - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
1717 with :
1818 persist-credentials : false
19- - uses : dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
19+ - uses : dtolnay/rust-toolchain@0f1b44df7e9cbb178d781a242338dfa5e243ad7f # nightly
2020 - uses : taiki-e/install-action@328a871ad8f62ecac78390391f463ccabc974b72 # v2
2121 with :
2222 tool : cargo-mutants
2323 - uses : Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
24- - run : cargo mutants --timeout 60 -- --all-features
24+ - run : cargo +nightly mutants --timeout 60 -- --all-features
2525 continue-on-error : true
2626 - name : Upload mutants report
2727 uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
@@ -56,14 +56,14 @@ jobs:
5656 - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
5757 with :
5858 persist-credentials : false
59- - uses : dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
59+ - uses : dtolnay/rust-toolchain@0f1b44df7e9cbb178d781a242338dfa5e243ad7f # nightly
6060 with :
6161 components : llvm-tools-preview
6262 - uses : taiki-e/install-action@328a871ad8f62ecac78390391f463ccabc974b72 # v2
6363 with :
6464 tool : cargo-llvm-cov
6565 - uses : Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
66- - run : cargo llvm-cov --all-features --branch --html
66+ - run : cargo +nightly llvm-cov --all-features --branch --html
6767 - name : Upload coverage report
6868 uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
6969 with :
@@ -80,11 +80,86 @@ jobs:
8080 - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
8181 with :
8282 persist-credentials : false
83- - uses : dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
83+ - uses : dtolnay/rust-toolchain@0f1b44df7e9cbb178d781a242338dfa5e243ad7f # nightly
8484 - uses : Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
8585 - name : Test with default features
86- run : cargo test --all-features
86+ run : cargo +nightly test --all-features
8787 - name : Test with no default features
88- run : cargo test -p mantis-core -p mantis-types -p mantis-queue --no-default-features
88+ run : cargo +nightly test -p mantis-core -p mantis-types -p mantis-queue --no-default-features
89+ - name : Install cargo-show-asm
90+ uses : taiki-e/install-action@328a871ad8f62ecac78390391f463ccabc974b72 # v2
91+ with :
92+ tool : cargo-show-asm
93+ - name : Run ASM inspection
94+ run : ./scripts/check-asm.sh
95+ - name : Upload ASM artifacts
96+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
97+ with :
98+ name : asm-output-${{ matrix.os }}
99+ path : target/asm/
100+ retention-days : 30
101+
102+ kani :
103+ name : Kani Proofs
104+ runs-on : ubuntu-latest
105+ steps :
106+ - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
107+ with :
108+ persist-credentials : false
109+ - name : Install Kani
110+ run : |
111+ cargo install --locked kani-verifier
112+ cargo kani setup
113+ - name : Run proofs
114+ run : cargo kani -p mantis-verify 2>&1 | tee kani-output.txt
115+ - name : Kani Summary
116+ if : always()
117+ run : |
118+ echo "## Kani Proof Results" >> "$GITHUB_STEP_SUMMARY"
119+ grep -E "(VERIFIED|FAILED|harness)" kani-output.txt >> "$GITHUB_STEP_SUMMARY" || true
120+ - name : Upload proof output
121+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
122+ if : always()
123+ with :
124+ name : kani-proofs
125+ path : kani-output.txt
89126
90- # TODO: Add fuzz, bench-matrix, fuzz-coverage jobs when SPSC ring exists.
127+ fuzz :
128+ name : Fuzz Testing
129+ runs-on : ubuntu-latest
130+ steps :
131+ - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
132+ with :
133+ persist-credentials : false
134+ - uses : dtolnay/rust-toolchain@0f1b44df7e9cbb178d781a242338dfa5e243ad7f # nightly
135+ - uses : Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
136+ - name : Install cargo-fuzz
137+ uses : taiki-e/install-action@328a871ad8f62ecac78390391f463ccabc974b72 # v2
138+ with :
139+ tool : cargo-fuzz
140+ - name : Run fuzz targets
141+ run : |
142+ for target in $(cargo +nightly fuzz list 2>/dev/null || true); do
143+ echo "Fuzzing: $target (10 min)"
144+ cargo +nightly fuzz run "$target" -- -max_total_time=600 || true
145+ done
146+ continue-on-error : true
147+ - name : Upload corpus
148+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
149+ if : always()
150+ with :
151+ name : fuzz-corpus
152+ path : fuzz/corpus/
153+ retention-days : 90
154+ - name : Upload crashes
155+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
156+ if : failure()
157+ with :
158+ name : fuzz-crashes
159+ path : fuzz/artifacts/
160+ - name : Fuzz Summary
161+ if : always()
162+ run : |
163+ echo "## Fuzz Results" >> "$GITHUB_STEP_SUMMARY"
164+ echo "Duration: 10 minutes per target" >> "$GITHUB_STEP_SUMMARY"
165+ echo "Corpus size: $(find fuzz/corpus -type f 2>/dev/null | wc -l) inputs" >> "$GITHUB_STEP_SUMMARY"
0 commit comments