Merge pull request #2153 from github/enforce-type

Test that languages have a type
This commit is contained in:
Garen Torikian
2015-02-24 13:34:22 -08:00
6 changed files with 88 additions and 4 deletions

View File

@@ -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

View File

@@ -0,0 +1,13 @@
# Calculate and output all fibonacci numbers under 100
+++++++++++
>+>>>>++++++++++++++++++++++++++++++++++++++++++++
>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>
+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-
<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++
+++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++
++++++++++++++++++++++++++++++++++++++++++++.[-]<<
<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]

View File

@@ -0,0 +1,4 @@
// More complex version of hello world
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>
>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.

View File

@@ -0,0 +1,3 @@
// Hello World
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

View 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

View File

@@ -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)