diff --git a/Gemfile b/Gemfile index d1d35c1..d94f79e 100644 --- a/Gemfile +++ b/Gemfile @@ -6,4 +6,5 @@ gem "github-pages" group :test do gem "html-proofer" gem "rake" + gem "rspec" end diff --git a/Gemfile.lock b/Gemfile.lock index 5c37f6a..be4f558 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,56 +2,66 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.2.9) - activesupport (4.1.5) - i18n (~> 0.6, >= 0.6.9) + activesupport (4.2.0) + i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) - thread_safe (~> 0.1) + thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + addressable (2.3.7) blankslate (2.1.2.4) celluloid (0.16.0) timers (~> 4.0.0) - classifier-reborn (2.0.1) + classifier-reborn (2.0.3) fast-stemmer (~> 1.0) coffee-script (2.3.0) coffee-script-source execjs - coffee-script-source (1.8.0) + coffee-script-source (1.9.1) colorator (0.1) colored (1.2) - ethon (0.7.1) + diff-lcs (1.2.5) + ethon (0.7.3) ffi (>= 1.3.0) - execjs (2.2.1) + execjs (2.4.0) fast-stemmer (1.0.2) - ffi (1.9.3) + ffi (1.9.6) gemoji (2.1.0) - github-pages (24) + github-pages (33) RedCloth (= 4.2.9) - jekyll (= 2.3.0) - jekyll-coffeescript (= 1.0.0) - jekyll-mentions (= 0.1.3) - jekyll-redirect-from (= 0.6.0) + github-pages-health-check (~> 0.2) + jekyll (= 2.4.0) + jekyll-coffeescript (= 1.0.1) + jekyll-mentions (= 0.2.1) + jekyll-redirect-from (= 0.6.2) jekyll-sass-converter (= 1.2.0) - jekyll-sitemap (= 0.5.1) - jemoji (= 0.3.0) - kramdown (= 1.3.1) + jekyll-sitemap (= 0.6.3) + jemoji (= 0.4.0) + kramdown (= 1.5.0) liquid (= 2.6.1) maruku (= 0.7.0) - pygments.rb (= 0.6.0) + mercenary (~> 0.3) + pygments.rb (= 0.6.1) rdiscount (= 2.1.7) redcarpet (= 3.1.2) + terminal-table (~> 1.4) + github-pages-health-check (0.2.2) + net-dns (~> 0.6) + public_suffix (~> 1.4) hitimes (1.2.2) html-pipeline (1.9.0) activesupport (>= 2) nokogiri (~> 1.4) - html-proofer (1.3.3) + html-proofer (2.1.0) + addressable (~> 2.3) colored (~> 1.2) mercenary (~> 0.3.2) nokogiri (~> 1.5) - typhoeus (~> 0.6.7) + parallel (~> 1.3) + typhoeus (~> 0.7) yell (~> 2.0) - i18n (0.6.11) - jekyll (2.3.0) + i18n (0.7.0) + jekyll (2.4.0) classifier-reborn (~> 2.0) colorator (~> 0.1) jekyll-coffeescript (~> 1.0) @@ -66,62 +76,79 @@ GEM redcarpet (~> 3.1) safe_yaml (~> 1.0) toml (~> 0.1.0) - jekyll-coffeescript (1.0.0) + jekyll-coffeescript (1.0.1) coffee-script (~> 2.2) jekyll-gist (1.1.0) - jekyll-mentions (0.1.3) + jekyll-mentions (0.2.1) html-pipeline (~> 1.9.0) jekyll (~> 2.0) - jekyll-paginate (1.0.0) - jekyll-redirect-from (0.6.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.6.2) jekyll (~> 2.0) jekyll-sass-converter (1.2.0) sass (~> 3.2) - jekyll-sitemap (0.5.1) - jekyll-watch (1.1.0) + jekyll-sitemap (0.6.3) + jekyll-watch (1.2.1) listen (~> 2.7) - jemoji (0.3.0) + jemoji (0.4.0) gemoji (~> 2.0) html-pipeline (~> 1.9) jekyll (~> 2.0) - json (1.8.1) - kramdown (1.3.1) + json (1.8.2) + kramdown (1.5.0) liquid (2.6.1) - listen (2.7.9) + listen (2.8.5) celluloid (>= 0.15.2) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) maruku (0.7.0) - mercenary (0.3.4) - mini_portile (0.6.0) - minitest (5.4.1) - nokogiri (1.6.3.1) - mini_portile (= 0.6.0) + mercenary (0.3.5) + mini_portile (0.6.2) + minitest (5.5.1) + net-dns (0.8.0) + nokogiri (1.6.6.2) + mini_portile (~> 0.6.0) + parallel (1.4.1) parslet (1.5.0) blankslate (~> 2.0) - posix-spawn (0.3.9) - pygments.rb (0.6.0) + posix-spawn (0.3.10) + public_suffix (1.4.6) + pygments.rb (0.6.1) posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.1.0) - rake (10.3.2) + yajl-ruby (~> 1.2.0) + rake (10.4.2) rb-fsevent (0.9.4) rb-inotify (0.9.5) ffi (>= 0.5.0) rdiscount (2.1.7) redcarpet (3.1.2) - safe_yaml (1.0.3) - sass (3.4.3) + rspec (3.2.0) + rspec-core (~> 3.2.0) + rspec-expectations (~> 3.2.0) + rspec-mocks (~> 3.2.0) + rspec-core (3.2.1) + rspec-support (~> 3.2.0) + rspec-expectations (3.2.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.2.0) + rspec-mocks (3.2.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.2.0) + rspec-support (3.2.2) + safe_yaml (1.0.4) + sass (3.4.13) + terminal-table (1.4.5) thread_safe (0.3.4) - timers (4.0.0) + timers (4.0.1) hitimes - toml (0.1.1) + toml (0.1.2) parslet (~> 1.5.0) - typhoeus (0.6.9) + typhoeus (0.7.1) ethon (>= 0.7.1) tzinfo (1.2.2) thread_safe (~> 0.1) - yajl-ruby (1.1.0) - yell (2.0.4) + yajl-ruby (1.2.1) + yell (2.0.5) PLATFORMS ruby @@ -130,3 +157,4 @@ DEPENDENCIES github-pages html-proofer rake + rspec diff --git a/Rakefile b/Rakefile index ed29cdb..bdf2207 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,11 @@ require "html/proofer" +require 'rspec/core/rake_task' + +desc "Run specs" +RSpec::Core::RakeTask.new do |t| + t.pattern = 'spec/**/*_spec.rb' + t.rspec_opts = ["--order", "rand", "--color"] +end task :test do sh "bundle exec jekyll build --trace" diff --git a/_licenses/apache-2.0.txt b/_licenses/apache-2.0.txt index 752ee33..37d448e 100644 --- a/_licenses/apache-2.0.txt +++ b/_licenses/apache-2.0.txt @@ -18,7 +18,7 @@ source: http://www.apache.org/licenses/LICENSE-2.0.html required: - include-copyright - document-changes - + permitted: - commercial-use - modifications diff --git a/_licenses/cc0.txt b/_licenses/cc0.txt index 751b9fd..3be061e 100644 --- a/_licenses/cc0.txt +++ b/_licenses/cc0.txt @@ -25,6 +25,8 @@ permitted: forbidden: - no-liability +required: [] + --- CC0 1.0 Universal @@ -141,4 +143,4 @@ Affirmer's express Statement of Purpose. CC0 or use of the Work. For more information, please see - \ No newline at end of file + diff --git a/_licenses/unlicense.txt b/_licenses/unlicense.txt index d8d328c..020b0be 100644 --- a/_licenses/unlicense.txt +++ b/_licenses/unlicense.txt @@ -25,6 +25,8 @@ permitted: forbidden: - no-liability +required: [] + --- This is free and unencumbered software released into the public domain. diff --git a/spec/license_spec.rb b/spec/license_spec.rb new file mode 100644 index 0000000..d77d26c --- /dev/null +++ b/spec/license_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +licenses.each do |license| + describe "The #{license["title"]} license" do + it "should have a title" do + expect(license["title"]).to_not be_nil + end + + it "should have a description" do + expect(license["description"]).to_not be_nil + end + + ["permitted", "required", "forbidden"].each do |group| + describe "#{group} properties" do + it "should list the properties" do + expect(license[group]).to_not be_nil + end + + license[group].to_a.each do |tag| + describe "#{tag} tag" do + it "should be a valid tag" do + expect(rule?(tag,group)).to be(true) + end + end + end + end + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..95d8bdd --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,36 @@ +require 'jekyll' + +def config_file + File.expand_path "./_config.yml", source +end + +def source + File.expand_path("../", File.dirname(__FILE__)) +end + +def config + config = Jekyll::Configuration.new.read_config_file config_file + config = Jekyll::Utils.deep_merge_hashes(config, {:source => source}) + Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, config) +end + +def licenses + site.collections["licenses"].docs.map { |l| l.data } +end + +def site + $site ||= begin + site = Jekyll::Site.new(config) + site.reset + site.read + site + end +end + +def rules + site.data["rules"] +end + +def rule?(tag, group) + rules[group].any? { |r| r["tag"] == tag } +end