supercov 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -233,7 +233,7 @@ Java and Kotlin have no registry of their own here, so a JVM project takes the b
233
233
  | PHP | Coming soon | — | — |
234
234
  | C | Coming soon | — | — |
235
235
 
236
- The `npx` path requires Node.js 22 or newer; the other installs need no Node. Rust support currently uses Rust 1.95; cargo-nextest 0.9.138 and 0.9.140 are supported. Python support requires CPython 3.12 or newer and measures pytest and unittest runs. Ruby support requires Ruby 3.3 or newer (3.4 or newer for full measurement) and measures RSpec, Minitest, test-unit and Cucumber runs. Go support requires Go 1.22 or newer and measures `go test`. Java and Kotlin support requires a JDK 17 or newer with Maven or Gradle, and measures every JUnit Platform engine -- JUnit 5, JUnit 4 through Vintage, Kotest and Spock -- as well as TestNG.
236
+ The `npx` path requires Node.js 22 or newer; the other installs need no Node. Rust support currently uses Rust 1.95; cargo-nextest 0.9.138 and 0.9.140 are supported. Python support requires CPython 3.9 or newer and measures pytest and unittest runs. Ruby support requires Ruby 3.3 or newer (3.4 or newer for full measurement) and measures RSpec, Minitest, test-unit and Cucumber runs. Go support requires Go 1.22 or newer and measures `go test`. Java and Kotlin support requires a JDK 17 or newer with Maven or Gradle, and measures every JUnit Platform engine -- JUnit 5, JUnit 4 through Vintage, Kotest and Spock -- as well as TestNG.
237
237
 
238
238
  ## Supported operating systems and architectures
239
239
 
@@ -245,7 +245,7 @@ The CLI is a single native binary. `npx supercov` selects the build for the mach
245
245
  | Linux | arm64, x64 | glibc 2.28 or newer (Debian 10, Ubuntu 18.10, RHEL 8 and later), or musl (Alpine); chosen automatically |
246
246
  | Windows | arm64, x64 | Windows 10 or newer |
247
247
 
248
- JavaScript, TypeScript, Python, Ruby, Rust, Go, Java and Kotlin suites are verified on Linux, macOS and Windows -- CPython 3.12, 3.13 and 3.14, Ruby 3.3, 3.4 and 4.0, and Go 1.22, 1.25, 1.26 and 1.27 on every one, and JDK 17 and 21 on every one that has them (Temurin publishes no 17 for arm64 Windows, so that pairing is 21 alone). Containers, VMs, and remote executors run the same Linux builds. Every release publishes the same binaries to npm, PyPI (`supercov-cli`, a wheel per platform) and RubyGems (`supercov`, a gem per platform except arm64 Windows, which Ruby has no platform for), and the source to crates.io (`supercov`).
248
+ JavaScript, TypeScript, Python, Ruby, Rust, Go, Java and Kotlin suites are verified on Linux, macOS and Windows -- CPython 3.9 through 3.14 (on arm64 Windows, 3.9 and 3.10 as the x64 builds, since python.org publishes no arm64 build before 3.11), Ruby 3.3, 3.4 and 4.0, and Go 1.22, 1.25, 1.26 and 1.27 on every one, and JDK 17 and 21 on every one that has them (Temurin publishes no 17 for arm64 Windows, so that pairing is 21 alone). Containers, VMs, and remote executors run the same Linux builds. Every release publishes the same binaries to npm, PyPI (`supercov-cli`, a wheel per platform) and RubyGems (`supercov`, a gem per platform except arm64 Windows, which Ruby has no platform for), and the source to crates.io (`supercov`).
249
249
 
250
250
  ## Supported test suites
251
251
 
@@ -326,3 +326,5 @@ npx supercov clean # remove all runs and the build cache
326
326
  ## Contributors
327
327
 
