mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Merge pull request #2153 from github/enforce-type
Test that languages have a type
This commit is contained in:
		| @@ -271,6 +271,7 @@ Batchfile: | ||||
|   ace_mode: batchfile | ||||
|  | ||||
| Befunge: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .befunge | ||||
|   ace_mode: text | ||||
| @@ -326,6 +327,7 @@ Boo: | ||||
|   ace_mode: text | ||||
|  | ||||
| Brainfuck: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .b | ||||
|   - .bf | ||||
| @@ -421,6 +423,7 @@ CLIPS: | ||||
|   ace_mode: text | ||||
|  | ||||
| CMake: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .cmake | ||||
|   - .cmake.in | ||||
| @@ -480,6 +483,7 @@ Chapel: | ||||
|   ace_mode: text | ||||
|  | ||||
| ChucK: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .ck | ||||
|   tm_scope: source.java | ||||
| @@ -641,6 +645,7 @@ Crystal: | ||||
|   - crystal | ||||
|  | ||||
| Cucumber: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .feature | ||||
|   tm_scope: text.gherkin.feature | ||||
| @@ -700,6 +705,7 @@ DM: | ||||
|   ace_mode: c_cpp | ||||
|  | ||||
| Darcs Patch: | ||||
|   type: programming | ||||
|   search_term: dpatch | ||||
|   aliases: | ||||
|   - dpatch | ||||
| @@ -717,6 +723,7 @@ Dart: | ||||
|   ace_mode: dart | ||||
|  | ||||
| Diff: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .diff | ||||
|   - .patch | ||||
| @@ -1014,6 +1021,7 @@ Game Maker Language: | ||||
|   ace_mode: c_cpp | ||||
|  | ||||
| Genshi: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .kid | ||||
|   tm_scope: text.xml.genshi | ||||
| @@ -1023,6 +1031,7 @@ Genshi: | ||||
|   ace_mode: xml | ||||
|  | ||||
| Gentoo Ebuild: | ||||
|   type: programming | ||||
|   group: Shell | ||||
|   extensions: | ||||
|   - .ebuild | ||||
| @@ -1030,6 +1039,7 @@ Gentoo Ebuild: | ||||
|   ace_mode: sh | ||||
|  | ||||
| Gentoo Eclass: | ||||
|   type: programming | ||||
|   group: Shell | ||||
|   extensions: | ||||
|   - .eclass | ||||
| @@ -1037,6 +1047,7 @@ Gentoo Eclass: | ||||
|   ace_mode: sh | ||||
|  | ||||
| Gettext Catalog: | ||||
|   type: programming | ||||
|   search_term: pot | ||||
|   searchable: false | ||||
|   aliases: | ||||
| @@ -1137,6 +1148,7 @@ Graphviz (DOT): | ||||
|   ace_mode: text | ||||
|  | ||||
| Groff: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .man | ||||
|   - '.1' | ||||
| @@ -1164,6 +1176,7 @@ Groovy: | ||||
|   - groovy | ||||
|  | ||||
| Groovy Server Pages: | ||||
|   type: programming | ||||
|   group: Groovy | ||||
|   aliases: | ||||
|   - gsp | ||||
| @@ -1320,6 +1333,7 @@ INI: | ||||
|   ace_mode: ini | ||||
|  | ||||
| IRC log: | ||||
|   type: data | ||||
|   search_term: irc | ||||
|   aliases: | ||||
|   - irc | ||||
| @@ -1350,6 +1364,7 @@ Inform 7: | ||||
|   ace_mode: text | ||||
|  | ||||
| Inno Setup: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .iss | ||||
|   tm_scope: source.inno | ||||
| @@ -1445,6 +1460,7 @@ Java: | ||||
|   - .java | ||||
|  | ||||
| Java Server Pages: | ||||
|   type: programming | ||||
|   group: Java | ||||
|   search_term: jsp | ||||
|   aliases: | ||||
| @@ -1540,6 +1556,7 @@ LFE: | ||||
|   ace_mode: lisp | ||||
|  | ||||
| LLVM: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .ll | ||||
|   ace_mode: text | ||||
| @@ -1607,6 +1624,7 @@ Less: | ||||
|   ace_mode: less | ||||
|  | ||||
| LilyPond: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .ly | ||||
|   - .ily | ||||
| @@ -1745,6 +1763,7 @@ Makefile: | ||||
|   ace_mode: makefile | ||||
|  | ||||
| Mako: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .mako | ||||
|   - .mao | ||||
| @@ -1837,6 +1856,7 @@ Mercury: | ||||
|   ace_mode: prolog | ||||
|  | ||||
| MiniD: # Legacy | ||||
|   type: programming | ||||
|   searchable: false | ||||
|   extensions: | ||||
|   - .minid # Dummy extension | ||||
| @@ -1884,12 +1904,14 @@ MoonScript: | ||||
|   ace_mode: text | ||||
|  | ||||
| Myghty: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .myt | ||||
|   tm_scope: none | ||||
|   ace_mode: text | ||||
|  | ||||
| NSIS: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .nsi | ||||
|   - .nsh | ||||
| @@ -1981,6 +2003,7 @@ Nu: | ||||
|   - nush | ||||
|  | ||||
| NumPy: | ||||
|   type: programming | ||||
|   group: Python | ||||
|   extensions: | ||||
|   - .numpy | ||||
| @@ -2440,6 +2463,7 @@ QML: | ||||
|   ace_mode: text | ||||
|  | ||||
| QMake: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .pro | ||||
|   - .pri | ||||
| @@ -2536,6 +2560,7 @@ Ragel in Ruby Host: | ||||
|   ace_mode: text | ||||
|  | ||||
| Raw token data: | ||||
|   type: data | ||||
|   search_term: raw | ||||
|   aliases: | ||||
|   - raw | ||||
| @@ -2567,6 +2592,7 @@ Red: | ||||
|   ace_mode: text | ||||
|  | ||||
| Redcode: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .cw | ||||
|   tm_scope: none | ||||
| @@ -2853,6 +2879,7 @@ Smalltalk: | ||||
|   ace_mode: text | ||||
|  | ||||
| Smarty: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .tpl | ||||
|   ace_mode: smarty | ||||
| @@ -3276,6 +3303,7 @@ XQuery: | ||||
|   ace_mode: xquery | ||||
|  | ||||
| XS: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .xs | ||||
|   tm_scope: source.c | ||||
| @@ -3372,6 +3400,7 @@ fish: | ||||
|   ace_mode: text | ||||
|  | ||||
| mupad: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   - .mu | ||||
|   ace_mode: text | ||||
|   | ||||
							
								
								
									
										13
									
								
								samples/Brainfuck/fib100.bf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								samples/Brainfuck/fib100.bf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| # Calculate and output all fibonacci numbers under 100 | ||||
