Merge pull request #2298 from github/add-proximity-test

Add proximity test for colors
This commit is contained in:
Arfon Smith
2015-04-06 13:15:32 -05:00
5 changed files with 93 additions and 68 deletions

View File

@@ -23,4 +23,5 @@ Gem::Specification.new do |s|
s.add_development_dependency 'pry' s.add_development_dependency 'pry'
s.add_development_dependency 'rake' s.add_development_dependency 'rake'
s.add_development_dependency 'yajl-ruby' s.add_development_dependency 'yajl-ruby'
s.add_development_dependency 'color-proximity', '~> 0.2.1'
end end

View File

@@ -46,7 +46,7 @@ AGS Script:
AMPL: AMPL:
type: programming type: programming
color: "#00008B" color: "#E6EFBB"
extensions: extensions:
- .ampl - .ampl
tm_scope: source.ampl tm_scope: source.ampl
@@ -61,7 +61,7 @@ ANTLR:
APL: APL:
type: programming type: programming
color: "#8a0707" color: "#5A8164"
extensions: extensions:
- .apl - .apl
- .dyalog - .dyalog
@@ -101,7 +101,7 @@ ATS:
ActionScript: ActionScript:
type: programming type: programming
tm_scope: source.actionscript.3 tm_scope: source.actionscript.3
color: "#e3491a" color: "#882B0F"
search_term: as3 search_term: as3
aliases: aliases:
- actionscript 3 - actionscript 3
@@ -125,7 +125,7 @@ Ada:
Agda: Agda:
type: programming type: programming
color: "#467C91" color: "#315665"
extensions: extensions:
- .agda - .agda
ace_mode: text ace_mode: text
@@ -175,7 +175,7 @@ AppleScript:
Arc: Arc:
type: programming type: programming
color: "#ca2afe" color: "#aa2afe"
extensions: extensions:
- .arc - .arc
tm_scope: none tm_scope: none
@@ -201,7 +201,7 @@ AsciiDoc:
AspectJ: AspectJ:
type: programming type: programming
color: "#1957b0" color: "#a957b0"
extensions: extensions:
- .aj - .aj
tm_scope: none tm_scope: none
@@ -240,7 +240,7 @@ AutoHotkey:
AutoIt: AutoIt:
type: programming type: programming
color: "#36699B" color: "#1C3552"
aliases: aliases:
- au3 - au3
- AutoIt3 - AutoIt3
@@ -498,14 +498,14 @@ ChucK:
Cirru: Cirru:
type: programming type: programming
color: "#aaaaff" color: "#ccccff"
ace_mode: cirru ace_mode: cirru
extensions: extensions:
- .cirru - .cirru
Clean: Clean:
type: programming type: programming
color: "#3a81ad" color: "#3F85AF"
extensions: extensions:
- .icl - .icl
- .dcl - .dcl
@@ -645,7 +645,7 @@ Creole:
Crystal: Crystal:
type: programming type: programming
color: "#76EEF5" color: "#776791"
extensions: extensions:
- .cr - .cr
ace_mode: ruby ace_mode: ruby
@@ -705,7 +705,7 @@ D-ObjDump:
DM: DM:
type: programming type: programming
color: "#075ff1" color: "#447265"
extensions: extensions:
- .dm - .dm
aliases: aliases:
@@ -737,7 +737,7 @@ Darcs Patch:
Dart: Dart:
type: programming type: programming
color: "#98BAD6" color: "#00B4AB"
extensions: extensions:
- .dart - .dart
ace_mode: dart ace_mode: dart
@@ -772,7 +772,7 @@ Dogescript:
Dylan: Dylan:
type: programming type: programming
color: "#3ebc27" color: "#6c616e"
extensions: extensions:
- .dylan - .dylan
- .dyl - .dyl
@@ -799,7 +799,7 @@ ECL:
Eagle: Eagle:
type: markup type: markup
color: "#3994bc" color: "#814C05"
extensions: extensions:
- .sch - .sch
- .brd - .brd
@@ -857,7 +857,7 @@ Emacs Lisp:
EmberScript: EmberScript:
type: programming type: programming
color: "#f64e3e" color: "#FFF4F3"
extensions: extensions:
- .em - .em
- .emberscript - .emberscript
@@ -866,7 +866,7 @@ EmberScript:
Erlang: Erlang:
type: programming type: programming
color: "#0faf8d" color: "#B83998"
extensions: extensions:
- .erl - .erl
- .es - .es
@@ -895,7 +895,7 @@ F#:
FLUX: FLUX:
type: programming type: programming
color: "#33CCFF" color: "#88ccff"
extensions: extensions:
- .fx - .fx
- .flux - .flux
@@ -1045,7 +1045,7 @@ GLSL:
Game Maker Language: Game Maker Language:
type: programming type: programming
color: "#8ad353" color: "#8fb200"
extensions: extensions:
- .gml - .gml
tm_scope: source.c++ tm_scope: source.c++
@@ -1119,7 +1119,7 @@ Go:
Golo: Golo:
type: programming type: programming
color: "#f6a51f" color: "#88562A"
extensions: extensions:
- .golo - .golo
tm_scope: source.golo tm_scope: source.golo
@@ -1158,7 +1158,7 @@ Grammatical Framework:
extensions: extensions:
- .gf - .gf
searchable: true searchable: true
color: "#ff0000" color: "#79aa7a"
tm_scope: source.haskell tm_scope: source.haskell
ace_mode: haskell ace_mode: haskell
@@ -1326,7 +1326,7 @@ Haxe:
Hy: Hy:
type: programming type: programming
ace_mode: text ace_mode: text
color: "#7891b1" color: "#7790B2"
extensions: extensions:
- .hy - .hy
aliases: aliases:
@@ -1335,7 +1335,7 @@ Hy:
IDL: IDL:
type: programming type: programming
color: "#e3592c" color: "#a3522f"
extensions: extensions:
- .pro - .pro
- .dlm - .dlm
@@ -1420,7 +1420,7 @@ Ioke:
Isabelle: Isabelle:
type: programming type: programming
color: "#fdcd00" color: "#FEFE00"
extensions: extensions:
- .thy - .thy
tm_scope: source.isabelle.theory tm_scope: source.isabelle.theory
@@ -1428,7 +1428,7 @@ Isabelle:
J: J:
type: programming type: programming
color: "#2d8abd" color: "#9EEDFF"
extensions: extensions:
- .ijs - .ijs
tm_scope: source.j tm_scope: source.j
@@ -1556,7 +1556,7 @@ Julia:
KRL: KRL:
type: programming type: programming
color: "#f5c800" color: "#28431f"
extensions: extensions:
- .krl - .krl
tm_scope: none tm_scope: none
@@ -1627,7 +1627,7 @@ LabVIEW:
Lasso: Lasso:
type: programming type: programming
color: "#2584c3" color: "#999999"
extensions: extensions:
- .lasso - .lasso
- .las - .las
@@ -1787,7 +1787,7 @@ M:
MTML: MTML:
type: markup type: markup
color: "#0095d9" color: "#b7e1f4"
extensions: extensions:
- .mtml - .mtml
tm_scope: text.html.basic tm_scope: text.html.basic
@@ -1882,7 +1882,7 @@ Maven POM:
Max: Max:
type: programming type: programming
color: "#ce279c" color: "#c4a79c"
aliases: aliases:
- max/msp - max/msp
- maxmsp - maxmsp
@@ -1906,7 +1906,7 @@ MediaWiki:
Mercury: Mercury:
type: programming type: programming
color: "#abcdef" color: "#ff2b2b"
ace_mode: prolog ace_mode: prolog
interpreters: interpreters:
- mmi - mmi
@@ -1987,14 +1987,14 @@ NSIS:
Nemerle: Nemerle:
type: programming type: programming
color: "#0d3c6e" color: "#3d3c6e"
extensions: extensions:
- .n - .n
ace_mode: text ace_mode: text
NetLinx: NetLinx:
type: programming type: programming
color: "#0000ff" color: "#0aa0ff"
extensions: extensions:
- .axs - .axs
- .axi - .axi
@@ -2003,7 +2003,7 @@ NetLinx:
NetLinx+ERB: NetLinx+ERB:
type: programming type: programming
color: "#407fff" color: "#747faa"
extensions: extensions:
- .axs.erb - .axs.erb
- .axi.erb - .axi.erb
@@ -2012,7 +2012,7 @@ NetLinx+ERB:
NetLogo: NetLogo:
type: programming type: programming
color: "#ff2b2b" color: "#ff6375"
extensions: extensions:
- .nlogo - .nlogo
tm_scope: source.lisp tm_scope: source.lisp
@@ -2021,7 +2021,7 @@ NetLogo:
NewLisp: NewLisp:
type: programming type: programming
lexer: NewLisp lexer: NewLisp
color: "#eedd66" color: "#87AED7"
extensions: extensions:
- .nl - .nl
- .lisp - .lisp
@@ -2058,7 +2058,7 @@ Ninja:
Nit: Nit:
type: programming type: programming
color: "#0d8921" color: "#009917"
extensions: extensions:
- .nit - .nit
tm_scope: source.nit tm_scope: source.nit
@@ -2066,7 +2066,7 @@ Nit:
Nix: Nix:
type: programming type: programming
color: "#7070ff" color: "#7e7eff"
extensions: extensions:
- .nix - .nix
aliases: aliases:
@@ -2138,7 +2138,7 @@ Objective-C:
Objective-C++: Objective-C++:
type: programming type: programming
tm_scope: source.objc++ tm_scope: source.objc++
color: "#4886FC" color: "#6866fb"
aliases: aliases:
- obj-c++ - obj-c++
- objc++ - objc++
@@ -2229,7 +2229,7 @@ Ox:
Oxygene: Oxygene:
type: programming type: programming
color: "#5a63a3" color: "#cdd0e3"
extensions: extensions:
- .oxygene - .oxygene
tm_scope: none tm_scope: none
@@ -2237,7 +2237,7 @@ Oxygene:
Oz: Oz:
type: programming type: programming
color: "#fcaf3e" color: "#fab738"
extensions: extensions:
- .oz - .oz
tm_scope: source.oz tm_scope: source.oz
@@ -2373,7 +2373,7 @@ Perl:
Perl6: Perl6:
type: programming type: programming
color: "#0298c3" color: "#0000fb"
extensions: extensions:
- .6pl - .6pl
- .6pm - .6pm
@@ -2403,7 +2403,7 @@ PigLatin:
Pike: Pike:
type: programming type: programming
color: "#066ab2" color: "#005390"
extensions: extensions:
- .pike - .pike
- .pmod - .pmod
@@ -2449,7 +2449,7 @@ PowerShell:
Processing: Processing:
type: programming type: programming
color: "#2779ab" color: "#0096D8"
extensions: extensions:
- .pde - .pde
ace_mode: text ace_mode: text
@@ -2468,7 +2468,7 @@ Prolog:
Propeller Spin: Propeller Spin:
type: programming type: programming
color: "#2b446d" color: "#7fa2a7"
extensions: extensions:
- .spin - .spin
tm_scope: source.spin tm_scope: source.spin
@@ -2494,7 +2494,7 @@ Public Key:
Puppet: Puppet:
type: programming type: programming
color: "#cc5555" color: "#332A77"
extensions: extensions:
- .pp - .pp
filenames: filenames:
@@ -2520,7 +2520,7 @@ PureBasic:
PureScript: PureScript:
type: programming type: programming
color: "#bcdc53" color: "#1D222D"
extensions: extensions:
- .purs - .purs
tm_scope: source.haskell tm_scope: source.haskell
@@ -2529,7 +2529,7 @@ PureScript:
Python: Python:
type: programming type: programming
ace_mode: python ace_mode: python
color: "#3581ba" color: "#3572A5"
extensions: extensions:
- .py - .py
- .cgi - .cgi
@@ -2647,7 +2647,7 @@ RMarkdown:
Racket: Racket:
type: programming type: programming
color: "#ae17ff" color: "#22228f"
extensions: extensions:
- .rkt - .rkt
- .rktd - .rktd
@@ -2660,7 +2660,7 @@ Racket:
Ragel in Ruby Host: Ragel in Ruby Host:
type: programming type: programming
color: "#ff9c2e" color: "#e17600"
extensions: extensions:
- .rl - .rl
aliases: aliases:
@@ -2791,7 +2791,7 @@ Rust:
SAS: SAS:
type: programming type: programming
color: "#1E90FF" color: "#B34936"
extensions: extensions:
- .sas - .sas
tm_scope: source.sas tm_scope: source.sas
@@ -2815,7 +2815,7 @@ SPARQL:
SQF: SQF:
type: programming type: programming
color: "#FFCB1F" color: "#3F3F3F"
extensions: extensions:
- .sqf - .sqf
- .hqf - .hqf
@@ -2992,7 +2992,7 @@ Slash:
Slim: Slim:
group: HTML group: HTML
type: markup type: markup
color: "#ff8877" color: "#ff8f77"
extensions: extensions:
- .slim - .slim
ace_mode: text ace_mode: text
@@ -3015,7 +3015,7 @@ Smarty:
SourcePawn: SourcePawn:
type: programming type: programming
color: "#f69e1d" color: "#5c7611"
aliases: aliases:
- sourcemod - sourcemod
extensions: extensions:
@@ -3083,7 +3083,7 @@ Swift:
SystemVerilog: SystemVerilog:
type: programming type: programming
color: "#343761" color: "#DAE1C2"
extensions: extensions:
- .sv - .sv
- .svh - .svh
@@ -3208,7 +3208,7 @@ Twig:
TypeScript: TypeScript:
type: programming type: programming
color: "#31859c" color: "#2b7489"
aliases: aliases:
- ts - ts
extensions: extensions:
@@ -3220,7 +3220,7 @@ Unified Parallel C:
type: programming type: programming
group: C group: C
ace_mode: c_cpp ace_mode: c_cpp
color: "#755223" color: "#4e3617"
extensions: extensions:
- .upc - .upc
tm_scope: source.c tm_scope: source.c
@@ -3234,8 +3234,8 @@ UnrealScript:
ace_mode: java ace_mode: java
VCL: VCL:
group: Perl
type: programming type: programming
color: "#0298c3"
extensions: extensions:
- .vcl - .vcl
tm_scope: source.varnish.vcl tm_scope: source.varnish.vcl
@@ -3243,7 +3243,7 @@ VCL:
VHDL: VHDL:
type: programming type: programming
color: "#543978" color: "#adb2cb"
extensions: extensions:
- .vhdl - .vhdl
- .vhd - .vhd
@@ -3257,7 +3257,7 @@ VHDL:
Vala: Vala:
type: programming type: programming
color: "#ee7d06" color: "#fbe5cd"
extensions: extensions:
- .vala - .vala
- .vapi - .vapi
@@ -3265,7 +3265,7 @@ Vala:
Verilog: Verilog:
type: programming type: programming
color: "#848bf3" color: "#b2b7f8"
extensions: extensions:
- .v - .v
- .veo - .veo
@@ -3273,7 +3273,7 @@ Verilog:
VimL: VimL:
type: programming type: programming
color: "#199c4b" color: "#199f4b"
search_term: vim search_term: vim
aliases: aliases:
- vim - vim
@@ -3309,7 +3309,7 @@ Visual Basic:
Volt: Volt:
type: programming type: programming
color: "#0098db" color: "#1F1F1F"
extensions: extensions:
- .volt - .volt
tm_scope: source.d tm_scope: source.d
@@ -3317,7 +3317,7 @@ Volt:
Web Ontology Language: Web Ontology Language:
type: markup type: markup
color: "#3994bc" color: "#9cc9dd"
extensions: extensions:
- .owl - .owl
tm_scope: text.xml tm_scope: text.xml
@@ -3433,7 +3433,7 @@ XProc:
XQuery: XQuery:
type: programming type: programming
color: "#2700e2" color: "#5232e7"
extensions: extensions:
- .xquery - .xquery
- .xq - .xq
@@ -3516,7 +3516,7 @@ desktop:
eC: eC:
type: programming type: programming
color: "#4A4773" color: "#913960"
search_term: ec search_term: ec
extensions: extensions:
- .ec - .ec
@@ -3548,7 +3548,7 @@ mupad:
nesC: nesC:
type: programming type: programming
color: "#ffce3b" color: "#94B0C7"
extensions: extensions:
- .nc - .nc
ace_mode: text ace_mode: text
@@ -3581,7 +3581,7 @@ wisp:
xBase: xBase:
type: programming type: programming
color: "#3a4040" color: "#403a40"
extensions: extensions:
- .prg - .prg
tm_scope: none tm_scope: none

