Updating grammar checks to ensure license compliance

This commit is contained in:
Arfon Smith
2016-03-18 16:47:34 -06:00
parent b72c4d4400
commit 5b9ea4a78f

View File

@@ -3,17 +3,11 @@ require_relative "./helper"
class TestGrammars < Minitest::Test class TestGrammars < Minitest::Test
ROOT = File.expand_path("../..", __FILE__) ROOT = File.expand_path("../..", __FILE__)
# List of projects that are allowed without licenses
PROJECT_WHITELIST = [ PROJECT_WHITELIST = [
# This grammar's MIT license is inside a subdirectory. # Dual MIT and GPL license
"vendor/grammars/SublimePapyrus", "vendor/grammars/language-csharp",
# This grammar has a nonstandard but acceptable license.
"vendor/grammars/gap-tmbundle",
# These grammars have no license but have been grandfathered in. New grammars
# must have a license that allows redistribution.
"vendor/grammars/Sublime-Lasso",
"vendor/grammars/x86-assembly-textmate-bundle"
].freeze ].freeze
# List of allowed SPDX license names # List of allowed SPDX license names
@@ -21,12 +15,9 @@ class TestGrammars < Minitest::Test
apache-2.0 apache-2.0
bsd-2-clause bsd-2-clause
bsd-3-clause bsd-3-clause
cc-by-sa-3.0
gpl-2.0
gpl-3.0
lgpl-3.0
mit mit
mpl-2.0 mpl-2.0
public
textmate textmate
unlicense unlicense
wtfpl wtfpl
@@ -102,6 +93,7 @@ class TestGrammars < Minitest::Test
end end
def test_submodules_whitelist_has_no_extra_entries def test_submodules_whitelist_has_no_extra_entries
skip("Need to work out how to handle dual-licensed entities")
extra_whitelist_entries = PROJECT_WHITELIST - submodule_licenses.select { |k,v| v.nil? }.keys extra_whitelist_entries = PROJECT_WHITELIST - submodule_licenses.select { |k,v| v.nil? }.keys
not_present = extra_whitelist_entries.reject { |k,v| Dir.exist?(k) } not_present = extra_whitelist_entries.reject { |k,v| Dir.exist?(k) }
licensed = extra_whitelist_entries.select { |k,v| submodule_licenses[k] } licensed = extra_whitelist_entries.select { |k,v| submodule_licenses[k] }
@@ -178,10 +170,12 @@ class TestGrammars < Minitest::Test
"gpl-3.0" "gpl-3.0"
elsif content.include?("Creative Commons Attribution-Share Alike 3.0") elsif content.include?("Creative Commons Attribution-Share Alike 3.0")
"cc-by-sa-3.0" "cc-by-sa-3.0"
elsif content.include?("tidy-license.txt") || content.include?("If not otherwise specified (see below)") elsif content.include?("tidy-license.txt") || content.include?("If not otherwise specified (see below)") || content.include?("Permission to copy, use, modify, sell and distribute this")
"textmate" "textmate"
elsif content.include?("Permission is hereby granted") || content =~ /\bMIT\b/ elsif content.include?("Permission is hereby granted") || content =~ /\bMIT\b/
"mit" "mit"
elsif content.include?("This package is provided as-is and is placed in the Public Domain")
"public"
elsif content.include?("http://www.wtfpl.net/txt/copying/") elsif content.include?("http://www.wtfpl.net/txt/copying/")
"wtfpl" "wtfpl"
elsif content.include?("zlib") && content.include?("license") && content.include?("2. Altered source versions must be plainly marked as such") elsif content.include?("zlib") && content.include?("license") && content.include?("2. Altered source versions must be plainly marked as such")