|  | ||||
| +++++++++++ | ||||
| >+>>>>++++++++++++++++++++++++++++++++++++++++++++ | ||||
| >++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+> | ||||
| +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[- | ||||
| <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<< | ||||
| -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]] | ||||
| >[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++ | ||||
| +++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++ | ||||
| ++++++++++++++++++++++++++++++++++++++++++++.[-]<< | ||||
| <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<< | ||||
| [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-] | ||||
							
								
								
									
										4
									
								
								samples/Brainfuck/hello.bf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								samples/Brainfuck/hello.bf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| // More complex version of hello world | ||||
|  | ||||
| >++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.> | ||||
| >+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++. | ||||
							
								
								
									
										3
									
								
								samples/Brainfuck/helloworld.bf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								samples/Brainfuck/helloworld.bf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| // Hello World | ||||
|  | ||||
| ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. | ||||
							
								
								
									
										30
									
								
								samples/Brainfuck/rot13.bf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								samples/Brainfuck/rot13.bf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| # ROT13 cipher | ||||
|  | ||||
| -,+[                         Read first character and start outer character reading loop | ||||
|     -[                       Skip forward if character is 0 | ||||
|         >>++++[>++++++++<-]  Set up divisor (32) for division loop | ||||
|                                (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero) | ||||
|         <+<-[                Set up dividend (x minus 1) and enter division loop | ||||
|             >+>+>-[>>>]      Increase copy and remainder / reduce divisor / Normal case: skip forward | ||||
|             <[[>+<-]>>+>]    Special case: move remainder back to divisor and increase quotient | ||||
|             <<<<<-           Decrement dividend | ||||
|         ]                    End division loop | ||||
|     ]>>>[-]+                 End skip loop; zero former divisor and reuse space for a flag | ||||
|     >--[-[<->+++[-]]]<[         Zero that flag unless quotient was 2 or 3; zero quotient; check flag | ||||
|         ++++++++++++<[       If flag then set up divisor (13) for second division loop | ||||
|                                (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero) | ||||
|             >-[>+>>]         Reduce divisor; Normal case: increase remainder | ||||
|             >[+[<+>-]>+>>]   Special case: increase remainder / move it back to divisor / increase quotient | ||||
|             <<<<<-           Decrease dividend | ||||
|         ]                    End division loop | ||||
|         >>[<+>-]             Add remainder back to divisor to get a useful 13 | ||||
|         >[                   Skip forward if quotient was 0 | ||||
|             -[               Decrement quotient and skip forward if quotient was 1 | ||||
|                 -<<[-]>>     Zero quotient and divisor if quotient was 2 | ||||
|             ]<<[<<->>-]>>    Zero divisor and subtract 13 from copy if quotient was 1 | ||||
|         ]<<[<<+>>-]          Zero divisor and add 13 to copy if quotient was 0 | ||||
|     ]                        End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3) | ||||
|     <[-]                     Clear remainder from first division if second division was skipped | ||||
|     <.[-]                    Output ROT13ed character from copy and clear it | ||||
|     <-,+                     Read next character | ||||
| ]                            End character reading loop | ||||
| @@ -155,10 +155,6 @@ class TestLanguage < Minitest::Test | ||||
|     assert_equal :prose, Language['Org'].type | ||||
|   end | ||||
|  | ||||
|   def test_other | ||||
|     assert_nil Language['Brainfuck'].type | ||||
|   end | ||||
|  | ||||
|   def test_searchable | ||||
|     assert Language['Ruby'].searchable? | ||||
|     assert !Language['Gettext Catalog'].searchable? | ||||
| @@ -358,6 +354,15 @@ class TestLanguage < Minitest::Test | ||||
|     assert missing.empty?, message | ||||
|   end | ||||
|  | ||||
|   def test_all_languages_have_type | ||||
|     missing = Language.all.select { |language| language.type.nil? } | ||||
|     message = "The following languages do not have a type listed in grammars.yml. Please add types for all new languages.\n" | ||||
|  | ||||
|     width = missing.map { |language| language.name.length }.max | ||||
|     message << missing.map { |language| sprintf("%-#{width}s", language.name) }.sort.join("\n") | ||||
|     assert missing.empty?, message | ||||
|   end | ||||
|  | ||||
|   def test_all_languages_have_a_valid_ace_mode | ||||
|     ace_fixture_path = File.join('test', 'fixtures', 'ace_modes.json') | ||||
|     skip("No ace_modes.json file") unless File.exist?(ace_fixture_path) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user