View File

@@ -2,6 +2,7 @@ require "bundler/setup"
require "minitest/autorun" require "minitest/autorun"
require "mocha/setup" require "mocha/setup"
require "linguist" require "linguist"
require 'color-proximity'
def fixtures_path def fixtures_path
File.expand_path("../fixtures", __FILE__) File.expand_path("../fixtures", __FILE__)

View File

@@ -0,0 +1,23 @@
require_relative "./helper"
class TestColorProximity < Minitest::Test
include Linguist
def cut_hash(color)
color[1..-1] if color.start_with?('#')
end
def test_color_proximity
langs_with_colors = Language.all.reject { |language| language.color.nil? }
cp = ColorProximity.new(0.05, langs_with_colors.map { |lang| cut_hash(lang.color) })
failing_threshold = langs_with_colors.map do |lang|
state = cp.past_threshold?(cut_hash(lang.color))
if !state.first && lang.color != "##{state.last.first}"
"- #{lang} (#{lang.color}) is too close to #{state.last}"
end
end.compact
message = "The following #{failing_threshold.length} languages have failing color thresholds. Please modify the hex color.\n#{failing_threshold.join("\n")}"
assert failing_threshold.empty?, message
end
end

View File

@@ -286,9 +286,9 @@ class TestLanguage < Minitest::Test
def test_color def test_color
assert_equal '#701516', Language['Ruby'].color assert_equal '#701516', Language['Ruby'].color
assert_equal '#3581ba', Language['Python'].color assert_equal '#3572A5', Language['Python'].color
assert_equal '#f1e05a', Language['JavaScript'].color assert_equal '#f1e05a', Language['JavaScript'].color
assert_equal '#31859c', Language['TypeScript'].color assert_equal '#2b7489', Language['TypeScript'].color
assert_equal '#3d9970', Language['LSL'].color assert_equal '#3d9970', Language['LSL'].color
end end