Skip to content

Commit 8691845

Browse files
committed
Ruby: Re-add test
This got lost in an earlier refactor.
1 parent 2ef6d5c commit 8691845

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

ruby/extractor/src/extractor.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,3 +368,67 @@ fn scan_coding_comment(content: &[u8]) -> std::option::Option<Cow<str>> {
368368
}
369369
None
370370
}
371+
372+
#[test]
373+
fn test_scan_coding_comment() {
374+
let text = "# encoding: utf-8";
375+
let result = scan_coding_comment(text.as_bytes());
376+
assert_eq!(result, Some("utf-8".into()));
377+
378+
let text = "#coding:utf-8";
379+
let result = scan_coding_comment(&text.as_bytes());
380+
assert_eq!(result, Some("utf-8".into()));
381+
382+
let text = "# foo\n# encoding: utf-8";
383+
let result = scan_coding_comment(&text.as_bytes());
384+
assert_eq!(result, None);
385+
386+
let text = "# encoding: latin1 encoding: utf-8";
387+
let result = scan_coding_comment(&text.as_bytes());
388+
assert_eq!(result, Some("latin1".into()));
389+
390+
let text = "# encoding: nonsense";
391+
let result = scan_coding_comment(&text.as_bytes());
392+
assert_eq!(result, Some("nonsense".into()));
393+
394+
let text = "# coding = utf-8";
395+
let result = scan_coding_comment(&text.as_bytes());
396+
assert_eq!(result, Some("utf-8".into()));
397+
398+
let text = "# CODING = utf-8";
399+
let result = scan_coding_comment(&text.as_bytes());
400+
assert_eq!(result, Some("utf-8".into()));
401+
402+
let text = "# CoDiNg = utf-8";
403+
let result = scan_coding_comment(&text.as_bytes());
404+
assert_eq!(result, Some("utf-8".into()));
405+
406+
let text = "# blah blahblahcoding = utf-8";
407+
let result = scan_coding_comment(&text.as_bytes());
408+
assert_eq!(result, Some("utf-8".into()));
409+
410+
// unicode BOM is ignored
411+
let text = "\u{FEFF}# encoding: utf-8";
412+
let result = scan_coding_comment(&text.as_bytes());
413+
assert_eq!(result, Some("utf-8".into()));
414+
415+
let text = "\u{FEFF} # encoding: utf-8";
416+
let result = scan_coding_comment(&text.as_bytes());
417+
assert_eq!(result, Some("utf-8".into()));
418+
419+
let text = "#! /usr/bin/env ruby\n # encoding: utf-8";
420+
let result = scan_coding_comment(&text.as_bytes());
421+
assert_eq!(result, Some("utf-8".into()));
422+
423+
let text = "\u{FEFF}#! /usr/bin/env ruby\n # encoding: utf-8";
424+
let result = scan_coding_comment(&text.as_bytes());
425+
assert_eq!(result, Some("utf-8".into()));
426+
427+
// A #! must be the first thing on a line, otherwise it's a normal comment
428+
let text = " #! /usr/bin/env ruby encoding = utf-8";
429+
let result = scan_coding_comment(&text.as_bytes());
430+
assert_eq!(result, Some("utf-8".into()));
431+
let text = " #! /usr/bin/env ruby \n # encoding = utf-8";
432+
let result = scan_coding_comment(&text.as_bytes());
433+
assert_eq!(result, None);
434+
}

0 commit comments

Comments
 (0)