Skip to content

Windows file path parsed incorrectly when running dart run coverage on Windows + Node.js + dart2wasm #2549

@elliotwutingfeng

Description

@elliotwutingfeng

Details

Dart SDK: 3.9.4

OS: Windows Server 2025 (GitHub Actions GitHub-hosted runner)

Platform: Node.js 24.9.0

Compiler: Dart2Wasm

package:test version: 1.26.3

package:coverage version: 1.15.0


I ran dart run coverage on this basic sandbox repository with a simple "hello-world" style test. https://github.com/elliotwutingfeng/dart_sandbox_02102025

Note: I'm posting here as although the command was coverage, the error logs reference package:test.

Command

dart run coverage:test_with_coverage --function-coverage --branch-coverage

Error log (link)

❌ [Node.js, Dart2Wasm] loading test\dart_sandbox_02102025_test.dart (failed)
  Generated wasm module 'C:\Users\runneradmin\AppData\Local\Temp\dart_test_296a0ef9\test_6d7be5ce\dart_sandbox_02102025_test.dart.node_test.dart.wasm.wasm', and JS init file 'C:\Users\runneradmin\AppData\Local\Temp\dart_test_296a0ef9\test_6d7be5ce\dart_sandbox_02102025_test.dart.node_test.dart.wasm.mjs'.
  
  node:internal/process/promises:394
      triggerUncaughtException(err, true /* fromPromise */);
      ^
  
  [Error: ENOENT: no such file or directory, open 'C:Users
  unneradminAppDataLocalTempdart_test_296a0ef9	est_6d7be5cedart_sandbox_02102025_test.dart.node_test.dart.wasm.wasm'] {
    errno: -4058,
    code: 'ENOENT',
    syscall: 'open',
    path: 'C:Users\runneradminAppDataLocalTempdart_test_296a0ef9\test_6d7be5cedart_sandbox_02102025_test.dart.node_test.dart.wasm.wasm'
  }
  
  Node.js v24.9.0
  Failed to load "test\dart_sandbox_02102025_test.dart": Node exited before connecting to the test channel.
  package:test/src/runner/node/platform.dart 123:9    NodePlatform._loadChannel
  ===== asynchronous gap ===========================
  package:test/src/runner/node/platform.dart 86:9     NodePlatform.load
  ===== asynchronous gap ===========================
  package:test_core/src/runner/loader.dart 219:27     Loader.loadFile.<fn>
  ===== asynchronous gap ===========================
  package:test_core/src/runner/load_suite.dart 96:19  new LoadSuite.<fn>.<fn>

It appears that the backslashes are interpreted by Node.js as escape sequences.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions