Files
metabase/.gitignore
Chris Truter e4471f76d3 Split kondo ratchet budgets into separate prod and test files (#83383)
* Split kondo ratchet budgets into separate prod and test files

Prod and test kondo suppressions shared one .clj-kondo/ratchets.edn budget per
linter, so a pile of test-code ignores could mask a prod-code regression (or
vice versa) inside the same number. Adds .clj-kondo/ratchets-test.edn, tracking
:ignore-counts for anything under a `test` directory, independent of the prod
file's budget. :config-counts (.clj-kondo/config.edn suppressions) stays
combined in the prod file -- config.edn's own scoping mixes test and prod
namespaces in several groups, so it can't be reliably split per suppression.

Updates every consumer: dev.kondo-ratchet's fix!/check, bin/merge-kondo-ratchets,
the backport and release-cut disable scripts, the shrink workflow, and
file-paths.yaml/.gitignore.

* Fix test-ratchets validation and exemption-suggestion bugs from roborev

fix!/check read the test ratchets file with *ratchets-file* rebound to
*test-ratchets-file*, but validated it after that binding ended, so an
unknown linter there was reported against the prod path instead. Validation
now runs inside the binding, and both now reject a nonempty :config-counts
on the test file instead of letting fix! silently drop it.

kondo-insert-ignores also only ever suggested adding a new linter's
:comment-exempt to the prod file, even when every unjustified occurrence
was test-only. It now checks prod and test occurrences against each file's
own exemptions independently and names whichever file(s) actually need it.

* Dedupe test-ratchets read+validate, simplify test-occurrence?

fix! and check each rebuilt the same read-validate-test-file sequence
inline; extracted into read-validated-test-ratchets. test-occurrence?
no longer builds a throwaway set just to check one membership.

* Note what splitting :config-counts later would actually cost

* Fix Eastwood reflection warning in new test helper

empty-test-ratchets-file! returned an untyped value, so .getPath on it
needed reflection at each call site. Hinting the return type as
java.io.File fixes it -- CI's changed-tests Eastwood run caught this.

* Move return type hint onto the arg vector

Clj-Kondo prefers the hint on the arg vector to the one on the fn name.

* Move shrink PR body file reading into dev.kondo-ratchet

The bb task only parses its arguments now; reading and combining the
ratchet files lives next to shrink-pr-body, with a test.

* Give the test ratchets file its own header and drop its :config-counts

The test file was rendered with the prod header, whose last lines point
readers at ratchets-test.edn and say :config-counts "stays here" -- both
wrong inside the test file. It also carried an empty :config-counts that
the check rejects whenever it's nonempty.

render-test writes the test file with its own header and no
:config-counts, and throws on a nonempty one rather than dropping it.
fix!, the normalization check, and the three-way merge (a new "test"
kind) all use it.
2026-10-01 19:26:37 +00:00

221 lines
4.3 KiB
Plaintext

*.class
*.*.rej
*.d.css
*.iml
*.jar
*.log
*.po~
*.sqlite
*.trace.db
*.trace.db.old
*.xcworkspacedata
.DS_Store
.\#*
.cpcache
.eastwood
.bot
.idea/
.nrepl-port
.portal
.vscode
/.zed
/*.h2.db
/*.lock.db
/*.mv.db
/*.sql
/*.trace.db
/.babel_cache
/.env*
!/.env.example
/.envrc
/.workmux.yaml
/.lein-env
/.lein-failures
/.lein-plugins
/.lein-repl-history
/.sqlite.db
/backend-checksums.txt
/backend-docs
/build.xml
/checkouts
/classes
/coverage
/crate-*
/jars
/cypress
cypress.env.json
/deploy/artifacts/*
**/node_modules
/docs/**/package.json
/docs/**/yarn.lock
/frontend/test/snapshots/*
/e2e/snapshots/*
/e2e/tmp/*
!/e2e/tmp/db_dumps
/e2e/tmp/db_dumps/*
!/e2e/tmp/db_dumps/.gitkeep
/e2e/support/assets/example_custom_viz_plugin*.tgz
# Coverage artifacts
/e2e/coverage-manifest-raw
/e2e/coverage-manifest
/e2e/coverage/analysis
/e2e/coverage/spec-file-manifest.json
/e2e/coverage/spec-test-manifest.json
/e2e/coverage/openapi.json
/e2e/support/.nyc_output
/e2e/support/coverage
/e2e/support/e2e
/.nyc_output
/lein-plugins/*/target
/local
/locales/metabase-*.pot
# Pseudo-locale generated at build time
/locales/en-ZZ.po
/logs
/modules/drivers/*/resources/namespaces.edn
/modules/drivers/*/target
# Generated in-process embedder model bundles and build outputs.
/modules/embedder/resources/metabase-embedder
/modules/embedder/target
/plugins
/process.yml
/reset-password-artifacts
/resources/frontend_client/app/**/*.br
/resources/frontend_client/app/**/*.gz
/resources/frontend_client/app/**/*.hot-update.js
/resources/frontend_client/app/**/*.hot-update.json
/resources/frontend_client/app/dist/
/resources/frontend_client/app/locales/*
# Keep the directory itself: the frontend build resolves `locales/<locale>.json`
# through it, and rspack fails on a context whose directory does not exist. The
# `:translations` build step fills it in.
!/resources/frontend_client/app/locales/.gitkeep
/resources/frontend_client/app/embed.js
/resources/frontend_client/app/embedding-sdk.js
/resources/frontend_client/app/embedding-sdk.js.map
/resources/frontend_client/app/embedding-sdk/
/resources/frontend_client/tmp-*/
/resources/frontend_client/data-app.html
/resources/frontend_client/embed.html
/resources/frontend_client/embed-sdk.html
/resources/frontend_client/embed-mcp.html
/resources/frontend_client/index.html
/resources/frontend_client/public.html
/resources/embedding-sdk
/resources/i18n/*.edn
/resources/instance_analytics.zip
/resources/license-backend-third-party.txt
/resources/license-frontend-third-party.txt
/resources/metabase/config/modules.edn
/resources/namespaces.edn
/resources/sample-dataset.db.trace.db
!/resources/sample-database.*
/resources/version.properties
/screenshots
/sqlite.db
/stats.json
/storybook-static
/target
/test-report-*
/temp
**/cli-snippets-tmp/**
\#*\#
bin/release/aws-eb/metabase-aws-eb.zip
coverage-summary.json
junit.xml
pom.xml
pom.xml.asc
/profiles.clj
target/checksum.txt
xcshareddata
xcuserdata
dev/src/dev/nocommit/
dev/serialization_deltas/
*~
# TypeScript compilation artifacts
/build/
*.tsbuildinfo
/trace-output/
/temp-types/
/frontend/src/metabase-types/openapi
**/cypress_sample_database.json
**/cypress_sample_instance_data.json
/frontend/src/cljs
/frontend/src/cljs_release
.shadow-cljs
.clerk
mise.local.toml
# lsp: ignore all but the config file
**/.lsp/*
!**/.lsp/config.edn
**/.clj-kondo/.cache
# clj-kondo: ignore all except our defined config
**/.clj-kondo/*
!**/.clj-kondo/README.md
!**/.clj-kondo/config.edn
!**/.clj-kondo/ratchets.edn
!**/.clj-kondo/ratchets-test.edn
!**/.clj-kondo/config/
!**/.clj-kondo/src/
!**/.clj-kondo/test/
!**/.clj-kondo/macros/
# Editor- or environment-specific local files
*.code-workspace
.java-version
.calva/
# malli + clj-kondo: ignore malli-types
.clj-kondo/metosin/malli-types-clj
.github/static-viz-sources.yaml
# swc
.swc/
*storybook.log
# jar downloader
/jars/
# metabot
llm-payloads
/bin/bb
.aider*
/config.yml
CLAUDE.local.md
.claude/settings.local.json
.claude/agent-memory/
.eslintcache
/logs
/.clojure-mcp
# Python dependencies (pip-installed, not committed)
/resources/python-sources/sqlglot/
/resources/python-sources/sqlglot-*.dist-info/
/resources/python-sources/.lock
__pycache__/
.mcp.json
.config/wt.toml
.claude/worktrees
.claude/scheduled_tasks.lock
.playwright-mcp
.ci_reports/
# dependency-cruiser output
dependency-graph.json
.playwright-cli/
# mage modules-tree --html output
/modules.html