diff options
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/language.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/util/language.rs b/src/util/language.rs index fae7bf9..8819a1e 100644 --- a/src/util/language.rs +++ b/src/util/language.rs @@ -21,7 +21,9 @@ fn detect_from_extension(filename: &Path) -> Option<&'static str> { } fn detect_from_shebang(contents: &str) -> Option<&'static str> { - if let Some(first_line) = contents.lines().next() { + if let Some(first_line) = contents.lines().next() + && first_line.starts_with("#!") + { if first_line.contains("python") { return Some("python"); } @@ -31,3 +33,22 @@ fn detect_from_shebang(contents: &str) -> Option<&'static str> { } None } + +#[cfg(test)] +mod tests { + use std::path::Path; + + use super::detect_language; + + #[test] + fn non_shebang_line_does_not_trigger_detection() { + let contents = "this mentions bash but is not a shebang"; + assert_eq!(detect_language(Path::new("file"), contents), ""); + } + + #[test] + fn detects_python_from_shebang() { + let contents = "#!/usr/bin/python3\nprint('hi')"; + assert_eq!(detect_language(Path::new("file"), contents), "python"); + } +} |
