From fcb9660c846695c4cb4f7f7e3e9a82c1c73ab17c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 27 Feb 2026 15:42:12 +0900 Subject: [PATCH] test: test oxc decorators and coverage (#9738) --- package.json | 1 + .../configs/vitest.config.decorators.ts | 2 +- test/coverage-test/test/decorators.test.ts | 42 ++++++++++++++++--- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d730c927c..4f6de9a7d 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "ui:build": "vite build packages/ui", "ui:dev": "npm -C packages/ui run dev:client", "ui:test": "npm -C packages/ui run test:run", + "override-rolldown": "yq -i '.overrides.vite = \"npm:vite@beta\"' pnpm-workspace.yaml", "test:browser:webdriverio": "pnpm -C test/browser run test:webdriverio", "test:browser:playwright": "pnpm -C test/browser run test:playwright" }, diff --git a/test/coverage-test/fixtures/configs/vitest.config.decorators.ts b/test/coverage-test/fixtures/configs/vitest.config.decorators.ts index 120015c3a..4d942fee1 100644 --- a/test/coverage-test/fixtures/configs/vitest.config.decorators.ts +++ b/test/coverage-test/fixtures/configs/vitest.config.decorators.ts @@ -7,7 +7,7 @@ import base from "./vitest.config"; export default mergeConfig( base, defineConfig({ - plugins: [DecoratorsPlugin()], + plugins: process.env.TEST_OXC_DECORATOR ? [] : [DecoratorsPlugin()], test: {}, }) ); diff --git a/test/coverage-test/test/decorators.test.ts b/test/coverage-test/test/decorators.test.ts index b25124a8d..475780bba 100644 --- a/test/coverage-test/test/decorators.test.ts +++ b/test/coverage-test/test/decorators.test.ts @@ -1,4 +1,5 @@ -import { expect } from 'vitest' +import { expect, vi } from 'vitest' +import { rolldownVersion } from 'vitest/node' import { DecoratorsTester } from '../fixtures/src/decorators' import { coverageTest, normalizeURL, readCoverageMap, runVitest, test } from '../utils' @@ -14,14 +15,45 @@ test('decorators generated metadata is ignored', async () => { const lineCoverage = fileCoverage.getLineCoverage() const branchCoverage = fileCoverage.getBranchCoverageByLine() - expect(lineCoverage['4']).toBeUndefined() - expect(branchCoverage['4']).toBeUndefined() + expect.soft(lineCoverage['4']).toBeUndefined() + expect.soft(branchCoverage['4']).toBeUndefined() // Covered branch should be marked correctly - expect(lineCoverage['7']).toBe(1) + expect.soft(lineCoverage['7']).toBe(1) // Uncovered branch should be marked correctly - expect(lineCoverage['12']).toBe(0) + expect.soft(lineCoverage['12']).toBe(0) +}) + +test('decorators generated metadata is covered with OXC decorators', async ({ onTestFinished }) => { + if (!rolldownVersion) { + return + } + + vi.stubEnv('TEST_OXC_DECORATOR', 'true') + onTestFinished(() => { + vi.unstubAllEnvs() + }) + + await runVitest({ + include: [normalizeURL(import.meta.url)], + config: 'fixtures/configs/vitest.config.decorators.ts', + coverage: { reporter: ['json', 'html'] }, + }) + + const coverageMap = await readCoverageMap() + const fileCoverage = coverageMap.fileCoverageFor('/fixtures/src/decorators.ts') + const lineCoverage = fileCoverage.getLineCoverage() + const branchCoverage = fileCoverage.getBranchCoverageByLine() + + expect.soft(lineCoverage['4']).toBe(1) // this is different from SWC case above + expect.soft(branchCoverage['4']).toBeUndefined() + + // Covered branch should be marked correctly + expect.soft(lineCoverage['7']).toBe(1) + + // Uncovered branch should be marked correctly + expect.soft(lineCoverage['12']).toBe(0) }) coverageTest('cover decorators', () => { -- 2.51.2