diff options
author | perissology <perissology@protonmail.com> | 2018-06-23 06:47:44 +0800 |
---|---|---|
committer | perissology <perissology@protonmail.com> | 2018-06-23 06:59:36 +0800 |
commit | bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a (patch) | |
tree | 8b365e07a6ef94fc5b7e6b79d24a6bcc43b022c4 /packages/sol-cov/src/collect_coverage_entries.ts | |
parent | 798a647b71c91df5c3d97bff1f2d5a07f2204c9c (diff) | |
download | dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar.gz dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar.bz2 dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar.lz dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar.xz dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.tar.zst dexon-sol-tools-bbd414bdcd3bcbe3a00ff38664cd9c6e488a7d6a.zip |
add ability to ignore covering specific code blocks
Diffstat (limited to 'packages/sol-cov/src/collect_coverage_entries.ts')
-rw-r--r-- | packages/sol-cov/src/collect_coverage_entries.ts | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/packages/sol-cov/src/collect_coverage_entries.ts b/packages/sol-cov/src/collect_coverage_entries.ts index 3fc85008c..703af3099 100644 --- a/packages/sol-cov/src/collect_coverage_entries.ts +++ b/packages/sol-cov/src/collect_coverage_entries.ts @@ -13,10 +13,29 @@ export const collectCoverageEntries = (contractSource: string) => { if (_.isUndefined(coverageEntriesBySourceHash[sourceHash]) && !_.isUndefined(contractSource)) { const ast = parser.parse(contractSource, { range: true }); const locationByOffset = getLocationByOffset(contractSource); - const visitor = new ASTVisitor(locationByOffset); + const ignoreRangesBegingingAt = gatherRangesToIgnore(contractSource); + const visitor = new ASTVisitor(locationByOffset, ignoreRangesBegingingAt); parser.visit(ast, visitor); coverageEntriesBySourceHash[sourceHash] = visitor.getCollectedCoverageEntries(); } const coverageEntriesDescription = coverageEntriesBySourceHash[sourceHash]; return coverageEntriesDescription; }; + +const IGNORE_RE = /\/\*\s*solcov\s+ignore\s+next\s*\*\/\s*/gm; + +// Gather the start index of all code blocks preceeded by "/* solcov ignore next */" +function gatherRangesToIgnore(contractSource: string): number[] { + const ignoreRangesStart = []; + + let match; + do { + match = IGNORE_RE.exec(contractSource); + if (match) { + const matchLen = match[0].length; + ignoreRangesStart.push(match.index + matchLen); + } + } while (match); + + return ignoreRangesStart; +} |