From c3ee25021a9aaeae72aae43de5fc162f96e26a8c Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Fri, 22 Dec 2023 20:28:48 +0900 Subject: [PATCH] Add GitHub Workflow --- .github/workflows/tests.yml | 112 +++++++++++++++++++++++++ Gemfile | 13 +-- bin/rake | 27 ++++++ omniauth-rails_csrf_protection.gemspec | 12 ++- test/test_helper.rb | 7 +- 5 files changed, 163 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/tests.yml create mode 100755 bin/rake diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..c5b48ab --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,112 @@ +name: tests + +on: [push, pull_request] + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - ruby: "2.4" + rails: ~> 4.2.0 + bundler: 1.17.3 + - ruby: "2.4" + rails: ~> 5.0.0 + - ruby: "2.4" + rails: ~> 5.1.0 + - ruby: "2.4" + rails: ~> 5.2.0 + + - ruby: "2.5" + rails: ~> 5.0.0 + - ruby: "2.5" + rails: ~> 5.1.0 + - ruby: "2.5" + rails: ~> 5.2.0 + - ruby: "2.5" + rails: ~> 6.0.0 + - ruby: "2.5" + rails: ~> 6.1.0 + + - ruby: "2.6" + rails: ~> 5.0.0 + - ruby: "2.6" + rails: ~> 5.1.0 + - ruby: "2.6" + rails: ~> 5.2.0 + - ruby: "2.6" + rails: ~> 6.0.0 + - ruby: "2.6" + rails: ~> 6.1.0 + + - ruby: "2.7" + rails: ~> 5.0.0 + - ruby: "2.7" + rails: ~> 5.1.0 + - ruby: "2.7" + rails: ~> 5.2.0 + - ruby: "2.7" + rails: ~> 6.0.0 + - ruby: "2.7" + rails: ~> 6.1.0 + - ruby: "2.7" + rails: ~> 7.0.0 + - ruby: "2.7" + rails: ~> 7.1.0 + + - ruby: "3.0" + rails: ~> 6.0.0 + - ruby: "3.0" + rails: ~> 6.1.0 + - ruby: "3.0" + rails: ~> 7.0.0 + - ruby: "3.0" + rails: ~> 7.1.0 + + - ruby: "3.1" + rails: ~> 6.0.0 + - ruby: "3.1" + rails: ~> 6.1.0 + - ruby: "3.1" + rails: ~> 7.0.0 + - ruby: "3.1" + rails: ~> 7.1.0 + - ruby: "3.1" + rails: edge + + - ruby: "3.2" + rails: ~> 6.0.0 + - ruby: "3.2" + rails: ~> 6.1.0 + - ruby: "3.2" + rails: ~> 7.0.0 + - ruby: "3.2" + rails: ~> 7.1.0 + - ruby: "3.2" + rails: edge + + - ruby: head + rails: ~> 6.0.0 + - ruby: head + rails: ~> 6.1.0 + - ruby: head + rails: ~> 7.0.0 + - ruby: head + rails: ~> 7.1.0 + - ruby: head + rails: edge + + env: + RAILS_VERSION: ${{ matrix.rails }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler: ${{ matrix.bundler }} + - name: Run bundle update + run: bundle update + - name: Run tests + run: bin/rake diff --git a/Gemfile b/Gemfile index bc6069d..a264c36 100644 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,12 @@ source "https://rubygems.org" -# rubocop:disable Bundler/DuplicatedGem -if ENV["RAILS_VERSION"] - gem "rails", ENV["RAILS_VERSION"] -elsif ENV["RAILS_BRANCH"] - gem "rails", git: "https://github.com/rails/rails.git", branch: ENV["RAILS_BRANCH"] +if ENV["RAILS_VERSION"] == "edge" + gem "rails", git: "https://github.com/rails/rails.git", branch: "main" +end + +# Lock loofah to old version for Ruby 2.4 +unless RUBY_VERSION > "2.5" + gem "loofah", "~> 2.20.0" end -# rubocop:enable Bundler/DuplicatedGem gemspec diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000..4eb7d7b --- /dev/null +++ b/bin/rake @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rake' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rake", "rake") diff --git a/omniauth-rails_csrf_protection.gemspec b/omniauth-rails_csrf_protection.gemspec index 4f65266..652b237 100644 --- a/omniauth-rails_csrf_protection.gemspec +++ b/omniauth-rails_csrf_protection.gemspec @@ -32,6 +32,16 @@ Gem::Specification.new do |spec| spec.add_development_dependency "bundler" spec.add_development_dependency "minitest" - spec.add_development_dependency "rails" + + if RUBY_VERSION > "3.4" + # This gem is required for rails <= 7.1.0 + spec.add_development_dependency "mutex_m" + end + + # We set requirement for Edge Rails in the Gemfile + unless ENV["RAILS_VERSION"] == "edge" + spec.add_development_dependency "rails", ENV["RAILS_VERSION"] + end + spec.add_development_dependency "rake" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 8f6cd39..ab3c89d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -18,7 +18,12 @@ def silence_warnings gemfile do source "https://rubygems.org" - gem "rails" + if ENV["RAILS_VERSION"] == "edge" + gem "rails", git: "https://github.com/rails/rails.git", branch: "main" + else + gem "rails" + end + gem "omniauth" gem "omniauth-rails_csrf_protection", path: File.expand_path("..", __dir__) end