From 3abe081560ca924caaa425bd38212feb3e7daeb9 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Fri, 23 Sep 2016 16:30:38 -0700 Subject: [PATCH] Validate codemirror modes --- lib/linguist/languages.yml | 42 +++++++++++--------------------------- test/test_language.rb | 26 +++++++++++++++++++++++ 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 2b816a92..9bb32f8a 100755 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -234,8 +234,6 @@ Apollo Guidance Computer: - ".agc" tm_scope: source.agc ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 18 AppleScript: type: programming @@ -298,8 +296,6 @@ Assembly: - ".nasm" tm_scope: source.assembly ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 24 Augeas: type: programming @@ -516,8 +512,6 @@ C-ObjDump: - ".c-objdump" tm_scope: objdump.x86asm ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 44 C2hs Haskell: type: programming @@ -568,7 +562,7 @@ COLLADA: tm_scope: text.xml ace_mode: xml codemirror_mode: xml - codemirror_mime_mode: text/x-xml + codemirror_mime_mode: text/xml language_id: 49 CSS: type: markup @@ -799,8 +793,6 @@ Cpp-ObjDump: aliases: - c++-objdump ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 70 Creole: type: prose @@ -909,8 +901,6 @@ D-ObjDump: - ".d-objdump" tm_scope: objdump.x86asm ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 81 DIGITAL Command Language: type: programming @@ -972,7 +962,7 @@ Dart: - dart ace_mode: dart codemirror_mode: dart - codemirror_mime_mode: text/x-dart + codemirror_mime_mode: application/dart language_id: 87 Diff: type: data @@ -1337,8 +1327,6 @@ GAS: - ".ms" tm_scope: source.assembly ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 120 GCC Machine Description: type: programming @@ -1632,7 +1620,7 @@ HTML: type: markup tm_scope: text.html.basic ace_mode: html - codemirror_mode: htmlembedded + codemirror_mode: htmlmixed codemirror_mime_mode: text/html color: "#e44b23" aliases: @@ -1671,7 +1659,7 @@ HTML+ECR: extensions: - ".ecr" ace_mode: text - codemirror_mode: htmlembedded + codemirror_mode: htmlmixed codemirror_mime_mode: text/html language_id: 148 HTML+EEX: @@ -1683,7 +1671,7 @@ HTML+EEX: extensions: - ".eex" ace_mode: text - codemirror_mode: htmlembedded + codemirror_mode: htmlmixed codemirror_mime_mode: text/html language_id: 149 HTML+ERB: @@ -1752,7 +1740,6 @@ Handlebars: - ".hbs" tm_scope: text.html.handlebars ace_mode: handlebars - codemirror_mode: handlebars language_id: 155 Harbour: type: programming @@ -1962,8 +1949,6 @@ JSONLD: type: data group: JavaScript ace_mode: javascript - codemirror_mode: javascript - codemirror_mime_mode: application/ld+json extensions: - ".jsonld" tm_scope: source.js @@ -1985,6 +1970,7 @@ JSX: - ".jsx" tm_scope: source.js.jsx ace_mode: javascript + codemirror_mode: jsx codemirror_mime_mode: text/jsx language_id: 178 Jade: @@ -2118,7 +2104,7 @@ KiCad: Kit: type: markup ace_mode: html - codemirror_mode: htmlembedded + codemirror_mode: htmlmixed codemirror_mime_mode: text/html extensions: - ".kit" @@ -2419,7 +2405,7 @@ MTML: - ".mtml" tm_scope: text.html.basic ace_mode: html - codemirror_mode: htmlembedded + codemirror_mode: htmlmixed codemirror_mime_mode: text/html language_id: 218 MUF: @@ -2474,7 +2460,7 @@ Mako: Markdown: type: prose ace_mode: markdown - codemirror_mode: markdown + codemirror_mode: gfm codemirror_mime_mode: text/x-gfm wrap: true extensions: @@ -2837,8 +2823,6 @@ ObjDump: - ".objdump" tm_scope: objdump.x86asm ace_mode: assembly_x86 - codemirror_mode: gas - codemirror_mime_mode: text/x-gas language_id: 256 Objective-C: type: programming @@ -3247,7 +3231,7 @@ PowerShell: type: programming ace_mode: powershell codemirror_mode: powershell - codemirror_mime_mode: text/x-powershell + codemirror_mime_mode: application/x-powershell aliases: - posh extensions: @@ -3482,7 +3466,7 @@ RMarkdown: type: prose wrap: true ace_mode: markdown - codemirror_mode: markdown + codemirror_mode: gfm codemirror_mime_mode: text/x-gfm extensions: - ".rmd" @@ -4048,7 +4032,6 @@ Stylus: - ".styl" tm_scope: source.stylus ace_mode: stylus - codemirror_mode: stylus language_id: 359 SubRip Text: type: data @@ -4263,7 +4246,7 @@ TypeScript: tm_scope: source.ts ace_mode: typescript codemirror_mode: javascript - codemirror_mime_mode: text/x-typescript + codemirror_mime_mode: application/typescript language_id: 378 Unified Parallel C: type: programming @@ -4418,7 +4401,6 @@ Vue: - ".vue" tm_scope: text.html.vue ace_mode: html - codemirror_mode: vue language_id: 391 Wavefront Material: type: data diff --git a/test/test_language.rb b/test/test_language.rb index 0d711d36..48391e59 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -452,6 +452,15 @@ class TestLanguage < Minitest::Test assert missing.empty?, message end + def test_codemirror_modes_present + Language.all.each do |language| + if language.codemirror_mode || language.codemirror_mime_mode + assert language.codemirror_mode, "#{language.inspect} missing CodeMirror mode" + assert language.codemirror_mime_mode, "#{language.inspect} missing CodeMirror MIME mode" + end + end + end + def test_valid_codemirror_mode Language.all.each do |language| if mode = language.codemirror_mode @@ -460,6 +469,23 @@ class TestLanguage < Minitest::Test end end + def test_codemirror_mode_and_mime_defined_by_meta_mapping + meta = File.read(File.expand_path("../../vendor/CodeMirror/mode/meta.js", __FILE__)) + Language.all.each do |language| + next unless language.codemirror_mode && language.codemirror_mime_mode + assert meta.match(/^.+#{Regexp.escape(language.codemirror_mime_mode)}.+#{Regexp.escape(language.codemirror_mode)}.+$/), "#{language.inspect}: #{language.codemirror_mime_mode} not defined under #{language.codemirror_mode}" + end + end + + def test_codemirror_mime_declared_in_mode_file + Language.all.each do |language| + next unless language.codemirror_mode && language.codemirror_mime_mode + filename = File.expand_path("../../vendor/CodeMirror/mode/#{language.codemirror_mode}/#{language.codemirror_mode}.js", __FILE__) + assert File.exist?(filename), "#{filename} does not exist" + assert File.read(filename).match(language.codemirror_mime_mode), "#{language.inspect}: #{language.codemirror_mime_mode} not defined in #{filename}" + end + end + def test_all_popular_languages_exist popular = YAML.load(File.read(File.expand_path("../../lib/linguist/popular.yml", __FILE__)))