From 47a11178400b0052a480e0fdb8c7e2436827c655 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Sat, 30 Jul 2022 10:12:42 +0100 Subject: [PATCH] Switch to github actions (#56) --- .github/workflows/ci.yml | 91 +++++++++++++++++++++++++++++ .tool-versions | 2 +- .travis.yml | 38 ------------ Appraisals | 76 +++++++++++++++++++----- Gemfile | 12 ---- gemfiles/activerecord_4.2.gemfile | 8 +-- gemfiles/activerecord_5.0.gemfile | 10 +--- gemfiles/activerecord_5.1.gemfile | 8 +-- gemfiles/activerecord_5.2.gemfile | 8 +-- gemfiles/activerecord_6.0.gemfile | 8 +-- gemfiles/activerecord_6.1.gemfile | 13 +++++ gemfiles/activerecord_7.0.gemfile | 13 +++++ gemfiles/activerecord_edge.gemfile | 13 +++++ test/database.yml | 5 +- test/minitest_helper.rb | 9 +-- test/nesting_test.rb | 13 ----- test/sqlite.db | Bin 36864 -> 0 bytes 17 files changed, 204 insertions(+), 123 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml create mode 100644 gemfiles/activerecord_6.1.gemfile create mode 100644 gemfiles/activerecord_7.0.gemfile create mode 100644 gemfiles/activerecord_edge.gemfile delete mode 100644 test/sqlite.db diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..024632b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,91 @@ +--- +name: CI + +on: + - push + - pull_request + +jobs: + minitest: + runs-on: ubuntu-latest + services: + mysql: + image: mysql/mysql-server:8.0.30 + ports: + - "3306:3306" + env: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: with_advisory_lock_test + MYSQL_ROOT_HOST: '%' + postgres: + image: 'postgres:14-alpine' + ports: ['5432:5432'] + env: + POSTGRES_PASSWORD: postgres + POSTGRES_DB: with_advisory_lock_test + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + strategy: + fail-fast: false + matrix: + ruby: + - '3.0' + - '2.7' + - '2.6' + - '2.5' + rails: + - activerecord_7.0 + - activerecord_6.1 + - activerecord_6.0 + - activerecord_5.2 + - activerecord_5.1 + - activerecord_5.0 + - activerecord_4.2 + - activerecord_edge + adapter: + - sqlite + - mysql + - postgresql + exclude: + - ruby: '2.7' + rails: activerecord_4.2 + - ruby: '3.0' + rails: activerecord_4.2 + - ruby: '3.0' + rails: activerecord_5.0 + - ruby: '3.0' + rails: activerecord_5.1 + - ruby: '3.0' + rails: activerecord_5.2 + - ruby: '2.5' + rails: activerecord_7.0 + - ruby: '2.6' + rails: activerecord_7.0 + - ruby: '2.5' + rails: activerecord_edge + - ruby: '2.6' + rails: activerecord_edge + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + rubygems: latest + env: + BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile + + - name: Test + env: + DB_ADAPTER: ${{ matrix.adapter }} + BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile + WITH_ADVISORY_LOCK_PREFIX: ${{ github.run_id }} + run: bundle exec rake diff --git a/.tool-versions b/.tool-versions index 30d068a..974865f 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 2.6.4 +ruby 2.7.6 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d3dca7c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -language: ruby - -services: - - postgresql - - mysql - -addons: - postgresql: "10" - -rvm: - - 2.6.4 - - 2.5.6 - - 2.4.7 - -gemfile: - - gemfiles/activerecord_6.0.gemfile - - gemfiles/activerecord_5.2.gemfile - - gemfiles/activerecord_5.1.gemfile - - gemfiles/activerecord_5.0.gemfile - - gemfiles/activerecord_4.2.gemfile - -env: - global: - - WITH_ADVISORY_LOCK_PREFIX=$TRAVIS_JOB_ID - matrix: - - DB=postgresql - - DB=mysql MYSQL_VERSION=5.7 - - DB=sqlite -matrix: - exclude: - - rvm: 2.4.7 - gemfile: gemfiles/activerecord_6.0.gemfile - -before_install: - - mysql -e 'create database with_advisory_lock_test' - - psql -c 'create database with_advisory_lock_test' -U postgres - -script: bundle exec rake --trace diff --git a/Appraisals b/Appraisals index 67d2d55..a06be9d 100644 --- a/Appraisals +++ b/Appraisals @@ -1,29 +1,73 @@ -appraise "activerecord-4.2" do - gem "activerecord", "~> 4.2.0" +# frozen_string_literal: true + +appraise 'activerecord-4.2' do + gem 'activerecord', '~> 4.2.0' + platforms :ruby do + gem 'pg', '~> 0.21' + gem 'mysql2', '< 0.5' + gem 'sqlite3', '~> 1.3.6' + end +end + +appraise 'activerecord-5.0' do + gem 'activerecord', '~> 5.0.0' platforms :ruby do - gem "pg", "~> 0.21" - gem "mysql2", "< 0.5" - gem "sqlite3", "~> 1.3.6" + gem 'pg' + gem 'mysql2' + gem 'sqlite3' end end -appraise "activerecord-5.0" do - gem "activerecord", "~> 5.0.0" +appraise 'activerecord-5.1' do + gem 'activerecord', '~> 5.1.0' platforms :ruby do - gem "sqlite3", "~> 1.3.6" + gem 'sqlite3' + gem 'mysql2' + gem 'pg' end end -appraise "activerecord-5.1" do - gem "activerecord", "~> 5.1.0" - gem "sqlite3", "~> 1.3.6" +appraise 'activerecord-5.2' do + gem 'activerecord', '~> 5.1.0' + platforms :ruby do + gem 'sqlite3', '~> 1.3.6' + gem 'mysql2' + gem 'pg' + end end -appraise "activerecord-5.2" do - gem "activerecord", "~> 5.1.0" - gem "sqlite3", "~> 1.3.6" +appraise 'activerecord-6.0' do + gem 'activerecord', '~> 6.0.0' + platforms :ruby do + gem 'sqlite3' + gem 'mysql2' + gem 'pg' + end end -appraise "activerecord-6.0" do - gem "activerecord", "~> 6.0.0" +appraise 'activerecord-6.1' do + gem 'activerecord', '~> 6.1.0' + platforms :ruby do + gem 'sqlite3' + gem 'mysql2' + gem 'pg' + end +end + +appraise 'activerecord-7.0' do + gem 'activerecord', '~> 7.0.0' + platforms :ruby do + gem 'sqlite3' + gem 'mysql2' + gem 'pg' + end +end + +appraise 'activerecord-edge' do + gem 'activerecord', github: 'rails/rails', branch: 'main' + platforms :ruby do + gem 'sqlite3' + gem 'mysql2' + gem 'pg' + end end diff --git a/Gemfile b/Gemfile index ba1ed67..fa75df1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,15 +1,3 @@ source 'https://rubygems.org' gemspec - -platforms :ruby do - gem 'mysql2' - gem 'pg' - gem 'sqlite3' -end - -platforms :jruby do - gem 'activerecord-jdbcmysql-adapter' - gem 'activerecord-jdbcpostgresql-adapter' - gem 'activerecord-jdbcsqlite3-adapter' -end diff --git a/gemfiles/activerecord_4.2.gemfile b/gemfiles/activerecord_4.2.gemfile index 91029c5..29e2958 100644 --- a/gemfiles/activerecord_4.2.gemfile +++ b/gemfiles/activerecord_4.2.gemfile @@ -5,15 +5,9 @@ source "https://rubygems.org" gem "activerecord", "~> 4.2.0" platforms :ruby do - gem "mysql2", "< 0.5" gem "pg", "~> 0.21" + gem "mysql2", "< 0.5" gem "sqlite3", "~> 1.3.6" end -platforms :jruby do - gem "activerecord-jdbcmysql-adapter" - gem "activerecord-jdbcpostgresql-adapter" - gem "activerecord-jdbcsqlite3-adapter" -end - gemspec path: "../" diff --git a/gemfiles/activerecord_5.0.gemfile b/gemfiles/activerecord_5.0.gemfile index a9a73b2..1bfc79d 100644 --- a/gemfiles/activerecord_5.0.gemfile +++ b/gemfiles/activerecord_5.0.gemfile @@ -5,15 +5,9 @@ source "https://rubygems.org" gem "activerecord", "~> 5.0.0" platforms :ruby do - gem "mysql2" gem "pg" - gem "sqlite3", "~> 1.3.6" -end - -platforms :jruby do - gem "activerecord-jdbcmysql-adapter" - gem "activerecord-jdbcpostgresql-adapter" - gem "activerecord-jdbcsqlite3-adapter" + gem "mysql2" + gem "sqlite3" end gemspec path: "../" diff --git a/gemfiles/activerecord_5.1.gemfile b/gemfiles/activerecord_5.1.gemfile index 3f10e9d..b004c7c 100644 --- a/gemfiles/activerecord_5.1.gemfile +++ b/gemfiles/activerecord_5.1.gemfile @@ -5,15 +5,9 @@ source "https://rubygems.org" gem "activerecord", "~> 5.1.0" platforms :ruby do + gem "sqlite3" gem "mysql2" gem "pg" - gem "sqlite3", "~> 1.3.6" -end - -platforms :jruby do - gem "activerecord-jdbcmysql-adapter" - gem "activerecord-jdbcpostgresql-adapter" - gem "activerecord-jdbcsqlite3-adapter" end gemspec path: "../" diff --git a/gemfiles/activerecord_5.2.gemfile b/gemfiles/activerecord_5.2.gemfile index 3f10e9d..e5a616b 100644 --- a/gemfiles/activerecord_5.2.gemfile +++ b/gemfiles/activerecord_5.2.gemfile @@ -5,15 +5,9 @@ source "https://rubygems.org" gem "activerecord", "~> 5.1.0" platforms :ruby do + gem "sqlite3", "~> 1.3.6" gem "mysql2" gem "pg" - gem "sqlite3", "~> 1.3.6" -end - -platforms :jruby do - gem "activerecord-jdbcmysql-adapter" - gem "activerecord-jdbcpostgresql-adapter" - gem "activerecord-jdbcsqlite3-adapter" end gemspec path: "../" diff --git a/gemfiles/activerecord_6.0.gemfile b/gemfiles/activerecord_6.0.gemfile index 0e0233e..3114278 100644 --- a/gemfiles/activerecord_6.0.gemfile +++ b/gemfiles/activerecord_6.0.gemfile @@ -5,15 +5,9 @@ source "https://rubygems.org" gem "activerecord", "~> 6.0.0" platforms :ruby do + gem "sqlite3" gem "mysql2" gem "pg" - gem "sqlite3" -end - -platforms :jruby do - gem "activerecord-jdbcmysql-adapter" - gem "activerecord-jdbcpostgresql-adapter" - gem "activerecord-jdbcsqlite3-adapter" end gemspec path: "../" diff --git a/gemfiles/activerecord_6.1.gemfile b/gemfiles/activerecord_6.1.gemfile new file mode 100644 index 0000000..f647e58 --- /dev/null +++ b/gemfiles/activerecord_6.1.gemfile @@ -0,0 +1,13 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "activerecord", "~> 6.1.0" + +platforms :ruby do + gem "sqlite3" + gem "mysql2" + gem "pg" +end + +gemspec path: "../" diff --git a/gemfiles/activerecord_7.0.gemfile b/gemfiles/activerecord_7.0.gemfile new file mode 100644 index 0000000..3e360db --- /dev/null +++ b/gemfiles/activerecord_7.0.gemfile @@ -0,0 +1,13 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "activerecord", "~> 7.0.0" + +platforms :ruby do + gem "sqlite3" + gem "mysql2" + gem "pg" +end + +gemspec path: "../" diff --git a/gemfiles/activerecord_edge.gemfile b/gemfiles/activerecord_edge.gemfile new file mode 100644 index 0000000..d370fd2 --- /dev/null +++ b/gemfiles/activerecord_edge.gemfile @@ -0,0 +1,13 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "activerecord", github: "rails/rails", branch: "main" + +platforms :ruby do + gem "sqlite3" + gem "mysql2" + gem "pg" +end + +gemspec path: "../" diff --git a/test/database.yml b/test/database.yml index f27ea0c..fcaec5e 100644 --- a/test/database.yml +++ b/test/database.yml @@ -6,12 +6,15 @@ sqlite: postgresql: adapter: postgresql username: postgres + password: postgres + host: 0 database: with_advisory_lock_test min_messages: ERROR pool: 50 mysql: adapter: mysql2 - host: localhost + host: 0 username: root + password: root database: with_advisory_lock_test pool: 50 diff --git a/test/minitest_helper.rb b/test/minitest_helper.rb index 3b1b585..dc340e0 100644 --- a/test/minitest_helper.rb +++ b/test/minitest_helper.rb @@ -5,7 +5,7 @@ require 'securerandom' def env_db - (ENV['DB'] || :mysql).to_sym + ENV.fetch('DB_ADAPTER', :sqlite).to_sym end db_config = File.expand_path('database.yml', File.dirname(__FILE__)) @@ -17,15 +17,12 @@ def env_db ActiveRecord::Migration.verbose = false require 'test_models' -begin - require 'minitest' -rescue LoadError - puts 'Failed to load the minitest gem; built-in version will be used.' -end +require 'minitest' require 'minitest/autorun' require 'minitest/great_expectations' require 'mocha/setup' +puts "Testing with #{env_db} database , ActiveRecord #{ActiveRecord.gem_version} and Ruby #{RUBY_VERSION}" class MiniTest::Spec before do ENV['FLOCK_DIR'] = Dir.mktmpdir diff --git a/test/nesting_test.rb b/test/nesting_test.rb index 1bb91ad..d6fea4a 100644 --- a/test/nesting_test.rb +++ b/test/nesting_test.rb @@ -25,19 +25,6 @@ assert_empty(impl.lock_stack) end - it "raises errors with MySQL < 5.7.5 when acquiring nested lock" do - skip unless env_db == :mysql && ENV['MYSQL_VERSION'] != '5.7' - - exc = assert_raises(WithAdvisoryLock::NestedAdvisoryLockError) do - Tag.with_advisory_lock("first") do - Tag.with_advisory_lock("second") do - end - end - end - - assert_equal(%w(first), exc.lock_stack.map(&:name)) - end - it "does not raise errors with MySQL < 5.7.5 when acquiring nested error force enabled" do skip unless env_db == :mysql && ENV['MYSQL_VERSION'] != '5.7' impl = WithAdvisoryLock::Base.new(nil, nil, nil) diff --git a/test/sqlite.db b/test/sqlite.db deleted file mode 100644 index 5c73888991a0e7dfb2c55cce4ff514a227f914a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 zcmeI)J#Q097zgkfuf4V-vJXvUQ873=DHbpB3r>Inok12t1cwU_Qbe%~@n9D04eYL? zT!BQcK)R0Ns;eldxPsHw6nue5_X$pX0R&ue%{9zAj*}s=C=e1@|J6F)=b4@H%x|Ze z-BqstwBSWb+*u2{G7=Sbm~qa26oN7KM1QjSv$Li2L2@V1-+a&UsKY1h)Z(K_=LO3g z+G6w@U2y(&{+fL2v=41fJ|9&Hc?duN0uX=z1Rwwb2tWV=pB30_rqj7oQoqD+AG3Y>LM6 z!h*QAbopv+X+>PAubdG1b=m2u;aNJd8Ymg5mMf#Y(7&%Dud8O}3d8#Pl-`55VDu@4 zOBp+Nv&xz0x70@Xu%j1juIxo?{n$OIyKd>AY<44+&dtv9&7*yuaP_Y0O1JB^0~vX1 zez-4Tn=t#zW0iFkgu3!@%)^oGl_}J0JGVSLY6$xpc1!zGX?^uG@eDYhv~x#}@Rj}; zI`X#agxh~pW^cEXaTk5r-MuD-hGplD9phfVek9wPvgJkL?orZgXSX13D~`9H`UU5-dZZ2MK=sH*H4Lwx{(^XG5v-guR>0!p`9sNUF^ostV-|1J{pf=rzi?Bfe z0uX=z1Rwwb2tWV=5P$##ATUaRCM@=YzD=`zV?|7#rL37aLm4wMPiZqTN4A-$Qp!x6 zrlgsukYy&ylrR$|;%1^4um3sy$MlX30uX=z1Rwwb2tWV=5P$##AOL}}63B3CipOsd zObnm@zo$3!H@&7m=@~tx$Mk@1jn$Ab7zjWB0uX=z1Rwwb2tWV=5P-l}6mTXI#)|+> z)`-tI86%!|(ndVz*hXA+Qbv5*Ng8p*v5dIvB#gM^a3k(N|L?#5kM;jooCRna0uX=z z1Rwwb2tWV=5P$###$DihSpReSpXnVN1Rwwb2tWV=5P$##AOHafKmY>cCt&de6({t# zu>K#vi;EFK00Izz00bZa0SG_<0uX=z1O@_0i?W0N|M!y7OSnJ)0uX=z1Rwwb2tWV= z5P$##An=U{Eb`R!bgicRbuU=+yULGR>W=JnB3Gx%#d7Inv8s1boI6)Jd#+SHRVmMx w%B9gI+t2?$F#7O~j1b*`00bZa0SG_<0uX=z1Rwwb2teS=1srQSyXW@7M}tV;mH+?%