From 205c169e1a55c1e41c7f675eb631fe98d8b5a38e Mon Sep 17 00:00:00 2001 From: Bart Veneman Date: Tue, 4 Nov 2025 21:16:16 +0100 Subject: [PATCH] BREAKING: rename CLI args --- src/cli/arguments.test.ts | 46 +++++++++++++++++++-------------------- src/cli/arguments.ts | 12 +++++----- src/cli/cli.ts | 4 ++-- src/cli/program.test.ts | 22 +++++++++---------- src/cli/program.ts | 24 ++++++++------------ 5 files changed, 51 insertions(+), 57 deletions(-) diff --git a/src/cli/arguments.test.ts b/src/cli/arguments.test.ts index b5d20f9..9ece28b 100644 --- a/src/cli/arguments.test.ts +++ b/src/cli/arguments.test.ts @@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test' import { parse_arguments, validate_arguments } from './arguments' test.describe('--coverage-dir', () => { - let cov = '--min-line-coverage=1' + let cov = '--min-coverage=1' test('missing --coverage-dir', () => { expect(() => validate_arguments(parse_arguments([cov]))).toThrowError() @@ -18,51 +18,51 @@ test.describe('--coverage-dir', () => { }) }) -test.describe('--min-line-coverage', () => { +test.describe('--min-coverage', () => { let dir = '--coverage-dir=coverage' - test('missing --min-line-coverage', () => { + test('missing --min-coverage', () => { expect(() => validate_arguments(parse_arguments([dir]))).toThrowError() }) - test('empty --min-line-coverage', () => { - expect(() => validate_arguments(parse_arguments([dir, '--min-line-coverage']))).toThrowError() + test('empty --min-coverage', () => { + expect(() => validate_arguments(parse_arguments([dir, '--min-coverage']))).toThrowError() }) - test('invalid --min-line-coverage=-1', () => { - expect(() => validate_arguments(parse_arguments([dir, '--min-line-coverage=-1']))).toThrowError() + test('invalid --min-coverage=-1', () => { + expect(() => validate_arguments(parse_arguments([dir, '--min-coverage=-1']))).toThrowError() }) - test('valid --min-line-coverage=.8', () => { - let result = validate_arguments(parse_arguments([dir, '--min-line-coverage=.8'])) - expect(result['min-line-coverage']).toEqual(0.8) + test('valid --min-coverage=.8', () => { + let result = validate_arguments(parse_arguments([dir, '--min-coverage=.8'])) + expect(result['min-coverage']).toEqual(0.8) }) }) -test.describe('--min-file-line-coverage', () => { - let args = ['--coverage-dir=coverage', '--min-line-coverage=1'] +test.describe('--min-file-coverage', () => { + let args = ['--coverage-dir=coverage', '--min-coverage=1'] - test('missing --min-file-line-coverage', () => { + test('missing --min-file-coverage', () => { expect.soft(() => validate_arguments(parse_arguments([...args]))).not.toThrowError() - expect.soft(validate_arguments(parse_arguments([...args]))['min-file-line-coverage']).toEqual(0) + expect.soft(validate_arguments(parse_arguments([...args]))['min-file-coverage']).toEqual(0) }) - test('empty --min-file-line-coverage', () => { - expect.soft(() => validate_arguments(parse_arguments([...args, '--min-file-line-coverage']))).toThrowError() + test('empty --min-file-coverage', () => { + expect.soft(() => validate_arguments(parse_arguments([...args, '--min-file-coverage']))).toThrowError() }) - test('invalid --min-file-line-coverage=-1', () => { - expect(() => validate_arguments(parse_arguments([...args, '--min-file-line-coverage=-1']))).toThrowError() + test('invalid --min-file-coverage=-1', () => { + expect(() => validate_arguments(parse_arguments([...args, '--min-file-coverage=-1']))).toThrowError() }) - test('valid --min-file-line-coverage=.8', () => { - let result = validate_arguments(parse_arguments([...args, '--min-file-line-coverage=.8'])) - expect(result['min-file-line-coverage']).toEqual(0.8) + test('valid --min-file-coverage=.8', () => { + let result = validate_arguments(parse_arguments([...args, '--min-file-coverage=.8'])) + expect(result['min-file-coverage']).toEqual(0.8) }) }) test.describe('--reporter', () => { - let args = ['--coverage-dir=coverage', '--min-line-coverage=1'] + let args = ['--coverage-dir=coverage', '--min-coverage=1'] test('missing --reporter', () => { expect.soft(() => validate_arguments(parse_arguments([...args]))).not.toThrowError() @@ -89,7 +89,7 @@ test.describe('--reporter', () => { }) test.describe('--show-uncovered', () => { - let args = ['--coverage-dir=coverage', '--min-line-coverage=1'] + let args = ['--coverage-dir=coverage', '--min-coverage=1'] test('missing --show-uncovered', () => { expect.soft(() => validate_arguments(parse_arguments([...args]))).not.toThrowError() diff --git a/src/cli/arguments.ts b/src/cli/arguments.ts index d6efaf3..0235b0f 100644 --- a/src/cli/arguments.ts +++ b/src/cli/arguments.ts @@ -21,16 +21,16 @@ let ReporterSchema = v.pipe(v.string(), v.enum(reporters)) let CliArgumentsSchema = v.object({ 'coverage-dir': CoverageDirSchema, - 'min-line-coverage': RatioPercentageSchema, - 'min-file-line-coverage': v.optional(RatioPercentageSchema), + 'min-coverage': RatioPercentageSchema, + 'min-file-coverage': v.optional(RatioPercentageSchema), 'show-uncovered': v.optional(ShowUncoveredSchema, show_uncovered_options.violations), reporter: v.optional(ReporterSchema, reporters.pretty), }) export type CliArguments = { 'coverage-dir': string - 'min-line-coverage': number - 'min-file-line-coverage'?: number + 'min-coverage': number + 'min-file-coverage'?: number 'show-uncovered': keyof typeof show_uncovered_options reporter: keyof typeof reporters } @@ -69,10 +69,10 @@ export function parse_arguments(args: string[]) { 'coverage-dir': { type: 'string', }, - 'min-line-coverage': { + 'min-coverage': { type: 'string', }, - 'min-file-line-coverage': { + 'min-file-coverage': { type: 'string', default: '0', }, diff --git a/src/cli/cli.ts b/src/cli/cli.ts index a4a10e8..0569dfe 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -11,8 +11,8 @@ async function cli(cli_args: string[]) { let coverage_data = await read(params['coverage-dir']) let report = program( { - min_file_coverage: params['min-line-coverage'], - min_file_line_coverage: params['min-file-line-coverage'], + min_coverage: params['min-coverage'], + min_file_coverage: params['min-file-coverage'], }, coverage_data, ) diff --git a/src/cli/program.test.ts b/src/cli/program.test.ts index c723f95..dd59bb5 100644 --- a/src/cli/program.test.ts +++ b/src/cli/program.test.ts @@ -12,31 +12,31 @@ let coverage = [ ] satisfies Coverage[] test('returns context', () => { - let result = program({ min_file_coverage: 0.5 }, coverage) + let result = program({ min_coverage: 0.5 }, coverage) expect.soft(result.context.coverage.covered_lines).toEqual(4) expect.soft(result.context.coverage.total_files_found).toEqual(1) }) -test.describe('--min-file-coverage', () => { - test('Success: --min-file-coverage=0.5', () => { - let result = program({ min_file_coverage: 0.5 }, coverage) +test.describe('--min-coverage', () => { + test('Success: --min-coverage=0.5', () => { + let result = program({ min_coverage: 0.5 }, coverage) expect(result.report.ok).toBeTruthy() }) - test('Failure: --min-file-coverage=1', () => { - let result = program({ min_file_coverage: 1 }, coverage) + test('Failure: --min-coverage=1', () => { + let result = program({ min_coverage: 1 }, coverage) expect(result.report.ok).toBeFalsy() }) }) -test.describe('--min-file-line-coverage', () => { - test('Success: --min-file-line-coverage=0.5', () => { - let result = program({ min_file_coverage: 0, min_file_line_coverage: 0.5 }, coverage) +test.describe('--min-file-coverage', () => { + test('Success: --min-file-coverage=0.5', () => { + let result = program({ min_coverage: 0, min_file_coverage: 0.5 }, coverage) expect(result.report.ok).toBeTruthy() }) - test('Failure: --min-file-line-coverage=1', () => { - let result = program({ min_file_coverage: 0, min_file_line_coverage: 1 }, coverage) + test('Failure: --min-file-coverage=1', () => { + let result = program({ min_coverage: 0, min_file_coverage: 1 }, coverage) expect(result.report.ok).toBeFalsy() }) }) diff --git a/src/cli/program.ts b/src/cli/program.ts index e93bef8..a0c6537 100644 --- a/src/cli/program.ts +++ b/src/cli/program.ts @@ -1,11 +1,5 @@ import { calculate_coverage, type Coverage, type CoverageResult } from '../lib/index.js' -class MissingDataError extends Error { - constructor() { - super('No data to analyze') - } -} - export type Report = { context: { coverage: CoverageResult @@ -51,19 +45,19 @@ function validate_min_file_line_coverage(actual: number, expected: number | unde export function program( { + min_coverage, min_file_coverage, - min_file_line_coverage, }: { - min_file_coverage: number - min_file_line_coverage?: number + min_coverage: number + min_file_coverage?: number }, coverage_data: Coverage[], ) { let coverage = calculate_coverage(coverage_data) - let min_line_coverage_result = validate_min_line_coverage(coverage.line_coverage_ratio, min_file_coverage) - let min_file_line_coverage_result = validate_min_file_line_coverage( + let min_coverage_result = validate_min_line_coverage(coverage.line_coverage_ratio, min_coverage) + let min_file_coverage_result = validate_min_file_line_coverage( Math.min(...coverage.coverage_per_stylesheet.map((sheet) => sheet.line_coverage_ratio)), - min_file_line_coverage, + min_file_coverage, ) let result: Report = { @@ -71,9 +65,9 @@ export function program( coverage, }, report: { - ok: min_line_coverage_result.ok && min_file_line_coverage_result.ok, - min_line_coverage: min_line_coverage_result, - min_file_line_coverage: min_file_line_coverage_result, + ok: min_coverage_result.ok && min_file_coverage_result.ok, + min_line_coverage: min_coverage_result, + min_file_line_coverage: min_file_coverage_result, }, }