328
328
  - [@DaVinciTachyon](https://github.com/DaVinciTachyon)
329
+ - [@Uhbif2](https://github.com/Uhbif2)
330
+ - [@maik-intellicoach](https://github.com/maik-intellicoach)
package/docs/cli.md CHANGED
@@ -395,6 +395,12 @@ By default, `clean` removes all stored runs and the isolated build cache.
395
395
  `--keep N` keeps the newest N runs. Cleanup removes only marker-owned Supercov
396
396
  storage.
397
397
 
398
+ If Supercov itself fails to publish a run the tests already paid for, it keeps
399
+ that run's raw evidence in `.supercov/failed-evidence/<run id>` and says so in
400
+ the error. Report the failure with that directory: it is what diagnoses it. Only
401
+ a full `clean` reclaims it -- `--keep N` leaves it alone -- and the summary says
402
+ when it goes.
403
+
398
404
  ## Read bundled documentation
399
405
 
400
406
  ```sh supercov
package/docs/evidence.md CHANGED
@@ -110,6 +110,14 @@ Preview cleanup first. The final command removes all runs and the isolated build
110
110
  cache; `--keep 20` preserves the 20 newest runs. Cleanup removes only
111
111
  marker-owned Supercov data.
112
112
 
113
+ ### Evidence of a run that failed to publish
114
+
115
+ A suite pays for its measurement in wall clock. If Supercov itself cannot
116
+ publish a run the tests already finished, the run's raw evidence is kept in
117
+ `.supercov/failed-evidence/<run-id>/` rather than going with the work directory,
118
+ and the error names the path. Attach that directory to the bug report. A full
119
+ `clean` reclaims it; `--keep N` does not.
120
+
113
121
  ## Understand test kinds
114
122
 
115
123
  Reports group tests by kind, such as unit, integration or E2E. Supercov uses
@@ -119,7 +119,7 @@ if anything is missing.
119
119
  - for Rust, the Rust 1.95 toolchain;
120
120
  - for Go, Go 1.22 or newer;
121
121
  - for Java and Kotlin, JDK 17 or newer, with Maven or Gradle;
122
- - for Python, CPython 3.12 or newer with pytest or unittest;
122
+ - for Python, CPython 3.9 or newer with pytest or unittest;
123
123
  - for Ruby, Ruby 3.4 or newer with RSpec, Minitest, test-unit or Cucumber (3.3 measures lines, methods and simple branches only).
124
124
 
125
125
  The CLI is a native binary. `npx supercov` picks the build for your operating
@@ -184,14 +184,16 @@ attribution.
184
184
 
185
185
  | Runner | Attribution | Current requirement |
186
186
  | --- | --- | --- |
187
- | pytest | Exact test, worker, retry, and setup/call/teardown phase identity | CPython 3.12 or newer; run with `npx supercov -- pytest` or `python -m pytest` |
187
+ | pytest | Exact test, worker, retry, and setup/call/teardown phase identity | CPython 3.9 or newer; run with `npx supercov -- pytest` or `python -m pytest` |
188
188
  | pytest-xdist | Exact per worker | Workers inherit the run through the environment |
189
189
  | pytest-rerunfailures | Exact per attempt; flaky tests are reported as such | |
190
190
  | `python -m unittest` | Exact test and setUp/test/tearDown phase identity | Serial in-process; skips and expected failures are recorded; subtest failures roll up to the parent test |
191
191
 
192
192
  Your project runs in place with its own interpreter and virtual environment.
193
- Supercov adds its monitoring and runner hooks through the process environment;
194
- you do not need to rewrite tests or configure a different build.
193
+ Supercov adds its runner hooks through the process environment and places a
194
+ probe for every obligation into each measured module as it is imported --
195
+ nothing on disk changes, and tracebacks keep their line numbers. You do not
196
+ need to rewrite tests or configure a different build.
195
197
 
196
198
  Coverage includes statements, functions, boolean decisions, loops,
197
199
  comprehensions, short-circuit operators, `match` cases and exception paths.
@@ -202,9 +204,11 @@ assertion checks.
202
204
 
203
205
  Interpreters launched with `-I`, `-E` or `-S` ignore the required startup hook
204
206
  and are not measured. Code compiled from strings at runtime has no source
205
- obligations. Completed observations can survive a hard kill, but a corrupt or
206
- exhausted evidence channel fails the run rather than reporting partial data as
207
- complete.
207
+ obligations. A measured module imported before Supercov starts, or compiled
208
+ past the import system, runs without probes; the run names it as a limitation
209
+ rather than reporting it uncovered. What a test executed survives the process
210
+ being killed -- `os._exit`, SIGTERM or SIGKILL -- but a corrupt or exhausted
211
+ evidence channel fails the run rather than reporting partial data as complete.
208
212
 
209
213
  ```sh
210
214
  npx supercov -- pytest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "supercov",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "Code quality and coverage for coding agents",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -78,9 +78,9 @@
78
78
  "test:clang-mcdc": "node scripts/clang-mcdc-oracle.mjs",
79
79
  "test:test262": "cargo build --release -p supercov && node scripts/test262-equivalence.mjs",
80
80
  "benchmark:check": "cargo build --release -p supercov && node scripts/rust-transform-benchmark.mjs",
81
- "benchmark:python-monitoring": "cargo build -p supercov && node scripts/python-monitoring-benchmark.mjs",
81
+ "benchmark:python": "cargo build -p supercov && node scripts/python-benchmark.mjs",
82
82
  "check": "cargo fmt --all -- --check && cargo clippy --workspace --all-targets -- -D warnings && npm run test && npm run test:release-tooling && npm run test:runtime && npm run test:rust-assets && npm run test:assertion-maps && npm run test:sweep-target && npm run test:skip-guard && npm run test:windows-tls && node scripts/package-preflight.mjs && node scripts/verify-binstall-metadata.mjs --offline",
83
- "release:check": "cargo clean && node scripts/sweep-target.mjs && npm run check && npm run test:engine && npm run test:go && npm run test:jvm && npm run test:launcher && npm run test:fixture && npm run test:watchdog && npm run test:engine-contract && npm run test:agent && npm run test:child-attribution && npm run test:host-loader && npm run test:python-monitoring && npm run test:ruby-coverage && npm run test:rust-public-cargo && npm run test:packed-npx && npm run test:clang-mcdc && npm run benchmark:check",
83
+ "release:check": "cargo clean && node scripts/sweep-target.mjs && npm run check && npm run test:engine && npm run test:go && npm run test:jvm && npm run test:launcher && npm run test:fixture && npm run test:watchdog && npm run test:engine-contract && npm run test:agent && npm run test:child-attribution && npm run test:host-loader && npm run test:python && npm run test:ruby-coverage && npm run test:rust-public-cargo && npm run test:packed-npx && npm run test:clang-mcdc && npm run benchmark:check",
84
84
  "release:bump": "node scripts/bump-version.mjs",
85
85
  "sweep": "node scripts/sweep-target.mjs",
86
86
  "oracle:rust": "cargo build --release -p supercov && node scripts/rust-coverage-oracle.mjs",
@@ -88,7 +88,7 @@
88
88
  "prepublishOnly": "npm run release:check",
89
89
  "test:child-attribution": "cargo build -p supercov && node scripts/rust-child-attribution-integration.mjs",
90
90
  "test:host-loader": "cargo build -p supercov && node scripts/rust-host-loader-integration.mjs",
91
- "test:python-monitoring": "cargo build -p supercov && node scripts/python-monitoring-integration.mjs",
91
+ "test:python": "cargo build -p supercov && node scripts/python-integration.mjs",
92
92
  "test:ruby-coverage": "cargo build -p supercov && node scripts/ruby-coverage-integration.mjs",
93
93
  "test:go": "cargo test --no-fail-fast -p supercov-engine --test go_frontend --test go_run",
94
94
  "test:jvm": "cargo test --no-fail-fast -p supercov-engine --test jvm_frontend --test jvm_run -- --include-ignored --test-threads=1",
@@ -105,14 +105,14 @@
105
105
  "test:windows-tls": "node scripts/windows-tls-test.mjs"
106
106
  },
107
107
  "optionalDependencies": {
108
- "@supercov/cli-darwin-arm64": "1.1.1",
109
- "@supercov/cli-darwin-x64": "1.1.1",
110
- "@supercov/cli-linux-arm64-gnu": "1.1.1",
111
- "@supercov/cli-linux-arm64-musl": "1.1.1",
112
- "@supercov/cli-linux-x64-gnu": "1.1.1",
113
- "@supercov/cli-linux-x64-musl": "1.1.1",
114
- "@supercov/cli-win32-arm64": "1.1.1",
115
- "@supercov/cli-win32-x64": "1.1.1"
108
+ "@supercov/cli-darwin-arm64": "1.2.0",
109
+ "@supercov/cli-darwin-x64": "1.2.0",
110
+ "@supercov/cli-linux-arm64-gnu": "1.2.0",
111
+ "@supercov/cli-linux-arm64-musl": "1.2.0",
112
+ "@supercov/cli-linux-x64-gnu": "1.2.0",
113
+ "@supercov/cli-linux-x64-musl": "1.2.0",
114
+ "@supercov/cli-win32-arm64": "1.2.0",
115
+ "@supercov/cli-win32-x64": "1.2.0"
116
116
  },
117
117
  "peerDependencies": {
118
118
  "@playwright/test": ">=1.55.0",