Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { basename } from 'path'
|
|
import glob from 'glob'
|
|
import index from '@next/eslint-plugin-next'
|
|
|
|
const getRuleNameFromRulePath = (path) => basename(path, '.js')
|
|
const rulePaths = glob.sync('packages/eslint-plugin-next/dist/rules/*js', {
|
|
absolute: true,
|
|
})
|
|
|
|
describe('@next/eslint-plugin-next index', () => {
|
|
it('should include all defined rules and no extra / undefined rules', () => {
|
|
const rules = rulePaths.map((rulePath) => getRuleNameFromRulePath(rulePath))
|
|
|
|
expect(index.rules).toContainAllKeys(rules)
|
|
})
|
|
|
|
it('should have meta information', () => {
|
|
expect(index.meta).toBeDefined()
|
|
expect(index.meta.name).toBe('@next/eslint-plugin-next')
|
|
})
|
|
|
|
it('should have proper flat config structure for recommended', () => {
|
|
const config = index.configs.recommended
|
|
expect(config.name).toBe('next/recommended')
|
|
expect(config.rules).toBeDefined()
|
|
})
|
|
|
|
it('should have proper flat config structure for core-web-vitals', () => {
|
|
const config = index.configs['core-web-vitals']
|
|
expect(config.name).toBe('next/core-web-vitals')
|
|
expect(config.rules).toBeDefined()
|
|
})
|
|
|
|
it('should have legacy recommended config', () => {
|
|
const config = index.configs['recommended-legacy']
|
|
expect(config.plugins).toContain('@next/next')
|
|
expect(config.rules).toBeDefined()
|
|
})
|
|
|
|
it('should have legacy core-web-vitals config', () => {
|
|
const config = index.configs['core-web-vitals-legacy']
|
|
expect(config.plugins).toContain('@next/next')
|
|
expect(config.extends).toContain('plugin:@next/next/recommended-legacy')
|
|
expect(config.rules).toBeDefined()
|
|
})
|
|
|
|
rulePaths.forEach((rulePath) => {
|
|
let rule = require(rulePath)
|
|
rule = rule.default ?? rule
|
|
const ruleName = getRuleNameFromRulePath(rulePath)
|
|
const { recommended = false } = rule.meta.docs
|
|
|
|
it(`${ruleName}: recommend should be \`${recommended}\``, () => {
|
|
expect(`@next/next/${ruleName}` in index.configs.recommended.rules).toBe(
|
|
recommended
|
|
)
|
|
})
|
|
})
|
|
})
|