1
0
mirror of https://github.com/github/choosealicense.com synced 2024-06-09 12:47:49 +02:00
choosealicense.com/spec/license_meta_spec.rb

69 lines
2.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2017-03-27 02:19:44 +02:00
2015-08-22 21:25:16 +02:00
require 'spec_helper'
2016-02-08 21:37:19 +01:00
describe 'license meta' do
2016-01-20 16:20:04 +01:00
licenses.each do |license|
# Manually load the raw license so we don't get the defaults
raw_fields = SafeYAML.load_file("_licenses/#{license['spdx-lcase']}.txt")
2015-08-22 21:25:16 +02:00
2016-02-08 21:37:19 +01:00
context "The #{license['title']} license" do
it 'should only contain supported meta fields' do
2017-03-27 02:19:44 +02:00
extra_fields = raw_fields.keys - (meta.map { |m| m['name'] })
2016-01-20 16:20:04 +01:00
expect(extra_fields).to be_empty
end
2015-08-22 21:25:16 +02:00
2016-02-08 21:37:19 +01:00
it 'should contain all required meta fields' do
required = meta.select { |m| m['required'] }.map { |m| m['name'] }
2016-01-20 16:20:04 +01:00
missing = required - raw_fields.keys
2015-08-22 21:25:16 +02:00
expect(missing).to be_empty
end
2017-05-30 23:17:13 +02:00
2020-10-03 10:34:50 +02:00
examples = raw_fields['using'] || {}
2017-05-30 23:17:13 +02:00
it 'using contains 3 examples' do
legacy = [
'afl-3.0',
'artistic-2.0',
'bsd-3-clause-clear',
'eupl-1.1',
'lgpl-2.1',
'lgpl-3.0',
'lppl-1.3c',
'ms-pl',
'ms-rl',
2019-11-18 19:32:39 +01:00
'wtfpl'
2017-05-30 23:17:13 +02:00
]
skip 'added before 3 using examples required' if legacy.include?(license['slug'])
expect(examples.length).to eq(3)
end
context 'licensee detects using examples' do
2017-11-27 21:56:25 +01:00
slug = license['slug']
2020-10-03 10:34:50 +02:00
examples.each_value do |example_url|
2017-11-27 21:56:25 +01:00
context "the #{example_url} URL" do
let(:content) { OpenURI.open_uri(example_url).read }
2017-11-27 21:56:25 +01:00
let(:detected) { Licensee::ProjectFiles::LicenseFile.new(content, 'LICENSE').license }
if example_url.start_with?('https://github.com/')
example_url.gsub!(%r{\Ahttps://github.com/([\w-]+/[\w.-]+)/blob/(\S+)\z}, 'https://raw.githubusercontent.com/\1/\2')
2022-09-26 18:53:00 +02:00
elsif example_url.start_with?('https://git.savannah.gnu.org/', 'https://git.gnome.org/', 'https://code.qt.io')
2017-11-27 21:56:25 +01:00
example_url.gsub!(%r{/tree/}, '/plain/')
elsif example_url.start_with?('https://bitbucket.org/')
example_url.gsub!(%r{/src/}, '/raw/')
2021-08-24 17:58:37 +02:00
elsif example_url.start_with?('https://ohwr.org/')
example_url.gsub!(%r{/blob/}, '/raw/')
2017-11-27 21:56:25 +01:00
end
it "is a #{slug} license" do
skip 'hard to detect licenses' if %(ncsa postgresql vim).include?(slug) && detected.key == 'other'
2017-11-27 21:56:25 +01:00
expect(detected.key).to eq(slug)
end
end
end
end
2015-08-22 21:25:16 +02:00
end
end
end