mirror of
https://github.com/gavvvr/obsidian-timecodes-plugin.git
synced 2026-07-22 12:00:24 +00:00
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import type { CoverageMapData } from 'istanbul-lib-coverage'
|
|
|
|
import * as fs from 'node:fs'
|
|
import * as path from 'node:path'
|
|
|
|
import { createCoverageMap } from 'istanbul-lib-coverage'
|
|
import { createContext } from 'istanbul-lib-report'
|
|
import { createSourceMapStore } from 'istanbul-lib-source-maps'
|
|
import * as reports from 'istanbul-reports'
|
|
|
|
export async function exportCoverageToLcov() {
|
|
const coverageMap = createCoverageMap(await collectCoverageData())
|
|
const remappedCoverageMap = await createSourceMapStore().transformCoverage(coverageMap)
|
|
|
|
const context = createContext({
|
|
coverageMap: remappedCoverageMap,
|
|
dir: 'out/coverage',
|
|
sourceFinder: (filePath: string) => {
|
|
return fs.readFileSync(restorePathRelativeToMainPluginProject(filePath), 'utf-8')
|
|
},
|
|
})
|
|
reports.create('lcov').execute(context)
|
|
}
|
|
|
|
const cwd = process.cwd()
|
|
|
|
function restorePathRelativeToMainPluginProject(filePath: string) {
|
|
const relativePart = path.relative(cwd, filePath)
|
|
return path.join(path.resolve(cwd, '..'), relativePart)
|
|
}
|
|
|
|
async function collectCoverageData() {
|
|
const coverageData = await browser.execute(() => {
|
|
return window.__coverage__
|
|
})
|
|
if (!coverageData) throw new Error('No coverage data found!')
|
|
return coverageData
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
__coverage__?: CoverageMapData
|
|
}
|
|
}
|