Merge remote-tracking branch 'origin/master' into test-helper

* origin/master:
  Add Gemfile.lock sample
  Remove deprecated method
  #all_extensions already includes primary extension
  typo
  remove unused assertion
  Symlink ant.xml to build.xml
  Avoid shadowing variable name
  Update comment
  Make missing sample failure message similar
  Remove blank extensions property
  Fix sample tests
  Add Forth extensions .f and .for; add heuristics for Forth and FORTRAN.
  Add FORTRAN and Forth samples.
  Extensions aren't actually required
  Fix errors from pedantic test
  Make pedantic test actually pedantic
  Removing extensions when they should be filenames
  Adding sample pom.xml files
  Link to contributing docs
  require samples if filename matches multiple languages

Conflicts:
	test/test_pedantic.rb
This commit is contained in:
Brandon Keepers
2014-11-18 16:48:26 -05:00
21 changed files with 1318 additions and 115 deletions

View File

@@ -1,57 +1,29 @@
require_relative "./helper"
class TestPedantic < Test::Unit::TestCase
Lib = File.expand_path("../../lib/linguist", __FILE__)
def file(name)
File.read(File.join(Lib, name))
end
filename = File.expand_path("../../lib/linguist/languages.yml", __FILE__)
LANGUAGES = YAML.load(File.read(filename))
def test_language_names_are_sorted
languages = []
file("languages.yml").lines.each do |line|
if line =~ /^(\w+):$/
languages << $1
end
end
assert_sorted languages
assert_sorted LANGUAGES.keys
end
def test_extensions_are_sorted
extensions = nil
file("languages.yml").lines.each do |line|
if line =~ /^ extensions:$/
extensions = []
elsif extensions && line =~ /^ - \.([\w\-\.]+)( *#.*)?$/
extensions << $1
else
assert_sorted extensions[1..-1] if extensions
extensions = nil
end
LANGUAGES.each do |name, language|
extensions = language['extensions']
assert_sorted extensions[1..-1] if extensions && extensions.size > 1
end
end
def test_filenames_are_sorted
filenames = nil
file("languages.yml").lines.each do |line|
if line =~ /^ filenames:$/
filenames = []
elsif filenames && line =~ /^ - \.(\w+)$/
filenames << $1
else
assert_sorted filenames if filenames
filenames = nil
end
LANGUAGES.each do |name, language|
assert_sorted language['filenames'] if language['filenames']
end
end
def assert_sorted(list)
previous = nil
list.each do |item|
if previous && previous > item
flunk "#{previous} should come after #{item}"
end
previous = item
list.each_cons(2) do |previous, item|
flunk "#{previous} should come after #{item}" if previous > item
end
end
end