1
0
mirror of https://github.com/github/choosealicense.com synced 2024-06-26 21:53:02 +02:00

Merge branch 'gh-pages' into gh-pages

This commit is contained in:
Emidio 2016-01-27 09:55:26 +01:00
commit ec929eb17d
31 changed files with 154 additions and 87 deletions

View File

@ -18,7 +18,7 @@ defaults:
values:
layout: license
featured: false
hidden: false
hidden: true
variant: false
exclude:
@ -41,7 +41,7 @@ gems:
- jekyll-sitemap
- jekyll-redirect-from
- jekyll-seo-tag
sass:
sass_dir: _sass
style: :compressed

View File

@ -4,8 +4,6 @@ source: http://opensource.org/licenses/afl-3.0
description: The Academic Free License is a variant of the Open Source License that does not require that the source code of derivative works be disclosed. It contains explicit copyright and patent grants and reserves trademark rights in the author.
hidden: true
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Files licensed under OSL 3.0 must also include the notice "Licensed under the Academic Free License version 3.0" adjacent to the copyright notice.
required:

View File

@ -30,6 +30,7 @@ forbidden:
- no-liability
- no-sublicense
hidden: false
---
GNU AFFERO GENERAL PUBLIC LICENSE

View File

@ -27,6 +27,7 @@ forbidden:
- trademark-use
- no-liability
hidden: false
---
Apache License

View File

@ -22,6 +22,7 @@ forbidden:
- no-liability
- trademark-use
hidden: false
---
The Artistic License 2.0

View File

@ -24,6 +24,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
Copyright (c) [year], [fullname]

View File

@ -1,7 +1,6 @@
---
title: BSD 3-clause Clear License
nickname: Clear BSD
hidden: true
family: BSD
tab-slug: bsd-3-clear

View File

@ -23,6 +23,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
Copyright (c) [year], [fullname]

View File

@ -25,6 +25,7 @@ forbidden:
required: []
hidden: false
---
CC0 1.0 Universal

View File

@ -30,6 +30,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
Eclipse Public License - v 1.0

View File

@ -29,6 +29,7 @@ forbidden:
- no-liability
- no-sublicense
hidden: false
---
GNU GENERAL PUBLIC LICENSE

View File

@ -28,6 +28,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
GNU GENERAL PUBLIC LICENSE

View File

@ -21,6 +21,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
Copyright (c) [year], [fullname]

View File

@ -29,6 +29,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
GNU LESSER GENERAL PUBLIC LICENSE

View File

@ -28,6 +28,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
GNU LESSER GENERAL PUBLIC LICENSE

View File

@ -20,6 +20,7 @@ permitted:
forbidden:
- no-liability
hidden: false
---
The MIT License (MIT)

View File

@ -23,6 +23,7 @@ forbidden:
- no-liability
- trademark-use
hidden: false
---
Mozilla Public License Version 2.0

View File

@ -1,6 +1,5 @@
---
title: Microsoft Public License
hidden: true
source: http://opensource.org/licenses/ms-pl

View File

@ -1,6 +1,5 @@
---
title: Microsoft Reciprocal License
hidden: true
source: http://opensource.org/licenses/ms-pl

View File

@ -20,6 +20,7 @@ forbidden:
- distribution
- sublicense
hidden: false
---
Copyright [year] [fullname]

View File

@ -1,7 +1,6 @@
---
title: SIL Open Font License 1.1
redirect_from: /licenses/ofl/
hidden: true
source: http://scripts.sil.org/OFL_web
description: The Open Font License (OFL) is maintained by SIL International. It attempts to be a compromise between the values of the free software and typeface design communities. It is used for almost all open source font projects, including those by Adobe, Google and Mozilla.

View File

@ -1,6 +1,5 @@
---
title: Open Software License 3.0
hidden: true
source: http://opensource.org/licenses/OSL-3.0
description: OSL 3.0 is a copyleft license that does not require reciprocal licensing on linked works. It also provides an express grant of patent rights from contributors to users, with a termination clause triggered if a user files a patent infringement lawsuit.

View File

@ -22,6 +22,7 @@ forbidden:
required: []
hidden: false
---
This is free and unencumbered software released into the public domain.

View File

@ -1,6 +1,5 @@
---
title: "Do What The F*ck You Want To Public License"
hidden: true
source: http://www.wtfpl.net/
description: The easiest licence out there. It gives the user permissions to do whatever they want with your code.

View File

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

View File

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

View File

@ -1,31 +1,33 @@
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
raw_fields = SafeYAML.load_file("_licenses/#{license["id"]}.txt")
# Manually load the raw license so we don't get thed defaults
raw_fields = SafeYAML.load_file("_licenses/#{license["id"]}.txt")
describe "The #{license["title"]} license" do
it "should only contain supported meta fields" do
extra_fields = raw_fields.keys - meta.map { |m| m["name"] }
expect(extra_fields).to be_empty
end
context "The #{license["title"]} license" do
it "should only contain supported meta fields" do
extra_fields = raw_fields.keys - meta.map { |m| m["name"] }
expect(extra_fields).to be_empty
end
it "should contain all required meta fields" do
required = meta.select { |m| m["required"] }.map { |m| m["name"] }
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
it "should contain all required meta fields" do
required = meta.select { |m| m["required"] }.map { |m| m["name"] }
missing = required - raw_fields.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
if license["family"]
it "should contain the required license variant fields" do
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

View File

@ -1,22 +1,24 @@
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
groups.each do |group|
context "The #{license["title"]} license" do
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
it "should exist" do
expect(license[group]).to_not be_nil
end
context "the #{group} group" do
it "should exist" do
expect(license[group]).to_not be_nil
end
it "should only contain valid tags" do
extra = license[group] - valid_tags
expect(extra).to be_empty
it "should only contain valid tags" do
extra = license[group] - valid_tags
expect(extra).to be_empty
end
end
end
end

View File

@ -0,0 +1,37 @@
require 'spec_helper'
describe "shown licenses" do
# Whitelist of popular licenses that are shown (non-hidden)
# Note: most new licenses that are added should be hidden by default
SHOWN_LICENSES = %w[
agpl-3.0
apache-2.0
artistic-2.0
bsd-2-clause
bsd-3-clause
cc0-1.0
epl-1.0
gpl-2.0
gpl-3.0
isc
lgpl-2.1
lgpl-3.0
mit
mpl-2.0
no-license
unlicense
]
it "has the expected number of shown licenses" do
expect(shown_licenses.count).to eql(16)
end
shown_licenses.each do |license|
context "the #{license["title"]} license" do
it "is whitelisted to be shown" do
expect(SHOWN_LICENSES).to include(license["id"])
end
end
end
end

View File

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

View File

@ -19,12 +19,22 @@ def config
end
def licenses
site.collections["licenses"].docs.map do |license|
id = File.basename(license.basename, ".txt")
license.to_liquid.merge("id" => id)
$licenses ||= begin
site.collections["licenses"].docs.map do |license|
id = File.basename(license.basename, ".txt")
license.to_liquid.merge("id" => id)
end
end
end
def hidden_licenses
licenses.select { |l| l["hidden"] }
end
def shown_licenses
licenses.select { |l| !l["hidden"] }
end
def license_ids
licenses.map { |l| l["id"] }
end