Skip to content

Commit

Permalink
Add ignore_databases to incorrect_boolean_presence_validation
Browse files Browse the repository at this point in the history
This commit adds a new option for ignoring entire databases and models
backed by them. incorrect_boolean_presence_validation is the first
detector that gained that new option.
  • Loading branch information
gregnavis committed Oct 20, 2023
1 parent 7c13cbd commit 168d951
Show file tree
Hide file tree
Showing 13 changed files with 381 additions and 219 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Lint
on: [push, pull_request]

jobs:
# Run the linter first for rapid feedback if some trivial stylistic issues
# slipped through the cracks.
lint:
runs-on: ubuntu-latest
env:
# When running in CI the gemspec does NOT pull rubocop as a dependency
# to avoid conflicting with various Ruby/Rails setups. We need to
# set LINT to explicitly request rubocop as a dependency.
LINT: true
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0
bundler-cache: true
- run: bundle exec rake rubocop
149 changes: 149 additions & 0 deletions .github/workflows/mysql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
name: Test MySQL
on: [push, pull_request]

jobs:
test-latest:
name: "Active Record 7.1 + Ruby 3.2"
runs-on: ubuntu-latest
services:
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: github
MYSQL_USER: github
MYSQL_PASSWORD: github
MYSQL_DATABASE: active_record_doctor_primary
options: >-
--health-cmd "mysqladmin ping -h 127.0.0.1"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 3306:3306
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-7.1.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- name: Prepare the database
run: |
mysqladmin -h127.0.0.1 -uroot -pgithub create active_record_doctor_secondary
mysql -h127.0.0.1 -uroot -pgithub -e "GRANT ALL PRIVILEGES ON active_record_doctor_secondary.* TO 'github'"
- name: Run the test suite against MySQL
run: bundle exec rake test:mysql2
env:
# We can't use localhost because that makes the MySQL client try
# connecting via a Unix socket instead of TCP.
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: 3306
DATABASE_USERNAME: github
DATABASE_PASSWORD: github

test-supported:
name: "Active Record ${{ matrix.active_record }} + Ruby ${{ matrix.ruby }}"
needs: [test-latest]
runs-on: ubuntu-latest
services:
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: github
MYSQL_USER: github
MYSQL_PASSWORD: github
MYSQL_DATABASE: active_record_doctor_primary
options: >-
--health-cmd "mysqladmin ping -h 127.0.0.1"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 3306:3306
strategy:
matrix:
ruby: ["3.0", "3.1", "3.2"]
active_record: ["6.1", "7.0", "7.1"]
exclude:
- ruby: "3.2"
active_record: "7.1"
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-${{ matrix.active_record }}.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Prepare the database
run: |
mysqladmin -h127.0.0.1 -uroot -pgithub create active_record_doctor_secondary
mysql -h127.0.0.1 -uroot -pgithub -e "GRANT ALL PRIVILEGES ON active_record_doctor_secondary.* TO 'github'"
- name: Run the test suite against MySQL
run: bundle exec rake test:mysql2
env:
# We can't use localhost because that makes the MySQL client try
# connecting via a Unix socket instead of TCP.
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: 3306
DATABASE_USERNAME: github
DATABASE_PASSWORD: github

