mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Test that all languages have grammars
This will make CI fail if someone adds a new language but neglects to add a new grammar for it. This should make it easier for people to review PRs, as CI will help them to make sure a new grammar gets added. However, we currently support some languages that have no grammars, and we may support more in the future. So you can explicitly mark the language as having no grammar by setting `tm_scope: NONE` in languages.yml.
This commit is contained in:
@@ -45,6 +45,7 @@ APL:
|
||||
extensions:
|
||||
- .apl
|
||||
- .dyalog
|
||||
tm_scope: NONE
|
||||
|
||||
ASP:
|
||||
type: programming
|
||||
@@ -146,6 +147,7 @@ Arc:
|
||||
color: "#ca2afe"
|
||||
extensions:
|
||||
- .arc
|
||||
tm_scope: NONE
|
||||
|
||||
Arduino:
|
||||
type: programming
|
||||
@@ -162,12 +164,14 @@ AsciiDoc:
|
||||
- .asciidoc
|
||||
- .adoc
|
||||
- .asc
|
||||
tm_scope: NONE
|
||||
|
||||
AspectJ:
|
||||
type: programming
|
||||
color: "#1957b0"
|
||||
extensions:
|
||||
- .aj
|
||||
tm_scope: NONE
|
||||
|
||||
Assembly:
|
||||
type: programming
|
||||
@@ -185,6 +189,7 @@ Augeas:
|
||||
type: programming
|
||||
extensions:
|
||||
- .aug
|
||||
tm_scope: NONE
|
||||
|
||||
AutoHotkey:
|
||||
type: programming
|
||||
@@ -194,6 +199,7 @@ AutoHotkey:
|
||||
extensions:
|
||||
- .ahk
|
||||
- .ahkl
|
||||
tm_scope: NONE
|
||||
|
||||
AutoIt:
|
||||
type: programming
|
||||
@@ -286,6 +292,7 @@ Brightscript:
|
||||
type: programming
|
||||
extensions:
|
||||
- .brs
|
||||
tm_scope: NONE
|
||||
|
||||
Bro:
|
||||
type: programming
|
||||
@@ -359,6 +366,7 @@ CLIPS:
|
||||
type: programming
|
||||
extensions:
|
||||
- .clp
|
||||
tm_scope: NONE
|
||||
|
||||
CMake:
|
||||
extensions:
|
||||
@@ -421,6 +429,7 @@ Clean:
|
||||
extensions:
|
||||
- .icl
|
||||
- .dcl
|
||||
tm_scope: NONE
|
||||
|
||||
Clojure:
|
||||
type: programming
|
||||
@@ -537,6 +546,7 @@ Creole:
|
||||
wrap: true
|
||||
extensions:
|
||||
- .creole
|
||||
tm_scope: NONE
|
||||
|
||||
Crystal:
|
||||
type: programming
|
||||
@@ -604,6 +614,7 @@ Darcs Patch:
|
||||
extensions:
|
||||
- .darcspatch
|
||||
- .dpatch
|
||||
tm_scope: NONE
|
||||
|
||||
Dart:
|
||||
type: programming
|
||||
@@ -631,6 +642,7 @@ Dogescript:
|
||||
color: "#cca760"
|
||||
extensions:
|
||||
- .djs
|
||||
tm_scope: NONE
|
||||
|
||||
Dylan:
|
||||
type: programming
|
||||
@@ -646,6 +658,7 @@ E:
|
||||
color: "#ccce35"
|
||||
extensions:
|
||||
- .E
|
||||
tm_scope: NONE
|
||||
|
||||
ECL:
|
||||
type: programming
|
||||
@@ -653,6 +666,7 @@ ECL:
|
||||
extensions:
|
||||
- .ecl
|
||||
- .eclxml
|
||||
tm_scope: NONE
|
||||
|
||||
Eagle:
|
||||
type: markup
|
||||
@@ -736,6 +750,7 @@ FLUX:
|
||||
extensions:
|
||||
- .fx
|
||||
- .flux
|
||||
tm_scope: NONE
|
||||
|
||||
FORTRAN:
|
||||
type: programming
|
||||
@@ -809,11 +824,13 @@ G-code:
|
||||
- .g
|
||||
- .gco
|
||||
- .gcode
|
||||
tm_scope: NONE
|
||||
|
||||
GAMS:
|
||||
type: programming
|
||||
extensions:
|
||||
- .gms
|
||||
tm_scope: NONE
|
||||
|
||||
GAP:
|
||||
type: programming
|
||||
@@ -822,6 +839,7 @@ GAP:
|
||||
- .gap
|
||||
- .gd
|
||||
- .gi
|
||||
tm_scope: NONE
|
||||
|
||||
GAS:
|
||||
type: programming
|
||||
@@ -835,6 +853,7 @@ GDScript:
|
||||
type: programming
|
||||
extensions:
|
||||
- .gd
|
||||
tm_scope: NONE
|
||||
|
||||
GLSL:
|
||||
group: C
|
||||
@@ -919,6 +938,7 @@ Golo:
|
||||
color: "#f6a51f"
|
||||
extensions:
|
||||
- .golo
|
||||
tm_scope: NONE
|
||||
|
||||
Gosu:
|
||||
type: programming
|
||||
@@ -934,6 +954,7 @@ Grace:
|
||||
type: programming
|
||||
extensions:
|
||||
- .grace
|
||||
tm_scope: NONE
|
||||
|
||||
Grammatical Framework:
|
||||
type: programming
|
||||
@@ -950,6 +971,7 @@ Graph Modeling Language:
|
||||
type: data
|
||||
extensions:
|
||||
- .gml
|
||||
tm_scope: NONE
|
||||
|
||||
Graphviz (DOT):
|
||||
type: data
|
||||
@@ -1039,6 +1061,7 @@ HTTP:
|
||||
type: data
|
||||
extensions:
|
||||
- .http
|
||||
tm_scope: NONE
|
||||
|
||||
Hack:
|
||||
type: programming
|
||||
@@ -1046,6 +1069,7 @@ Hack:
|
||||
extensions:
|
||||
- .hh
|
||||
- .php
|
||||
tm_scope: NONE
|
||||
|
||||
Haml:
|
||||
group: HTML
|
||||
@@ -1068,6 +1092,7 @@ Harbour:
|
||||
color: "#0e60e3"
|
||||
extensions:
|
||||
- .hb
|
||||
tm_scope: NONE
|
||||
|
||||
Haskell:
|
||||
type: programming
|
||||
@@ -1093,6 +1118,7 @@ Hy:
|
||||
- .hy
|
||||
aliases:
|
||||
- hylang
|
||||
tm_scope: NONE
|
||||
|
||||
IDL:
|
||||
type: programming
|
||||
@@ -1108,6 +1134,7 @@ IGOR Pro:
|
||||
aliases:
|
||||
- igor
|
||||
- igorpro
|
||||
tm_scope: NONE
|
||||
|
||||
INI:
|
||||
type: data
|
||||
@@ -1128,6 +1155,7 @@ IRC log:
|
||||
extensions:
|
||||
- .irclog
|
||||
- .weechatlog
|
||||
tm_scope: NONE
|
||||
|
||||
Idris:
|
||||
type: programming
|
||||
@@ -1149,6 +1177,7 @@ Inform 7:
|
||||
Inno Setup:
|
||||
extensions:
|
||||
- .iss
|
||||
tm_scope: NONE
|
||||
|
||||
Io:
|
||||
type: programming
|
||||
@@ -1167,11 +1196,13 @@ Isabelle:
|
||||
color: "#fdcd00"
|
||||
extensions:
|
||||
- .thy
|
||||
tm_scope: NONE
|
||||
|
||||
J:
|
||||
type: programming
|
||||
extensions:
|
||||
- .ijs
|
||||
tm_scope: NONE
|
||||
|
||||
JSON:
|
||||
type: data
|
||||
@@ -1279,6 +1310,7 @@ KRL:
|
||||
color: "#f5c800"
|
||||
extensions:
|
||||
- .krl
|
||||
tm_scope: NONE
|
||||
|
||||
Kit:
|
||||
type: markup
|
||||
@@ -1312,6 +1344,7 @@ LOLCODE:
|
||||
extensions:
|
||||
- .lol
|
||||
color: "#cc9900"
|
||||
tm_scope: NONE
|
||||
|
||||
LSL:
|
||||
type: programming
|
||||
@@ -1326,6 +1359,7 @@ LabVIEW:
|
||||
type: programming
|
||||
extensions:
|
||||
- .lvproj
|
||||
tm_scope: NONE
|
||||
|
||||
Lasso:
|
||||
type: programming
|
||||
@@ -1364,12 +1398,14 @@ Liquid:
|
||||
type: markup
|
||||
extensions:
|
||||
- .liquid
|
||||
tm_scope: NONE
|
||||
|
||||
Literate Agda:
|
||||
type: programming
|
||||
group: Agda
|
||||
extensions:
|
||||
- .lagda
|
||||
tm_scope: NONE
|
||||
|
||||
Literate CoffeeScript:
|
||||
type: programming
|
||||
@@ -1546,6 +1582,7 @@ MediaWiki:
|
||||
wrap: true
|
||||
extensions:
|
||||
- .mediawiki
|
||||
tm_scope: NONE
|
||||
|
||||
Mercury:
|
||||
type: programming
|
||||
@@ -1560,6 +1597,7 @@ MiniD: # Legacy
|
||||
searchable: false
|
||||
extensions:
|
||||
- .minid # Dummy extension
|
||||
tm_scope: NONE
|
||||
|
||||
Mirah:
|
||||
type: programming
|
||||
@@ -1581,6 +1619,7 @@ Moocode:
|
||||
type: programming
|
||||
extensions:
|
||||
- .moo
|
||||
tm_scope: NONE
|
||||
|
||||
MoonScript:
|
||||
type: programming
|
||||
@@ -1592,6 +1631,7 @@ MoonScript:
|
||||
Myghty:
|
||||
extensions:
|
||||
- .myt
|
||||
tm_scope: NONE
|
||||
|
||||
NSIS:
|
||||
extensions:
|
||||
@@ -1637,6 +1677,7 @@ Nit:
|
||||
color: "#0d8921"
|
||||
extensions:
|
||||
- .nit
|
||||
tm_scope: NONE
|
||||
|
||||
Nix:
|
||||
type: programming
|
||||
@@ -1644,6 +1685,7 @@ Nix:
|
||||
- .nix
|
||||
aliases:
|
||||
- nixos
|
||||
tm_scope: NONE
|
||||
|
||||
Nu:
|
||||
type: programming
|
||||
@@ -1662,6 +1704,7 @@ NumPy:
|
||||
- .numpy
|
||||
- .numpyw
|
||||
- .numsc
|
||||
tm_scope: NONE
|
||||
|
||||
OCaml:
|
||||
type: programming
|
||||
@@ -1722,6 +1765,7 @@ Omgrofl:
|
||||
extensions:
|
||||
- .omgrofl
|
||||
color: "#cabbff"
|
||||
tm_scope: NONE
|
||||
|
||||
Opa:
|
||||
type: programming
|
||||
@@ -1733,6 +1777,7 @@ Opal:
|
||||
color: "#f7ede0"
|
||||
extensions:
|
||||
- .opal
|
||||
tm_scope: NONE
|
||||
|
||||
OpenCL:
|
||||
type: programming
|
||||
@@ -1757,12 +1802,14 @@ OpenSCAD:
|
||||
type: programming
|
||||
extensions:
|
||||
- .scad
|
||||
tm_scope: NONE
|
||||
|
||||
Org:
|
||||
type: prose
|
||||
wrap: true
|
||||
extensions:
|
||||
- .org
|
||||
tm_scope: NONE
|
||||
|
||||
Ox:
|
||||
type: programming
|
||||
@@ -1770,12 +1817,14 @@ Ox:
|
||||
- .ox
|
||||
- .oxh
|
||||
- .oxo
|
||||
tm_scope: NONE
|
||||
|
||||
Oxygene:
|
||||
type: programming
|
||||
color: "#5a63a3"
|
||||
extensions:
|
||||
- .oxygene
|
||||
tm_scope: NONE
|
||||
|
||||
PAWN:
|
||||
type: programming
|
||||
@@ -1811,18 +1860,21 @@ Pan:
|
||||
color: '#cc0000'
|
||||
extensions:
|
||||
- .pan
|
||||
tm_scope: NONE
|
||||
|
||||
Papyrus:
|
||||
type: programming
|
||||
color: "#6600cc"
|
||||
extensions:
|
||||
- .psc
|
||||
tm_scope: NONE
|
||||
|
||||
Parrot:
|
||||
type: programming
|
||||
color: "#f3ca0a"
|
||||
extensions:
|
||||
- .parrot # Dummy extension
|
||||
tm_scope: NONE
|
||||
|
||||
Parrot Assembly:
|
||||
group: Parrot
|
||||
@@ -1831,6 +1883,7 @@ Parrot Assembly:
|
||||
- pasm
|
||||
extensions:
|
||||
- .pasm
|
||||
tm_scope: NONE
|
||||
|
||||
Parrot Internal Representation:
|
||||
group: Parrot
|
||||
@@ -1882,12 +1935,14 @@ Perl6:
|
||||
- .p6m
|
||||
- .pl6
|
||||
- .pm6
|
||||
tm_scope: NONE
|
||||
|
||||
PigLatin:
|
||||
type: programming
|
||||
color: "#fcd7de"
|
||||
extensions:
|
||||
- .pig
|
||||
tm_scope: NONE
|
||||
|
||||
Pike:
|
||||
type: programming
|
||||
@@ -1902,12 +1957,14 @@ Pod:
|
||||
wrap: true
|
||||
extensions:
|
||||
- .pod
|
||||
tm_scope: NONE
|
||||
|
||||
PogoScript:
|
||||
type: programming
|
||||
color: "#d80074"
|
||||
extensions:
|
||||
- .pogo
|
||||
tm_scope: NONE
|
||||
|
||||
PostScript:
|
||||
type: markup
|
||||
@@ -1948,6 +2005,7 @@ Propeller Spin:
|
||||
color: "#2b446d"
|
||||
extensions:
|
||||
- .spin
|
||||
tm_scope: NONE
|
||||
|
||||
Protocol Buffer:
|
||||
type: markup
|
||||
@@ -1971,6 +2029,7 @@ Pure Data:
|
||||
color: "#91de79"
|
||||
extensions:
|
||||
- .pd
|
||||
tm_scope: NONE
|
||||
|
||||
PureScript:
|
||||
type: programming
|
||||
@@ -2077,6 +2136,7 @@ RMarkdown:
|
||||
extensions:
|
||||
- .rmd
|
||||
- .Rmd
|
||||
tm_scope: NONE
|
||||
|
||||
Racket:
|
||||
type: programming
|
||||
@@ -2096,6 +2156,7 @@ Ragel in Ruby Host:
|
||||
aliases:
|
||||
- ragel-rb
|
||||
- ragel-ruby
|
||||
tm_scope: NONE
|
||||
|
||||
Raw token data:
|
||||
search_term: raw
|
||||
@@ -2103,6 +2164,7 @@ Raw token data:
|
||||
- raw
|
||||
extensions:
|
||||
- .raw
|
||||
tm_scope: NONE
|
||||
|
||||
Rebol:
|
||||
type: programming
|
||||
@@ -2122,10 +2184,12 @@ Red:
|
||||
- .reds
|
||||
aliases:
|
||||
- red/system
|
||||
tm_scope: NONE
|
||||
|
||||
Redcode:
|
||||
extensions:
|
||||
- .cw
|
||||
tm_scope: NONE
|
||||
|
||||
RobotFramework:
|
||||
type: programming
|
||||
@@ -2199,6 +2263,7 @@ SAS:
|
||||
color: "#1E90FF"
|
||||
extensions:
|
||||
- .sas
|
||||
tm_scope: NONE
|
||||
|
||||
SCSS:
|
||||
type: markup
|
||||
@@ -2292,6 +2357,7 @@ Self:
|
||||
color: "#0579aa"
|
||||
extensions:
|
||||
- .self
|
||||
tm_scope: NONE
|
||||
|
||||
Shell:
|
||||
type: programming
|
||||
@@ -2330,6 +2396,7 @@ Shen:
|
||||
color: "#120F14"
|
||||
extensions:
|
||||
- .shen
|
||||
tm_scope: NONE
|
||||
|
||||
Slash:
|
||||
type: programming
|
||||
@@ -2400,6 +2467,7 @@ Stylus:
|
||||
group: CSS
|
||||
extensions:
|
||||
- .styl
|
||||
tm_scope: NONE
|
||||
|
||||
SuperCollider:
|
||||
type: programming
|
||||
@@ -2407,6 +2475,7 @@ SuperCollider:
|
||||
extensions:
|
||||
- .scd
|
||||
- .sc
|
||||
tm_scope: NONE
|
||||
|
||||
Swift:
|
||||
type: programming
|
||||
@@ -2432,6 +2501,7 @@ TXL:
|
||||
type: programming
|
||||
extensions:
|
||||
- .txl
|
||||
tm_scope: NONE
|
||||
|
||||
Tcl:
|
||||
type: programming
|
||||
@@ -2488,6 +2558,7 @@ Textile:
|
||||
wrap: true
|
||||
extensions:
|
||||
- .textile
|
||||
tm_scope: NONE
|
||||
|
||||
Thrift:
|
||||
type: programming
|
||||
@@ -2501,6 +2572,7 @@ Turing:
|
||||
extensions:
|
||||
- .t
|
||||
- .tu
|
||||
tm_scope: NONE
|
||||
|
||||
Twig:
|
||||
type: markup
|
||||
@@ -2761,6 +2833,7 @@ Zimpl:
|
||||
- .zimpl
|
||||
- .zmpl
|
||||
- .zpl
|
||||
tm_scope: NONE
|
||||
|
||||
eC:
|
||||
type: programming
|
||||
@@ -2768,6 +2841,7 @@ eC:
|
||||
extensions:
|
||||
- .ec
|
||||
- .eh
|
||||
tm_scope: NONE
|
||||
|
||||
edn:
|
||||
type: data
|
||||
@@ -2782,6 +2856,7 @@ fish:
|
||||
group: Shell
|
||||
extensions:
|
||||
- .fish
|
||||
tm_scope: NONE
|
||||
|
||||
mupad:
|
||||
extensions:
|
||||
@@ -2822,3 +2897,4 @@ xBase:
|
||||
color: "#3a4040"
|
||||
extensions:
|
||||
- .prg
|
||||
tm_scope: NONE
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
require 'linguist/language'
|
||||
require 'test/unit'
|
||||
require 'yaml'
|
||||
|
||||
class TestLanguage < Test::Unit::TestCase
|
||||
include Linguist
|
||||
@@ -359,4 +360,15 @@ class TestLanguage < Test::Unit::TestCase
|
||||
def test_by_type
|
||||
assert !Language.by_type(:prose).nil?
|
||||
end
|
||||
|
||||
def test_all_languages_have_grammars
|
||||
scopes = YAML.load(File.read(File.expand_path("../../grammars.yml", __FILE__))).values.flatten
|
||||
missing = Language.all.reject { |language| language.tm_scope == "NONE" || scopes.include?(language.tm_scope) }
|
||||
message = "The following languages' scopes are not listed in grammars.yml. Please add grammars for all new languages.\n"
|
||||
message << "If no grammar exists for a language, mark the language with `tm_scope: NONE` in lib/linguist/languages.yml.\n"
|
||||
|
||||
width = missing.map { |language| language.name.length }.max
|
||||
message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n")
|
||||
assert missing.empty?, message
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user