summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/language.rs23
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");
+ }
+}