diff --git a/.gitignore b/.gitignore index 2b0c6143..161e33cd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ pkg tmp Gemfile.lock .bundle +concourse/*.yml diff --git a/Gemfile b/Gemfile index dc80e58f..b81a455a 100644 --- a/Gemfile +++ b/Gemfile @@ -10,17 +10,13 @@ gem "crass", "~>1.0.2" gem "rake", ">=0.8", :group => [:development, :test] gem "minitest", "~>2.2", :group => [:development, :test] gem "rr", "~>1.2.0", :group => [:development, :test] -if RUBY_VERSION > '2.4' - gem "json", ">= 2.0", :group => [:development, :test] - gem "rdoc", ">= 5.0.0.beta2", :group => [:development, :test] -else - gem "json", ">=0", :group => [:development, :test] - gem "rdoc", "~>4.0", :group => [:development, :test] -end +gem "json", ">=0", :group => [:development, :test] gem "hoe-gemspec", ">=0", :group => [:development, :test] gem "hoe-debugging", ">=0", :group => [:development, :test] gem "hoe-bundler", ">=0", :group => [:development, :test] gem "hoe-git", ">=0", :group => [:development, :test] -gem "hoe", "~>3.13", :group => [:development, :test] +gem "concourse", ">=0", :group => [:development, :test] +gem "rdoc", "~>4.0", :group => [:development, :test] +gem "hoe", "~>3.15", :group => [:development, :test] # vim: syntax=ruby diff --git a/Rakefile b/Rakefile index 4f377db1..e055149a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,7 @@ require 'rubygems' gem 'hoe', '>= 2.3.0' require 'hoe' +require 'concourse' Hoe.plugin :git Hoe.plugin :gemspec @@ -12,7 +13,7 @@ Hoe.spec "loofah" do developer "Bryan Helmkamp", "bryan@brynary.com" self.extra_rdoc_files = FileList["*.rdoc"] - self.history_file = "CHANGELOG.rdoc" + self.history_file = "CHANGELOG.md" self.readme_file = "README.rdoc" self.license "MIT" @@ -27,6 +28,7 @@ Hoe.spec "loofah" do extra_dev_deps << ["hoe-debugging", ">=0"] extra_dev_deps << ["hoe-bundler", ">=0"] extra_dev_deps << ["hoe-git", ">=0"] + extra_dev_deps << ["concourse", ">=0"] end task :gemspec do @@ -73,3 +75,5 @@ desc "generate whitelists from W3C specifications" task :generate_whitelists do load "tasks/generate-whitelists" end + +Concourse.new("loofah").create_tasks! diff --git a/concourse/loofah.yml.erb b/concourse/loofah.yml.erb new file mode 100644 index 00000000..f8b8b14a --- /dev/null +++ b/concourse/loofah.yml.erb @@ -0,0 +1,220 @@ +<% +def anchorify string + string.tr '^a-zA-Z0-9', '_' +end +%> + +groups: + - name: master + jobs: + <% for ruby_version in RUBIES[:mri] %> + - "ruby-<%= ruby_version %>" + <% end %> + <% for rbx_version in RUBIES[:rbx] %> + - "rbx-<%= rbx_version %>" + <% end %> + - name: PRs + jobs: + - pr-pending + - ruby-<%= RUBIES[:mri].last %>-pr + - rbx-<%= RUBIES[:rbx].last %>-pr + - pr-success + - name: allow-failure + jobs: + <% for jruby_version in RUBIES[:jruby] %> + - "jruby-<%= jruby_version %>" + <% end %> + - "jruby-<%= RUBIES[:jruby].last %>-pr" + +resources: + - name: loofah + type: git + source: + uri: https://github.com/flavorjones/loofah/ + branch: master + ignore_paths: + - concourse/** + - name: loofah-pr + type: pull-request + source: + repo: flavorjones/loofah + access_token: {{github-repo-status-access-token}} + ignore_paths: + - concourse/** + +resource_types: +- name: pull-request + type: docker-image + source: + repository: jtarchie/pr + +jobs: + <% for ruby_version in RUBIES[:mri] %> + - name: ruby-<%= ruby_version %> + public: true + plan: + - get: loofah + trigger: true + - task: rake-test + config: &<%= anchorify "ruby-#{ruby_version}-rake-test-config" %> + image_resource: + type: docker-image + source: + repository: ruby + tag: "<%= ruby_version %>" + platform: linux + inputs: + - name: loofah + run: + dir: loofah + path: bash + args: + - "-ce" + - | + bundle config build.nokogiri --use-system-libraries + bundle install + bundle exec rake test + <% end %> + + <% for jruby_version in RUBIES[:jruby] %> + - name: jruby-<%= jruby_version %> + public: true + plan: + - get: loofah + trigger: true + - task: rake-test + config: &<%= anchorify "jruby-#{jruby_version}-rake-test-config" %> + image_resource: + type: docker-image + source: + repository: jruby + tag: "<%= jruby_version %>-jdk" + platform: linux + inputs: + - name: loofah + params: + JAVA_OPTS: "-Dfile.encoding=UTF8" # https://github.com/docker-library/openjdk/issues/32 + run: + dir: loofah + path: bash + args: + - "-ce" + - | + bundle install + bundle exec rake test + <% end %> + + <% for rbx_version in RUBIES[:rbx] %> + - name: rbx-<%= rbx_version %> + public: true + plan: + - get: loofah + trigger: true + - task: rake-test + config: &<%= anchorify "rbx-#{rbx_version}-rake-test-config" %> + image_resource: + type: docker-image + source: + repository: rubinius/docker + tag: "<%= rbx_version %>" + platform: linux + inputs: + - name: loofah + run: + dir: loofah + path: bash + args: + - "-ce" + - | + apt-get update + apt-get install -y ca-certificates gcc pkg-config libxml2-dev libxslt-dev + bundle config build.nokogiri --use-system-libraries + bundle install + bundle exec rake test + <% end %> + + - name: pr-pending + public: true + plan: + - get: loofah-pr + trigger: true + version: every + - put: loofah-pr + params: + path: loofah-pr + status: pending + + - name: pr-success + public: true + disable_manual_trigger: true + plan: + - get: loofah-pr + trigger: true + version: every + passed: + - ruby-<%= RUBIES[:mri].last %>-pr + ## allow-failure + # - jruby-<%= RUBIES[:jruby].last %>-pr + - rbx-<%= RUBIES[:rbx].last %>-pr + - put: loofah-pr + params: + path: loofah-pr + status: success + + - name: ruby-<%= RUBIES[:mri].last %>-pr + public: true + plan: + - get: loofah-pr + trigger: true + version: every + passed: [pr-pending] + - task: rake-test + config: + <<: *<%= anchorify "ruby-#{RUBIES[:mri].last}-rake-test-config" %> + inputs: + - name: loofah-pr + path: loofah + on_failure: + put: loofah-pr + params: + path: loofah-pr + status: failure + + - name: jruby-<%= RUBIES[:jruby].last %>-pr + public: true + plan: + - get: loofah-pr + trigger: true + version: every + passed: [pr-pending] + - task: rake-test + config: + <<: *<%= anchorify "jruby-#{RUBIES[:jruby].last}-rake-test-config" %> + inputs: + - name: loofah-pr + path: loofah + ## allow-failure + # on_failure: + # put: loofah-pr + # params: + # path: loofah-pr + # status: failure + + - name: rbx-<%= RUBIES[:rbx].last %>-pr + public: true + plan: + - get: loofah-pr + trigger: true + version: every + passed: [pr-pending] + - task: rake-test + config: + <<: *<%= anchorify "rbx-#{RUBIES[:rbx].last}-rake-test-config" %> + inputs: + - name: loofah-pr + path: loofah + on_failure: + put: loofah-pr + params: + path: loofah-pr + status: failure diff --git a/test/html5/test_sanitizer.rb b/test/html5/test_sanitizer.rb index 0593f71b..00bcb8b2 100755 --- a/test/html5/test_sanitizer.rb +++ b/test/html5/test_sanitizer.rb @@ -34,7 +34,7 @@ def check_sanitization(input, htmloutput, xhtmloutput, rexmloutput) def assert_completes_in_reasonable_time &block t0 = Time.now block.call - assert_in_delta t0, Time.now, 0.01 # arbitrary seconds + assert_in_delta t0, Time.now, 0.1 # arbitrary seconds end (HTML5::WhiteList::ALLOWED_ELEMENTS).each do |tag_name|