test-unsupported:
name: "Active Record ${{ matrix.active_record }} + Ruby ${{ matrix.ruby }}"
needs: [test-supported]
runs-on: ubuntu-latest
services:
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: github
MYSQL_USER: github
MYSQL_PASSWORD: github
MYSQL_DATABASE: active_record_doctor_primary
options: >-
--health-cmd "mysqladmin ping -h 127.0.0.1"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 3306:3306
strategy:
matrix:
ruby: ["2.4", "2.5", "2.6", "2.7"]
active_record: ["4.2", "5.0", "5.1", "5.2", "6.0"]
exclude:
- ruby: "2.7"
active_record: "4.2"
- ruby: "2.4"
active_record: "6.0"
include:
- ruby: "3.0"
active_record: "6.0"
- ruby: "3.1"
active_record: "6.0"
- ruby: "3.2"
active_record: "6.0"
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-${{ matrix.active_record }}.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ (matrix.ruby == '2.4' || matrix.ruby == '2.5' || matrix.ruby == '2.6') && '3.2.3' || '' }}
bundler-cache: true
- name: Prepare the database
run: |
mysqladmin -h127.0.0.1 -uroot -pgithub create active_record_doctor_secondary
mysql -h127.0.0.1 -uroot -pgithub -e "GRANT ALL PRIVILEGES ON active_record_doctor_secondary.* TO 'github'"
- name: Run the test suite against MySQL
run: bundle exec rake test:mysql2
env:
# We can't use localhost because that makes the MySQL client try
# connecting via a Unix socket instead of TCP.
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: 3306
DATABASE_USERNAME: github
DATABASE_PASSWORD: github
154 changes: 154 additions & 0 deletions .github/workflows/postgresql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
name: Test PostgreSQL
on: [push, pull_request]

jobs:
test-latest:
name: "Active Record 7.1 + Ruby 3.2"
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_DB: active_record_doctor_primary
POSTGRES_USER: github
POSTGRES_PASSWORD: github
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-7.1.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- name: Prepare PostgreSQL
run: createdb active_record_doctor_secondary
env:
PGHOST: localhost
PGPORT: 5432
PGUSER: github
PGPASSWORD: github
PGDATABASE: postgres
- name: Run the test suite against PostgreSQL
run: bundle exec rake test:postgresql
env:
DATABASE_HOST: localhost
DATABASE_PORT: 5432
DATABASE_USERNAME: github
DATABASE_PASSWORD: github

test-supported:
name: "Active Record ${{ matrix.active_record }} + Ruby ${{ matrix.ruby }}"
needs: [test-latest]
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_DB: active_record_doctor_primary
POSTGRES_USER: github
POSTGRES_PASSWORD: github
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
strategy:
matrix:
ruby: ["3.0", "3.1", "3.2"]
active_record: ["6.1", "7.0", "7.1"]
exclude:
- ruby: "3.2"
active_record: "7.1"
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-${{ matrix.active_record }}.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler-cache: true
- name: Prepare PostgreSQL
run: createdb active_record_doctor_secondary
env:
PGHOST: localhost
PGPORT: 5432
PGUSER: github
PGPASSWORD: github
PGDATABASE: postgres
- name: Run the test suite against PostgreSQL
run: bundle exec rake test:postgresql
env:
DATABASE_HOST: localhost
DATABASE_PORT: 5432
DATABASE_USERNAME: github
DATABASE_PASSWORD: github

test-unsupported:
name: "Active Record ${{ matrix.active_record }} + Ruby ${{ matrix.ruby }}"
needs: [test-supported]
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_DB: active_record_doctor_primary
POSTGRES_USER: github
POSTGRES_PASSWORD: github
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
strategy:
matrix:
ruby: ["2.4", "2.5", "2.6", "2.7"]
active_record: ["4.2", "5.0", "5.1", "5.2", "6.0"]
exclude:
- ruby: "2.7"
active_record: "4.2"
- ruby: "2.4"
active_record: "6.0"
include:
- ruby: "3.0"
active_record: "6.0"
- ruby: "3.1"
active_record: "6.0"
- ruby: "3.2"
active_record: "6.0"
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/Gemfile.activerecord-${{ matrix.active_record }}.x
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ (matrix.ruby == '2.4' || matrix.ruby == '2.5' || matrix.ruby == '2.6') && '3.2.3' || '' }}
bundler-cache: true
- name: Prepare PostgreSQL
if: startsWith(matrix.active_record, '6.') || startsWith(matrix.active_record, '7.')
run: createdb active_record_doctor_secondary
env:
PGHOST: localhost
PGPORT: 5432
PGUSER: github
PGPASSWORD: github
PGDATABASE: postgres
- name: Run the test suite against PostgreSQL
run: bundle exec rake test:postgresql
env:
DATABASE_HOST: localhost
DATABASE_PORT: 5432
DATABASE_USERNAME: github
DATABASE_PASSWORD: github

0 comments on commit 168d951

Please sign in to comment.