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
ROOT = File.expand_path("../..", __FILE__)
# List of projects that are allowed without licenses
PROJECT_WHITELIST = [
# This grammar's MIT license is inside a subdirectory.
"vendor/grammars/SublimePapyrus",
# Dual MIT and GPL license
"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
# List of allowed SPDX license names
@@ -21,12 +15,9 @@ class TestGrammars < Minitest::Test
apache-2.0
bsd-2-clause
bsd-3-clause
cc-by-sa-3.0
gpl-2.0
gpl-3.0
lgpl-3.0
mit
mpl-2.0
public
textmate
unlicense
wtfpl
@@ -102,6 +93,7 @@ class TestGrammars < Minitest::Test
end
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
not_present = extra_whitelist_entries.reject { |k,v| Dir.exist?(k) }
licensed = extra_whitelist_entries.select { |k,v| submodule_licenses[k] }
@@ -178,10 +170,12 @@ class TestGrammars < Minitest::Test
"gpl-3.0"
elsif content.include?("Creative Commons Attribution-Share Alike 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"
elsif content.include?("Permission is hereby granted") || content =~ /\bMIT\b/
"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/")
"wtfpl"
elsif content.include?("zlib") && content.include?("license") && content.include?("2. Altered source versions must be plainly marked as such")