Skip to content

Commit 40a823f

Browse files
Test Souffle versions of Polonius analyses
1 parent 0e30e43 commit 40a823f

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/test.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ use std::path::Path;
1717
fn test_facts(all_facts: &AllFacts, algorithms: &[Algorithm]) {
1818
let naive = Output::compute(all_facts, Algorithm::Naive(Engine::Datafrog), true);
1919

20+
#[cfg(feature = "polonius-souffle")]
21+
{
22+
let souffle_naive = Output::compute(all_facts, Algorithm::Naive(Engine::Souffle), false);
23+
assert_equal(&naive.errors, &souffle_naive.errors);
24+
assert_equal(&naive.subset_errors, &souffle_naive.subset_errors);
25+
}
26+
2027
// Check that the "naive errors" are a subset of the "insensitive
2128
// ones".
2229
let insensitive = Output::compute(all_facts, Algorithm::LocationInsensitive, false);
@@ -82,6 +89,17 @@ fn test_facts(all_facts: &AllFacts, algorithms: &[Algorithm]) {
8289
assert_equal(&naive.errors, &opt.errors);
8390
assert_equal(&naive.subset_errors, &opt.subset_errors);
8491
assert_equal(&naive.move_errors, &opt.move_errors);
92+
93+
#[cfg(feature = "polonius-souffle")]
94+
if matches!(
95+
optimized_algorithm,
96+
Algorithm::DatafrogOpt(Engine::Datafrog)
97+
) {
98+
let souffle_opt =
99+
Output::compute(all_facts, Algorithm::DatafrogOpt(Engine::Souffle), false);
100+
assert_equal(&opt.errors, &souffle_opt.errors);
101+
assert_equal(&opt.subset_errors, &souffle_opt.subset_errors);
102+
}
85103
}
86104

87105
// The hybrid algorithm gets the same errors as the naive version

0 commit comments

Comments
 (0)