1
0
mirror of https://github.com/github/choosealicense.com synced 2024-12-22 12:50:24 +01:00

better error output

This commit is contained in:
Ben Balter 2016-01-20 10:20:04 -05:00
parent b7204165de
commit 5531742d10
5 changed files with 84 additions and 74 deletions

View File

@ -1,29 +1,31 @@
require 'spec_helper' require 'spec_helper'
families.each do |family| describe "license categories" do
describe "the #{family} family" do families.each do |family|
family_licenses = licenses.select { |l| l["family"] == family } context "the #{family} family" do
primary = family_licenses.select { |l| l["variant"] == false } family_licenses = licenses.select { |l| l["family"] == family }
variants = family_licenses.select { |l| l["variant"] == true } primary = family_licenses.select { |l| l["variant"] == false }
variants = family_licenses.select { |l| l["variant"] == true }
it "should only have one primary license" do it "should only have one primary license" do
expect(primary.count).to eql(1) expect(primary.count).to eql(1)
end end
it "all other licenses should be variants" do it "all other licenses should be variants" do
expected = family_licenses.count - 1 expected = family_licenses.count - 1
expect(variants.count).to eql(expected) expect(variants.count).to eql(expected)
end end
family_licenses.each do |license| family_licenses.each do |license|
describe "the #{license["title"]} license" do context "the #{license["title"]} license" do
it "should have a unique slug" do it "should have a unique slug" do
dupes = family_licenses.select { |l| l["tab-slug"] == license["tab-slug"] }.count dupes = family_licenses.select { |l| l["tab-slug"] == license["tab-slug"] }.count
expect(dupes).to eql(1) expect(dupes).to eql(1)
end end
it "should have a valid tab-slug" do it "should have a valid tab-slug" do
expect(license["tab-slug"]).to match(/[a-z0-9_]/) expect(license["tab-slug"]).to match(/[a-z0-9_]/)
end
end end
end end
end end

View File

@ -1,11 +1,13 @@
require 'spec_helper' require 'spec_helper'
licenses.each do |license| describe "license fillable fields" do
describe "The #{license["title"]} license" do licenses.each do |license|
it "should only contain supported fields" do context "The #{license["title"]} license" do
matches = license["content"].scan /\[([a-z]+)\]/ it "should only contain supported fillable fields" do
extra_fields = matches.flatten - fields.map { |f| f["name"] } matches = license["content"].scan(/\[([a-z]+)\]/)
expect(extra_fields).to be_empty extra_fields = matches.flatten - fields.map { |f| f["name"] }
expect(extra_fields).to be_empty
end
end end
end end
end end

View File

@ -1,31 +1,33 @@
require 'spec_helper' require 'spec_helper'
licenses.each do |license| describe "license meta" do
licenses.each do |license|
# Manually load the raw license so we don't get thed defaults # Manually load the raw license so we don't get thed defaults
raw_fields = SafeYAML.load_file("_licenses/#{license["id"]}.txt") raw_fields = SafeYAML.load_file("_licenses/#{license["id"]}.txt")
describe "The #{license["title"]} license" do context "The #{license["title"]} license" do
it "should only contain supported meta fields" do it "should only contain supported meta fields" do
extra_fields = raw_fields.keys - meta.map { |m| m["name"] } extra_fields = raw_fields.keys - meta.map { |m| m["name"] }
expect(extra_fields).to be_empty expect(extra_fields).to be_empty
end end
it "should contain all required meta fields" do it "should contain all required meta fields" do
required = meta.select { |m| m["required"] }.map { |m| m["name"] } required = meta.select { |m| m["required"] }.map { |m| m["name"] }
missing = required - raw_fields.keys missing = required - raw_fields.keys
expect(missing).to be_empty
end
if license["family"]
it "should contain the required license variant fields" do
missing = ["family", "tab-slug"] - license.keys
expect(missing).to be_empty expect(missing).to be_empty
end end
else
it "should not contain license family specific fields" do if license["family"]
extra = ["variant", "family", "tab-slug"].select{ |f| raw_fields.keys.include?(f) } it "should contain the required license variant fields" do
expect(extra).to be_empty missing = ["family", "tab-slug"] - license.keys
expect(missing).to be_empty
end
else
it "should not contain license family specific fields" do
extra = ["variant", "family", "tab-slug"].select{ |f| raw_fields.keys.include?(f) }
expect(extra).to be_empty
end
end end
end end
end end

View File

@ -1,22 +1,24 @@
require 'spec_helper' require 'spec_helper'
licenses.each do |license| describe "license rules" do
licenses.each do |license|
groups = rules.keys groups = rules.keys
describe "The #{license["title"]} license" do context "The #{license["title"]} license" do
groups.each do |group| groups.each do |group|
valid_tags = rules[group].map { |r| r["tag"] } valid_tags = rules[group].map { |r| r["tag"] }
describe "the #{group} group" do context "the #{group} group" do
it "should exist" do it "should exist" do
expect(license[group]).to_not be_nil expect(license[group]).to_not be_nil
end end
it "should only contain valid tags" do it "should only contain valid tags" do
extra = license[group] - valid_tags extra = license[group] - valid_tags
expect(extra).to be_empty expect(extra).to be_empty
end
end end
end end
end end

View File

@ -1,26 +1,28 @@
require 'spec_helper' require 'spec_helper'
licenses.each do |license| describe "licenses" do
licenses.each do |license|
# "No license" isn't really a license, so no need to test # "No license" isn't really a license, so no need to test
next if license["id"] == "no-license" next if license["id"] == "no-license"
describe "The #{license["title"]} license" do context "The #{license["title"]} license" do
let(:id) { license["id"] } let(:id) { license["id"] }
it "has an SPDX ID" do it "has an SPDX ID" do
expect(spdx_ids).to include(id) expect(spdx_ids).to include(id)
end end
it "uses its SPDX name" do it "uses its SPDX name" do
spdx = find_spdx(id) spdx = find_spdx(id)
expect(spdx[1]["name"].gsub(/ only$/,"")).to eql(license["title"]) expect(spdx[1]["name"].gsub(/ only$/,"")).to eql(license["title"])
end end
context "industry approval" do context "industry approval" do
it "should be approved by OSI or FSF or OD" do it "should be approved by OSI or FSF or OD" do
expect(approved_licenses).to include(id), "See https://git.io/vzCTV." expect(approved_licenses).to include(id), "See https://git.io/vzCTV."
end
end end
end end
end end