mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add tests for Perl and Turning detection
This commit is contained in:
		| @@ -470,12 +470,20 @@ module Linguist | ||||
|  | ||||
|     # Internal: Guess language of .t files. | ||||
|     # | ||||
|     # Makes fairly sure that it is Turing. | ||||
|     # Turing is not very popular so it would not be good to have perl users' files being confused. | ||||
|     # | ||||
|     # Returns a Language. | ||||
|     def guess_t_language | ||||
|       if lines.grep(/:=/).any? && lines.grep(/proc |procedure |fcn |function /).any? && lines.grep(/var/).any? | ||||
|       score = 0 | ||||
|       score += 1 if lines.grep(/^% /).any? | ||||
|       score += data.gsub(/ := /).count | ||||
|       score += data.gsub(/proc |procedure |fcn |function /).count | ||||
|       score += data.gsub(/var \w+: \w+/).count | ||||
|  | ||||
|       # Tell-tale signs its gotta be Perl | ||||
|       if lines.grep(/^(my )?(sub |\$|@|%)\w+/).any? | ||||
|         score = 0 | ||||
|       end | ||||
|  | ||||
|       if score >= 3 | ||||
|         Language['Turing'] | ||||
|       else | ||||
|         Language['Perl'] | ||||
|   | ||||
							
								
								
									
										10
									
								
								test/fixtures/perl-test.t
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/fixtures/perl-test.t
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| use strict; | ||||
| use warnings; | ||||
|  | ||||
| use Foo::Bar | ||||
|  | ||||
| $n = 42; | ||||
| $name = "world"; | ||||
| @array = ("1","2","3"); | ||||
| %hash = ("foo":"bar"); | ||||
| my $name = "josh"; | ||||
							
								
								
									
										19
									
								
								test/fixtures/turing.t
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								test/fixtures/turing.t
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| % Accepts a number and calculates its factorial | ||||
|  | ||||
| function factorial (n: int) : real | ||||
|     if n = 0 then | ||||
|         result 1 | ||||
|     else | ||||
|         result n * factorial (n - 1) | ||||
|    end if | ||||
| end factorial | ||||
|  | ||||
| var n: int | ||||
| loop | ||||
|     put "Please input an integer: " .. | ||||
|     get n | ||||
|     exit when n >= 0 | ||||
|     put "Input must be a non-negative integer." | ||||
| end loop | ||||
|  | ||||
| put "The factorial of ", n, " is ", factorial (n) | ||||
| @@ -281,6 +281,10 @@ class TestBlob < Test::Unit::TestCase | ||||
|     assert_equal Language['R'],           blob("hello-r.R").language | ||||
|     assert_equal Language['Rebol'],       blob("hello-rebol.r").language | ||||
|  | ||||
|     # .t disambiguation | ||||
|     assert_equal Language['Perl'],        blob("perl-test.t").language | ||||
|     assert_equal Language['Turing'],      blob("turing.t").language | ||||
|  | ||||
|     # ML | ||||
|     assert_equal Language['OCaml'],       blob("Foo.ml").language | ||||
|     assert_equal Language['Standard ML'], blob("Foo.sig").language | ||||
|   | ||||
| @@ -20,6 +20,9 @@ class TestLanguage < Test::Unit::TestCase | ||||
|  | ||||
|     assert Language.ambiguous?('.r') | ||||
|     assert_equal Language['R'], Language.find_by_extension('r') | ||||
|  | ||||
|     assert Language.ambiguous?('.t') | ||||
|     assert_equal Language['Perl'], Language.find_by_extension('t') | ||||
|   end | ||||
|  | ||||
|   def test_lexer | ||||
|   | ||||
		Reference in New Issue
	
	Block a user