| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 309cb1c commit c981e61
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,6 +23,7 @@ const { | |||
| 23 | 23 | mkdtempSync, | |
| 24 | 24 | opendirSync, | |
| 25 | 25 | readFileSync, | |
| 26 | + rmSync, | ||
| 26 | 27 | } = require('fs'); | |
| 27 | 28 | const { setupCoverageHooks } = require('internal/util'); | |
| 28 | 29 | const { tmpdir } = require('os'); | |
@@ -270,28 +271,35 @@ class TestCoverage { | |||
| 270 | 271 | cleanup() { | |
| 271 | 272 | // Restore the original value of process.env.NODE_V8_COVERAGE. Then, copy | |
| 272 | 273 | // all of the created coverage files to the original coverage directory. | |
| 274 | + internalBinding('profiler').endCoverage(); | ||
| 275 | + | ||
| 273 | 276 | if (this.originalCoverageDirectory === undefined) { | |
| 274 | 277 | delete process.env.NODE_V8_COVERAGE; | |
| 275 | - return; | ||
| 276 | - } | ||
| 277 | - | ||
| 278 | - process.env.NODE_V8_COVERAGE = this.originalCoverageDirectory; | ||
| 279 | - let dir; | ||
| 278 | + } else { | ||
| 279 | + process.env.NODE_V8_COVERAGE = this.originalCoverageDirectory; | ||
| 280 | + let dir; | ||
| 280 | 281 | ||
| 281 | - try { | ||
| 282 | - mkdirSync(this.originalCoverageDirectory, { __proto__: null, recursive: true }); | ||
| 283 | - dir = opendirSync(this.coverageDirectory); | ||
| 282 | + try { | ||
| 283 | + mkdirSync(this.originalCoverageDirectory, { __proto__: null, recursive: true }); | ||
| 284 | + dir = opendirSync(this.coverageDirectory); | ||
| 284 | 285 | ||
| 285 | - for (let entry; (entry = dir.readSync()) !== null;) { | ||
| 286 | - const src = join(this.coverageDirectory, entry.name); | ||
| 287 | - const dst = join(this.originalCoverageDirectory, entry.name); | ||
| 288 | - copyFileSync(src, dst); | ||
| 289 | - } | ||
| 290 | - } finally { | ||
| 291 | - if (dir) { | ||
| 292 | - dir.closeSync(); | ||
| 286 | + for (let entry; (entry = dir.readSync()) !== null;) { | ||
| 287 | + const src = join(this.coverageDirectory, entry.name); | ||
| 288 | + const dst = join(this.originalCoverageDirectory, entry.name); | ||
| 289 | + copyFileSync(src, dst); | ||
| 290 | + } | ||
| 291 | + } finally { | ||
| 292 | + if (dir) { | ||
| 293 | + dir.closeSync(); | ||
| 294 | + } | ||
| 293 | 295 | } | |
| 294 | 296 | } | |
| 297 | + | ||
| 298 | + try { | ||
| 299 | + rmSync(this.coverageDirectory, { __proto__: null, recursive: true }); | ||
| 300 | + } catch { | ||
| 301 | + // Ignore cleanup errors. | ||
| 302 | + } | ||
| 295 | 303 | } | |
| 296 | 304 | ||
| 297 | 305 | getCoverageFromDirectory() { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -113,12 +113,15 @@ function collectCoverage(rootTest, coverage) { | |||
| 113 | 113 | ||
| 114 | 114 | try { | |
| 115 | 115 | summary = coverage.summary(); | |
| 116 | - coverage.cleanup(); | ||
| 117 | 116 | } catch (err) { | |
| 118 | - const op = summary ? 'clean up' : 'report'; | ||
| 119 | - const msg = `Warning: Could not ${op} code coverage. ${err}`; | ||
| 117 | + rootTest.diagnostic(`Warning: Could not report code coverage. ${err}`); | ||
| 118 | + process.exitCode = kGenericUserError; | ||
| 119 | + } | ||
| 120 | 120 | ||
| 121 | - rootTest.diagnostic(msg); | ||
| 121 | + try { | ||
| 122 | + coverage.cleanup(); | ||
| 123 | + } catch (err) { | ||
| 124 | + rootTest.diagnostic(`Warning: Could not clean up code coverage. ${err}`); | ||
| 122 | 125 | process.exitCode = kGenericUserError; | |
| 123 | 126 | } | |
| 124 | 127 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -503,6 +503,21 @@ static void StopCoverage(const FunctionCallbackInfo<Value>& args) { | |||
| 503 | 503 | } | |
| 504 | 504 | } | |
| 505 | 505 | ||
| 506 | + static void EndCoverage(const FunctionCallbackInfo<Value>& args) { | ||
| 507 | + Environment* env = Environment::GetCurrent(args); | ||
| 508 | + V8CoverageConnection* connection = env->coverage_connection(); | ||
| 509 | + | ||
| 510 | + Debug(env, | ||
| 511 | + DebugCategory::INSPECTOR_PROFILER, | ||
| 512 | + "EndCoverage, connection %s nullptr\n", | ||
| 513 | + connection == nullptr ? "==" : "!="); | ||
| 514 | + | ||
| 515 | + if (connection != nullptr) { | ||
| 516 | + Debug(env, DebugCategory::INSPECTOR_PROFILER, "Ending coverage\n"); | ||
| 517 | + connection->End(); | ||
| 518 | + } | ||
| 519 | + } | ||
| 520 | + | ||
| 506 | 521 | static void Initialize(Local<Object> target, | |
| 507 | 522 | Local<Value> unused, | |
| 508 | 523 | Local<Context> context, | |
@@ -512,13 +527,15 @@ static void Initialize(Local<Object> target, | |||
| 512 | 527 | context, target, "setSourceMapCacheGetter", SetSourceMapCacheGetter); | |
| 513 | 528 | SetMethod(context, target, "takeCoverage", TakeCoverage); | |
| 514 | 529 | SetMethod(context, target, "stopCoverage", StopCoverage); | |
| 530 | + SetMethod(context, target, "endCoverage", EndCoverage); | ||
| 515 | 531 | } | |
| 516 | 532 | ||
| 517 | 533 | void RegisterExternalReferences(ExternalReferenceRegistry* registry) { | |
| 518 | 534 | registry->Register(SetCoverageDirectory); | |
| 519 | 535 | registry->Register(SetSourceMapCacheGetter); | |
| 520 | 536 | registry->Register(TakeCoverage); | |
| 521 | 537 | registry->Register(StopCoverage); | |
| 538 | + registry->Register(EndCoverage); | ||
| 522 | 539 | } | |
| 523 | 540 | ||
| 524 | 541 | } // namespace profiler | |
| Back | FazBrowse Home | New Git URL |
0 commit comments