From b32bc5ef471e6719e7ece1dbebc00eb4e9ec723d Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Mon, 17 Nov 2014 16:18:56 -0500 Subject: [PATCH] require samples if filename matches multiple languages --- test/test_samples.rb | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/test/test_samples.rb b/test/test_samples.rb index 992618cf..7f3ddffa 100644 --- a/test/test_samples.rb +++ b/test/test_samples.rb @@ -55,19 +55,25 @@ class TestSamples < Test::Unit::TestCase end # If a language extension isn't globally unique then make sure there are samples - def test_presence - Linguist::Language.all.each do |language| + Linguist::Language.all.each do |language| + define_method "test_#{language.name}_has_samples_if_necessary" do language.all_extensions.each do |extension| - language_matches = Language.find_by_filename("foo#{extension}") + assert_samples Language.find_by_filename("foo#{extension}"), "*#{extension}" + end - # If there is more than one language match for a given extension - # then check that there are examples for that language with the extension - if language_matches.length > 1 - language_matches.each do |language| - assert File.directory?("samples/#{language.name}"), "#{language.name} is missing a samples directory" - assert Dir.glob("samples/#{language.name}/*#{extension}").any?, "#{language.name} is missing samples for extension #{extension}" - end - end + language.filenames.each do |filename| + assert_samples Language.find_by_filename(filename), filename + end + end + end + + def assert_samples(language_matches, file_glob) + # If there is more than one language match for a given extension + # then check that there are examples for that language with the extension + if language_matches.length > 1 + language_matches.each do |language| + assert File.directory?("samples/#{language.name}"), "#{language.name} is missing a samples directory" + assert Dir.glob("samples/#{language.name}/#{file_glob}").any?, "#{language.name} is missing samples for #{file_glob}" end end end