mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add BlobHelper#include_in_language_stats?
This just extracts some logic from Repository#compute_stats and makes it testable.
This commit is contained in:
		| @@ -332,5 +332,15 @@ module Linguist | ||||
|     def tm_scope | ||||
|       language && language.tm_scope | ||||
|     end | ||||
|  | ||||
|     DETECTABLE_TYPES = [:programming, :markup].freeze | ||||
|  | ||||
|     # Internal: Should this blob be included in repository language statistics? | ||||
|     def include_in_language_stats? | ||||
|       !vendored? && | ||||
|       !documentation? && | ||||
|       !generated? && | ||||
|       language && DETECTABLE_TYPES.include?(language.type) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -8,8 +8,6 @@ module Linguist | ||||
|   # Its primary purpose is for gathering language statistics across | ||||
|   # the entire project. | ||||
|   class Repository | ||||
|     DETECTABLE_TYPES = [:programming, :markup].freeze | ||||
|  | ||||
|     attr_reader :repository | ||||
|  | ||||
|     # Public: Create a new Repository based on the stats of | ||||
| @@ -158,12 +156,8 @@ module Linguist | ||||
|  | ||||
|           blob = Linguist::LazyBlob.new(repository, delta.new_file[:oid], new, mode.to_s(8)) | ||||
|  | ||||
|           # Skip vendored or generated blobs | ||||
|           next if blob.vendored? || blob.documentation? || blob.generated? || blob.language.nil? | ||||
|  | ||||
|           if DETECTABLE_TYPES.include?(blob.language.type) | ||||
|             file_map[new] = [blob.language.group.name, blob.size] | ||||
|           end | ||||
|           next unless blob.include_in_language_stats? | ||||
|           file_map[new] = [blob.language.group.name, blob.size] | ||||
|         end | ||||
|       end | ||||
|  | ||||
|   | ||||
| @@ -517,4 +517,29 @@ class TestBlob < Minitest::Test | ||||
|     refute blob.new(" ").empty? | ||||
|     refute blob.new("nope").empty? | ||||
|   end | ||||
|  | ||||
|   def test_include_in_language_stats | ||||
|     vendored = sample_blob("bower_components/custom/custom.js") | ||||
|     assert_predicate vendored, :vendored? | ||||
|     refute_predicate vendored, :include_in_language_stats? | ||||
|  | ||||
|     documentation = fixture_blob("README") | ||||
|     assert_predicate documentation, :documentation? | ||||
|     refute_predicate documentation, :include_in_language_stats? | ||||
|  | ||||
|     generated = sample_blob("CSS/bootstrap.min.css") | ||||
|     assert_predicate generated, :generated? | ||||
|     refute_predicate generated, :include_in_language_stats? | ||||
|  | ||||
|     data = sample_blob("Ant Build System/filenames/ant.xml") | ||||
|     assert_equal :data, data.language.type | ||||
|     refute_predicate data, :include_in_language_stats? | ||||
|  | ||||
|     prose = sample_blob("Markdown/tender.md") | ||||
|     assert_equal :prose, prose.language.type | ||||
|     refute_predicate prose, :include_in_language_stats? | ||||
|  | ||||
|     included = sample_blob("HTML/pages.html") | ||||
|     assert_predicate included, :include_in_language_stats? | ||||
|   end | ||||
| end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user