Warn if classifier instance is out of date

This commit is contained in:
Joshua Peek
2012-06-19 14:32:04 -05:00
parent e2b0f6bb50
commit ddf3ec4a5b
2 changed files with 20 additions and 0 deletions

View File

@@ -29,6 +29,19 @@ module Linguist
@languages = Hash.new(0)
end
# Public: Compare Classifier objects.
#
# other - Classifier object to compare to.
#
# Returns Boolean.
def eql?(other)
# Lazy fast check counts only
other.is_a?(self.class) &&
@tokens_total == other.instance_variable_get(:@tokens_total) &&
@languages_total == other.instance_variable_get(:@languages_total)
end
alias_method :==, :eql?
# Public: Train classifier that data is a certain language.
#
# language - Language of data

View File

@@ -16,6 +16,13 @@ class TestClassifier < Test::Unit::TestCase
File.read(File.join(fixtures_path, name))
end
def test_instance_freshness
# Just warn, it shouldn't scare people off by breaking the build.
unless Classifier.instance.eql?(Linguist::Sample.classifier)
warn "Classifier database is out of date. Run `bundle exec rake classifier`."
end
end
def test_classify
classifier = Classifier.new
classifier.train Language["Ruby"], fixture("ruby/foo.rb")