diff --git a/src/assail/analyzer.rs b/src/assail/analyzer.rs index 9bc610c..dbd7fea 100644 --- a/src/assail/analyzer.rs +++ b/src/assail/analyzer.rs @@ -6561,6 +6561,31 @@ mod tests { assert_eq!(Language::detect("page.jsx"), Language::JavaScript); } + #[test] + fn analyze_affinescript_extension_reaches_dsl_analyzer() { + let tmp = TempDir::new().unwrap(); + let affine_file = tmp.path().join("ffi_boundary.affine"); + fs::write( + &affine_file, + "external one\nexternal two\nexternal three\nexternal four\n", + ) + .unwrap(); + + assert_eq!( + Language::detect(affine_file.to_str().unwrap()), + Language::AffineScript + ); + + let report = Analyzer::new(&affine_file).unwrap().analyze().unwrap(); + assert!( + report + .weak_points + .iter() + .any(|point| point.category == WeakPointCategory::UnsafeFFI), + ".affine files must reach the AffineScript analyzer, not Unknown" + ); + } + // --------------------------------------------------------------- // 2. Analyzer::new() with a valid temp directory // --------------------------------------------------------------- diff --git a/src/assemblyline.rs b/src/assemblyline.rs index 7e223b7..2b831ef 100644 --- a/src/assemblyline.rs +++ b/src/assemblyline.rs @@ -292,6 +292,8 @@ fn is_source_file(path: &Path) -> bool { | "yaml" | "yml" | "json" + | "aff" + | "affine" ) } @@ -546,6 +548,7 @@ mod tests { assert!(is_source_file(Path::new("lib.py"))); assert!(is_source_file(Path::new("app.js"))); assert!(is_source_file(Path::new("mod.gleam"))); + assert!(is_source_file(Path::new("module.affine"))); assert!(!is_source_file(Path::new("image.png"))); assert!(!is_source_file(Path::new("binary.exe"))); assert!(!is_source_file(Path::new("readme.md"))); diff --git a/src/types.rs b/src/types.rs index c99068e..4bec109 100644 --- a/src/types.rs +++ b/src/types.rs @@ -170,7 +170,7 @@ impl Language { "jtv" => Language::JuliaTheViper, "obli" => Language::Oblibeny, "anvom" => Language::Anvomidav, - "aff" => Language::AffineScript, + "aff" | "affine" => Language::AffineScript, "ephapax" | "eph" => Language::Ephapax, "bet" => Language::BetLang, "err" => Language::ErrorLang, diff --git a/tests/types_tests.rs b/tests/types_tests.rs index 217605e..6561937 100644 --- a/tests/types_tests.rs +++ b/tests/types_tests.rs @@ -90,6 +90,7 @@ fn language_detect_nextgen_dsls() { assert_eq!(Language::detect("script.woke"), Language::WokeLang); assert_eq!(Language::detect("query.vcl"), Language::VCL); assert_eq!(Language::detect("types.aff"), Language::AffineScript); + assert_eq!(Language::detect("types.affine"), Language::AffineScript); } #[test]