diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 2343444..27f0e77 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -1,5 +1,21 @@ name: Verify +# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions +permissions: + actions: none + checks: none + contents: none + deployments: none + id-token: none + issues: none + discussions: none + packages: none + pages: none + pull-requests: none + repository-projects: none + security-events: none + statuses: none + on: push: branches: @@ -9,51 +25,10 @@ on: - '*' jobs: - test: - runs-on: ${{ matrix.os }} - timeout-minutes: 40 - - strategy: - fail-fast: true - matrix: - ruby: - - '2.7' - - '3.0' - - '3.1' - - '3.2' - os: - - ubuntu-20.04 - - ubuntu-latest - exclude: - - { os: ubuntu-latest, ruby: '2.7' } - - { os: ubuntu-latest, ruby: '3.0' } - - env: - RAILS_ENV: test - - name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }} - steps: - - name: Install system dependencies - run: sudo apt-get install graphviz - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - bundler-cache: true - - - name: Test - run: | - bundle exec rake spec - bundle exec rake yard - - - name: Upload coverage report - uses: actions/upload-artifact@v2 - with: - name: coverage-${{ matrix.ruby }} - path: | - coverage/ - retention-days: 1 + build: + uses: rapid7/metasploit-framework/.github/workflows/shared_gem_verify_rails.yml@master + with: + dependencies: '["libpcap-dev", "graphviz"]' + test_commands: | + bundle exec rake spec + bundle exec rake yard diff --git a/Gemfile b/Gemfile index 1136bb2..e158969 100644 --- a/Gemfile +++ b/Gemfile @@ -15,5 +15,11 @@ group :test do # code coverage of tests gem 'simplecov', :require => false # in-memory database for ActiveRecord association traversal - gem 'sqlite3' + rails_version = ENV['RAILS_VERSION'].to_s[/\d+(?:\.\d+){0,2}/] + sqlite3_requirements = if rails_version && rails_version.split('.').first.to_i < 8 + ['~> 1.4'] + else + ['>= 2.1', '< 3.0'] + end + gem 'sqlite3', *sqlite3_requirements end diff --git a/metasploit-erd.gemspec b/metasploit-erd.gemspec index 3a219df..038ec57 100644 --- a/metasploit-erd.gemspec +++ b/metasploit-erd.gemspec @@ -19,13 +19,13 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ['lib'] - spec.required_ruby_version = '>= 2.7.0' + spec.required_ruby_version = '>= 3.2.0' spec.add_development_dependency 'metasploit-yard' spec.add_development_dependency 'rake' spec.add_development_dependency 'rspec' - spec.add_runtime_dependency 'activerecord', '~> 7.0' - spec.add_runtime_dependency 'activesupport', '~> 7.0' + spec.add_runtime_dependency 'activerecord', '>= 7.0', '< 8.1' + spec.add_runtime_dependency 'activesupport', '>= 7.0', '< 8.1' spec.add_runtime_dependency 'rails-erd' end diff --git a/spec/support/shared/contexts/active_record_base_descendants_cleaner.rb b/spec/support/shared/contexts/active_record_base_descendants_cleaner.rb index 2a8ac0f..c73f362 100644 --- a/spec/support/shared/contexts/active_record_base_descendants_cleaner.rb +++ b/spec/support/shared/contexts/active_record_base_descendants_cleaner.rb @@ -4,7 +4,10 @@ end after(:example) do - if ActiveRecord.version >= Gem::Version.new("7.0.0") + if ActiveRecord.version >= Gem::Version.new("8.0.0") + excluded = ActiveSupport::DescendantsTracker.instance_variable_get(:@excluded_descendants) + ActiveRecord::Base.descendants.each { |klass| excluded << klass } + elsif ActiveRecord.version >= Gem::Version.new("7.0.0") subclasses = ActiveSupport::DescendantsTracker.subclasses(ActiveRecord::Base) ActiveSupport::DescendantsTracker.clear(subclasses) else