Compare commits
merge into: JMR-dev/LibreMediaConverter:docs/e8-instrumented-coverage
JMR-dev/LibreMediaConverter:main
JMR-dev/LibreMediaConverter:fix/102-picker-back-press-overshoot
JMR-dev/LibreMediaConverter:fix/268-saf-picker-determinism
JMR-dev/LibreMediaConverter:feat/ogg-vorbis-libvorbis
JMR-dev/LibreMediaConverter:feat/expedited-conversion-work
JMR-dev/LibreMediaConverter:fix/gate-cache-in-worktrees
JMR-dev/LibreMediaConverter:chore/gate-runs-shellcheck
JMR-dev/LibreMediaConverter:test/publish-delete-arm-real-provider
JMR-dev/LibreMediaConverter:docs/e8-instrumented-coverage
JMR-dev/LibreMediaConverter:docs/api37-carrier-count-drift
JMR-dev/LibreMediaConverter:docs/e7-second-constraint
JMR-dev/LibreMediaConverter:test/publish-to-a-real-saf-destination
JMR-dev/LibreMediaConverter:fix/api37-report-match-line
JMR-dev/LibreMediaConverter:fix/api37-task-snapshot-crash
JMR-dev/LibreMediaConverter:test/join-failure-message-on-device
JMR-dev/LibreMediaConverter:docs/e2e-read-findings-e7
JMR-dev/LibreMediaConverter:test/cancelling-a-running-export
JMR-dev/LibreMediaConverter:test/reattach-to-a-running-job
JMR-dev/LibreMediaConverter:test/content-uri-reaches-ffmpeg
JMR-dev/LibreMediaConverter:fix/launcher-wiring-waits-for-the-pick
JMR-dev/LibreMediaConverter:fix/cancel-tests-need-a-slower-encode
JMR-dev/LibreMediaConverter:test/cancelling-a-running-join
JMR-dev/LibreMediaConverter:test/cancelling-a-running-session
JMR-dev/LibreMediaConverter:test/notification-cancel-action
JMR-dev/LibreMediaConverter:test/ffmpeg-progress-is-observed
JMR-dev/LibreMediaConverter:test/fallback-asserts-the-path
JMR-dev/LibreMediaConverter:test/flac-and-opus-assert-their-format
JMR-dev/LibreMediaConverter:docs/e2e-read-findings
JMR-dev/LibreMediaConverter:docs/wave4-coverage-numbers
JMR-dev/LibreMediaConverter:fix/injectable-startup-sweep-scope
JMR-dev/LibreMediaConverter:test/session-outcome-seam
JMR-dev/LibreMediaConverter:test/launcher-callback-identity
JMR-dev/LibreMediaConverter:test/theme-follows-system-dark
JMR-dev/LibreMediaConverter:test/audio-drop-arm
JMR-dev/LibreMediaConverter:fix/rotation-waits-for-recreation
JMR-dev/LibreMediaConverter:fix/convert-guards-on-ready
JMR-dev/LibreMediaConverter:test/retry-save-mime
JMR-dev/LibreMediaConverter:test/hardware-progress-reaches-workmanager
JMR-dev/LibreMediaConverter:test/ffprobe-mapping-seam
JMR-dev/LibreMediaConverter:test/device-codec-enumeration-seam
JMR-dev/LibreMediaConverter:test/unknown-container-row
JMR-dev/LibreMediaConverter:test/null-message-fallbacks
JMR-dev/LibreMediaConverter:test/cancel-reaches-workmanager
JMR-dev/LibreMediaConverter:docs/coverage-wave3-recovery
JMR-dev/LibreMediaConverter:test/concat-engine-seam
JMR-dev/LibreMediaConverter:docs/coverage-wave3
JMR-dev/LibreMediaConverter:test/mediaprobe-merge-seam
JMR-dev/LibreMediaConverter:test/adaptive-shell-wiring
JMR-dev/LibreMediaConverter:test/aac-audio-args
JMR-dev/LibreMediaConverter:test/notification-progress-text
JMR-dev/LibreMediaConverter:test/media3-muxer-guard
JMR-dev/LibreMediaConverter:test/hardware-fallback-and-cancellation
JMR-dev/LibreMediaConverter:test/unprobeable-join-clip
JMR-dev/LibreMediaConverter:test/one-branch-outcomes
JMR-dev/LibreMediaConverter:test/foreground-type-regimes
JMR-dev/LibreMediaConverter:fix/bound-wedge-diagnostics
JMR-dev/LibreMediaConverter:docs/coverage-wave2
JMR-dev/LibreMediaConverter:test/screen-wiring
JMR-dev/LibreMediaConverter:test/viewmodel-setters
JMR-dev/LibreMediaConverter:test/join-state-mapping
JMR-dev/LibreMediaConverter:test/conversion-state-mapping
JMR-dev/LibreMediaConverter:test/dedupe-user-messages
JMR-dev/LibreMediaConverter:fix/restore-stack-merges
JMR-dev/LibreMediaConverter:test/refused-jobs
JMR-dev/LibreMediaConverter:test/concatworker-failure-arms
JMR-dev/LibreMediaConverter:test/container-capabilities-audio
JMR-dev/LibreMediaConverter:test/readspec-enum-fallbacks
JMR-dev/LibreMediaConverter:test/outputpublisher-seams
JMR-dev/LibreMediaConverter:test/mediaprobe-track-seam
JMR-dev/LibreMediaConverter:test/outputpublisher-partial-branches
JMR-dev/LibreMediaConverter:test/fake-provider-scaffolding
JMR-dev/LibreMediaConverter:docs/coverage-read-findings
JMR-dev/LibreMediaConverter:chore/gitignore-kotlin
JMR-dev/LibreMediaConverter:test/bound-the-hangs
JMR-dev/LibreMediaConverter:docs/coverage-remeasure
JMR-dev/LibreMediaConverter:ci/baseline-counter-precision
JMR-dev/LibreMediaConverter:fix/invalid-suggestion-chip
JMR-dev/LibreMediaConverter:ci/wedged-leg-report
JMR-dev/LibreMediaConverter:fix/reattachment-overwrites-pick
JMR-dev/LibreMediaConverter:test/theme-live-branches
JMR-dev/LibreMediaConverter:fix/failed-save-retry
JMR-dev/LibreMediaConverter:fix/empty-composition-crash
JMR-dev/LibreMediaConverter:ci/advisory-failure-report
JMR-dev/LibreMediaConverter:docs/seven-run-counts
JMR-dev/LibreMediaConverter:test/release-permission-guard
JMR-dev/LibreMediaConverter:ci/build-workflow-permissions
JMR-dev/LibreMediaConverter:docs/api37-point-release
JMR-dev/LibreMediaConverter:docs/benchmark-populate-path
JMR-dev/LibreMediaConverter:fix/dead-assertion-probe-test
JMR-dev/LibreMediaConverter:ci/actionlint
JMR-dev/LibreMediaConverter:test/device-codecs-encode-consequence
JMR-dev/LibreMediaConverter:fix/sdkmanager-pipefail
JMR-dev/LibreMediaConverter:docs/readme-restart-claim
JMR-dev/LibreMediaConverter:fix/saf-picker-root-discovery
JMR-dev/LibreMediaConverter:fix/probe-dispatcher-seam
JMR-dev/LibreMediaConverter:test/media3engine-mime-tables
JMR-dev/LibreMediaConverter:test/mediaprobe-pure-helpers
JMR-dev/LibreMediaConverter:fix/codec-vocabulary-drift
JMR-dev/LibreMediaConverter:docs/robolectric-rationale-correction
JMR-dev/LibreMediaConverter:docs/api37-advisory-counts
JMR-dev/LibreMediaConverter:test/r38-8-saf-e2e
JMR-dev/LibreMediaConverter:test/r38-7-join-states
JMR-dev/LibreMediaConverter:test/r38-6-conversion-states
JMR-dev/LibreMediaConverter:test/r38-5-state-seam
JMR-dev/LibreMediaConverter:fix/jacoco-robolectric-coverage
JMR-dev/LibreMediaConverter:docs/instrumented-tests-correction
JMR-dev/LibreMediaConverter:test/r38-2-filecard
JMR-dev/LibreMediaConverter:test/r38-4-advanced-picker
JMR-dev/LibreMediaConverter:test/r38-3-pickers
JMR-dev/LibreMediaConverter:tools/file-issue-script
JMR-dev/LibreMediaConverter:tools/api-37-emulator
JMR-dev/LibreMediaConverter:fix/review-app-gaps
JMR-dev/LibreMediaConverter:docs/review-corrections
..
pull from: JMR-dev/LibreMediaConverter:docs/api37-carrier-count-drift
JMR-dev/LibreMediaConverter:main
JMR-dev/LibreMediaConverter:fix/102-picker-back-press-overshoot
JMR-dev/LibreMediaConverter:fix/268-saf-picker-determinism
JMR-dev/LibreMediaConverter:feat/ogg-vorbis-libvorbis
JMR-dev/LibreMediaConverter:feat/expedited-conversion-work
JMR-dev/LibreMediaConverter:fix/gate-cache-in-worktrees
JMR-dev/LibreMediaConverter:chore/gate-runs-shellcheck
JMR-dev/LibreMediaConverter:test/publish-delete-arm-real-provider
JMR-dev/LibreMediaConverter:docs/e8-instrumented-coverage
JMR-dev/LibreMediaConverter:docs/api37-carrier-count-drift
JMR-dev/LibreMediaConverter:docs/e7-second-constraint
JMR-dev/LibreMediaConverter:test/publish-to-a-real-saf-destination
JMR-dev/LibreMediaConverter:fix/api37-report-match-line
JMR-dev/LibreMediaConverter:fix/api37-task-snapshot-crash
JMR-dev/LibreMediaConverter:test/join-failure-message-on-device
JMR-dev/LibreMediaConverter:docs/e2e-read-findings-e7
JMR-dev/LibreMediaConverter:test/cancelling-a-running-export
JMR-dev/LibreMediaConverter:test/reattach-to-a-running-job
JMR-dev/LibreMediaConverter:test/content-uri-reaches-ffmpeg
JMR-dev/LibreMediaConverter:fix/launcher-wiring-waits-for-the-pick
JMR-dev/LibreMediaConverter:fix/cancel-tests-need-a-slower-encode
JMR-dev/LibreMediaConverter:test/cancelling-a-running-join
JMR-dev/LibreMediaConverter:test/cancelling-a-running-session
JMR-dev/LibreMediaConverter:test/notification-cancel-action
JMR-dev/LibreMediaConverter:test/ffmpeg-progress-is-observed
JMR-dev/LibreMediaConverter:test/fallback-asserts-the-path
JMR-dev/LibreMediaConverter:test/flac-and-opus-assert-their-format
JMR-dev/LibreMediaConverter:docs/e2e-read-findings
JMR-dev/LibreMediaConverter:docs/wave4-coverage-numbers
JMR-dev/LibreMediaConverter:fix/injectable-startup-sweep-scope
JMR-dev/LibreMediaConverter:test/session-outcome-seam
JMR-dev/LibreMediaConverter:test/launcher-callback-identity
JMR-dev/LibreMediaConverter:test/theme-follows-system-dark
JMR-dev/LibreMediaConverter:test/audio-drop-arm
JMR-dev/LibreMediaConverter:fix/rotation-waits-for-recreation
JMR-dev/LibreMediaConverter:fix/convert-guards-on-ready
JMR-dev/LibreMediaConverter:test/retry-save-mime
JMR-dev/LibreMediaConverter:test/hardware-progress-reaches-workmanager
JMR-dev/LibreMediaConverter:test/ffprobe-mapping-seam
JMR-dev/LibreMediaConverter:test/device-codec-enumeration-seam
JMR-dev/LibreMediaConverter:test/unknown-container-row
JMR-dev/LibreMediaConverter:test/null-message-fallbacks
JMR-dev/LibreMediaConverter:test/cancel-reaches-workmanager
JMR-dev/LibreMediaConverter:docs/coverage-wave3-recovery
JMR-dev/LibreMediaConverter:test/concat-engine-seam
JMR-dev/LibreMediaConverter:docs/coverage-wave3
JMR-dev/LibreMediaConverter:test/mediaprobe-merge-seam
JMR-dev/LibreMediaConverter:test/adaptive-shell-wiring
JMR-dev/LibreMediaConverter:test/aac-audio-args
JMR-dev/LibreMediaConverter:test/notification-progress-text
JMR-dev/LibreMediaConverter:test/media3-muxer-guard
JMR-dev/LibreMediaConverter:test/hardware-fallback-and-cancellation
JMR-dev/LibreMediaConverter:test/unprobeable-join-clip
JMR-dev/LibreMediaConverter:test/one-branch-outcomes
JMR-dev/LibreMediaConverter:test/foreground-type-regimes
JMR-dev/LibreMediaConverter:fix/bound-wedge-diagnostics
JMR-dev/LibreMediaConverter:docs/coverage-wave2
JMR-dev/LibreMediaConverter:test/screen-wiring
JMR-dev/LibreMediaConverter:test/viewmodel-setters
JMR-dev/LibreMediaConverter:test/join-state-mapping
JMR-dev/LibreMediaConverter:test/conversion-state-mapping
JMR-dev/LibreMediaConverter:test/dedupe-user-messages
JMR-dev/LibreMediaConverter:fix/restore-stack-merges
JMR-dev/LibreMediaConverter:test/refused-jobs
JMR-dev/LibreMediaConverter:test/concatworker-failure-arms
JMR-dev/LibreMediaConverter:test/container-capabilities-audio
JMR-dev/LibreMediaConverter:test/readspec-enum-fallbacks
JMR-dev/LibreMediaConverter:test/outputpublisher-seams
JMR-dev/LibreMediaConverter:test/mediaprobe-track-seam
JMR-dev/LibreMediaConverter:test/outputpublisher-partial-branches
JMR-dev/LibreMediaConverter:test/fake-provider-scaffolding
JMR-dev/LibreMediaConverter:docs/coverage-read-findings
JMR-dev/LibreMediaConverter:chore/gitignore-kotlin
JMR-dev/LibreMediaConverter:test/bound-the-hangs
JMR-dev/LibreMediaConverter:docs/coverage-remeasure
JMR-dev/LibreMediaConverter:ci/baseline-counter-precision
JMR-dev/LibreMediaConverter:fix/invalid-suggestion-chip
JMR-dev/LibreMediaConverter:ci/wedged-leg-report
JMR-dev/LibreMediaConverter:fix/reattachment-overwrites-pick
JMR-dev/LibreMediaConverter:test/theme-live-branches
JMR-dev/LibreMediaConverter:fix/failed-save-retry
JMR-dev/LibreMediaConverter:fix/empty-composition-crash
JMR-dev/LibreMediaConverter:ci/advisory-failure-report
JMR-dev/LibreMediaConverter:docs/seven-run-counts
JMR-dev/LibreMediaConverter:test/release-permission-guard
JMR-dev/LibreMediaConverter:ci/build-workflow-permissions
JMR-dev/LibreMediaConverter:docs/api37-point-release
JMR-dev/LibreMediaConverter:docs/benchmark-populate-path
JMR-dev/LibreMediaConverter:fix/dead-assertion-probe-test
JMR-dev/LibreMediaConverter:ci/actionlint
JMR-dev/LibreMediaConverter:test/device-codecs-encode-consequence
JMR-dev/LibreMediaConverter:fix/sdkmanager-pipefail
JMR-dev/LibreMediaConverter:docs/readme-restart-claim
JMR-dev/LibreMediaConverter:fix/saf-picker-root-discovery
JMR-dev/LibreMediaConverter:fix/probe-dispatcher-seam
JMR-dev/LibreMediaConverter:test/media3engine-mime-tables
JMR-dev/LibreMediaConverter:test/mediaprobe-pure-helpers
JMR-dev/LibreMediaConverter:fix/codec-vocabulary-drift
JMR-dev/LibreMediaConverter:docs/robolectric-rationale-correction
JMR-dev/LibreMediaConverter:docs/api37-advisory-counts
JMR-dev/LibreMediaConverter:test/r38-8-saf-e2e
JMR-dev/LibreMediaConverter:test/r38-7-join-states
JMR-dev/LibreMediaConverter:test/r38-6-conversion-states
JMR-dev/LibreMediaConverter:test/r38-5-state-seam
JMR-dev/LibreMediaConverter:fix/jacoco-robolectric-coverage
JMR-dev/LibreMediaConverter:docs/instrumented-tests-correction
JMR-dev/LibreMediaConverter:test/r38-2-filecard
JMR-dev/LibreMediaConverter:test/r38-4-advanced-picker
JMR-dev/LibreMediaConverter:test/r38-3-pickers
JMR-dev/LibreMediaConverter:tools/file-issue-script
JMR-dev/LibreMediaConverter:tools/api-37-emulator
JMR-dev/LibreMediaConverter:fix/review-app-gaps
JMR-dev/LibreMediaConverter:docs/review-corrections
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b6d75c9b28 |
Record the first instrumented coverage measurement, and classify the 32 it found
E8. The instrumented suite had never been measured: enableAndroidTestCoverage was unset, so a connected run emitted no .ec at all, and jacocoTestReport reads only testDebugUnitTest. Measured on API 34 by setting the flag temporarily. JVM 2236/2374 line 94.2% 1171/1338 branch 87.5% E2E 1711/2374 line 72.1% 669/1354 branch 49.4% UNION 2342/2374 line 98.7% 1212/1354 branch 89.5% The JVM row reproduced the committed figure exactly, which is the control that says both exec sets match the current class files. The device suite closes 106 lines the JVM suite misses, and the first four are the 81 wave 4 wrote off as native or device edges -- FFmpegEngine 32, Media3Engine 24, ConcatEngine 15, MainActivity 10. The union leaves one. That confirms the read's own hypothesis rather than overturning it; nobody had measured past the boundary it named. All 32 lines reached by neither suite were read, and none is an e2e test gap: nine are compiler-generated, ten are getForegroundInfo() for expedited work this app never enqueues (#252), three are F5, three are uncalled members (#253), one is the Vorbis encode arm (#254), and four are F4-shaped error guards. MediaProbe:210-212 gained a measurement rather than an assumption. F7 ruled probeWithExtractor's catch unreachable because Robolectric's MediaExtractor never throws; probeWithFFprobe calls native ffmpeg-kit, so that reasoning does not transfer. But probe() calls both, and RemuxTest drives it with garbage bytes on a device -- so the ffprobe path has had malformed input on real hardware and did not throw. Same conclusion as F7, different mechanism, now on record. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |