From 851c93a1f7024dbede688829cafcf981f0a87213 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Mon, 10 Aug 2015 22:07:28 +0100 Subject: [PATCH] Don't blow up if empty string/nil passed to alias methods --- lib/linguist/language.rb | 2 ++ test/test_language.rb | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 05c5f802..bc65a053 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -150,6 +150,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.find_by_name(name) + return nil if name.to_s.empty? name && (@name_index[name.downcase] || @name_index[name.split(',').first.downcase]) end @@ -164,6 +165,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.find_by_alias(name) + return nil if name.to_s.empty? name && (@alias_index[name.downcase] || @alias_index[name.split(',').first.downcase]) end diff --git a/test/test_language.rb b/test/test_language.rb index 3d1fd66c..176abac4 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -275,6 +275,11 @@ class TestLanguage < Minitest::Test assert_equal Language['Rust'], Language.find_by_alias('rust,no_run') end + def test_doesnt_blow_up_with_blank_lookup + assert_equal nil, Language.find_by_alias('') + assert_equal nil, Language.find_by_name(nil) + end + def test_name assert_equal 'Perl', Language['Perl'].name assert_equal 'Python', Language['Python'].name