mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require_relative "./helper"
 | 
						|
 | 
						|
class TestRepository < Minitest::Test
 | 
						|
  def rugged_repository
 | 
						|
    @rugged ||= Rugged::Repository.new(File.expand_path("../../.git", __FILE__))
 | 
						|
  end
 | 
						|
 | 
						|
  def master_oid
 | 
						|
    'd40b4a33deba710e2f494db357c654fbe5d4b419'
 | 
						|
  end
 | 
						|
 | 
						|
  def linguist_repo(oid = master_oid)
 | 
						|
    Linguist::Repository.new(rugged_repository, oid)
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_language
 | 
						|
    assert_equal 'Ruby', linguist_repo.language
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_languages
 | 
						|
    assert linguist_repo.languages['Ruby'] > 10_000
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_size
 | 
						|
    assert linguist_repo.size > 30_000
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_breakdown
 | 
						|
    assert linguist_repo.breakdown_by_file.has_key?("Ruby")
 | 
						|
    assert linguist_repo.breakdown_by_file["Ruby"].include?("bin/linguist")
 | 
						|
    assert linguist_repo.breakdown_by_file["Ruby"].include?("lib/linguist/language.rb")
 | 
						|
  end
 | 
						|
 | 
						|
  def test_incremental_stats
 | 
						|
    old_commit = '3d7364877d6794f6cc2a86b493e893968a597332'
 | 
						|
    old_repo = linguist_repo(old_commit)
 | 
						|
 | 
						|
    assert old_repo.languages['Ruby'] > 10_000
 | 
						|
    assert old_repo.size > 30_000
 | 
						|
 | 
						|
    new_repo = Linguist::Repository.incremental(rugged_repository, master_oid, old_commit, old_repo.cache)
 | 
						|
 | 
						|
    assert new_repo.languages['Ruby'] > old_repo.languages['Ruby']
 | 
						|
    assert new_repo.size > old_repo.size
 | 
						|
 | 
						|
    assert_equal linguist_repo.cache, new_repo.cache
 | 
						|
  end
 | 
						|
 | 
						|
  def test_repo_git_attributes
 | 
						|
    # See https://github.com/github/linguist/blob/351c1cc8fd57340839bdb400d7812332af80e9bd/.gitattributes
 | 
						|
    #
 | 
						|
    # It looks like this:
 | 
						|
    # Gemfile linguist-vendored=true
 | 
						|
    # lib/linguist.rb linguist-language=Java
 | 
						|
    # test/*.rb linguist-language=Java
 | 
						|
    # Rakefile linguist-generated
 | 
						|
    # test/fixtures/* linguist-vendored=false
 | 
						|
 | 
						|
    attr_commit = '351c1cc8fd57340839bdb400d7812332af80e9bd'
 | 
						|
    repo = linguist_repo(attr_commit)
 | 
						|
 | 
						|
    assert repo.breakdown_by_file.has_key?("Java")
 | 
						|
    assert repo.breakdown_by_file["Java"].include?("lib/linguist.rb")
 | 
						|
 | 
						|
    assert repo.breakdown_by_file.has_key?("Ruby")
 | 
						|
    assert !repo.breakdown_by_file["Ruby"].empty?
 | 
						|
  end
 | 
						|
 | 
						|
  def test_commit_with_git_attributes_data
 | 
						|
    # Before we had any .gitattributes data
 | 
						|
    old_commit = '4a017d9033f91b2776eb85275463f9613cc371ef'
 | 
						|
    old_repo = linguist_repo(old_commit)
 | 
						|
 | 
						|
    # With some .gitattributes data
 | 
						|
    attr_commit = '7ee006cbcb2d7261f9e648510a684ee9ac64126b'
 | 
						|
    # It's incremental but should bust the cache
 | 
						|
    new_repo = Linguist::Repository.incremental(rugged_repository, attr_commit, old_commit, old_repo.cache)
 | 
						|
 | 
						|
    assert new_repo.breakdown_by_file["Java"].include?("lib/linguist.rb")
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_override_vendored?
 | 
						|
    attr_commit = '351c1cc8fd57340839bdb400d7812332af80e9bd'
 | 
						|
    repo = linguist_repo(attr_commit).read_index
 | 
						|
 | 
						|
    override_vendored = Linguist::LazyBlob.new(rugged_repository, attr_commit, 'Gemfile')
 | 
						|
 | 
						|
    # overridden .gitattributes
 | 
						|
    assert override_vendored.vendored?
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_override_unvendored?
 | 
						|
    attr_commit = '351c1cc8fd57340839bdb400d7812332af80e9bd'
 | 
						|
    repo = linguist_repo(attr_commit).read_index
 | 
						|
 | 
						|
    # lib/linguist/vendor.yml defines this as vendored.
 | 
						|
    override_unvendored = Linguist::LazyBlob.new(rugged_repository, attr_commit, 'test/fixtures/foo.rb')
 | 
						|
 | 
						|
    # overridden .gitattributes
 | 
						|
    assert !override_unvendored.vendored?
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_override_documentation?
 | 
						|
    attr_commit = "d4c8fb8a28e91f97a7e53428a365c0abbac36d3d"
 | 
						|
    repo = linguist_repo(attr_commit).read_index
 | 
						|
 | 
						|
    readme = Linguist::LazyBlob.new(rugged_repository, attr_commit, "README.md")
 | 
						|
    arduino = Linguist::LazyBlob.new(rugged_repository, attr_commit, "samples/Arduino/hello.ino")
 | 
						|
 | 
						|
    # overridden by .gitattributes
 | 
						|
    refute_predicate readme, :documentation?
 | 
						|
    assert_predicate arduino, :documentation?
 | 
						|
  end
 | 
						|
 | 
						|
  def test_linguist_override_generated?
 | 
						|
    attr_commit = "351c1cc8fd57340839bdb400d7812332af80e9bd"
 | 
						|
    repo = linguist_repo(attr_commit).read_index
 | 
						|
 | 
						|
    rakefile = Linguist::LazyBlob.new(rugged_repository, attr_commit, "Rakefile")
 | 
						|
 | 
						|
    # overridden .gitattributes
 | 
						|
    assert rakefile.generated?
 | 
						|
  end
 | 
						|
end
 |