Skip to content

Coverage paint fails for files containing extended ascii characters #678

@geerligs

Description

@geerligs

Jenkins and plugins versions report

Environment
Jenkins: 2.541.1
OS: Windows Server 2022 - 10.0
Java: 21.0.6 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
analysis-model-api:13.18.0-935.v784ca_107400a_
ansicolor:536.v13fa_b_860c267
ant:520.vd082ecfb_16a_9
antisamy-markup-formatter:173.v680e3a_b_69ff3
apache-httpcomponents-client-4-api:4.5.14-269.vfa_2321039a_83
apache-httpcomponents-client-5-api:5.6-183.ve5a_8a_b_e71e59
asm-api:9.9.1-189.vb_5ef2964da_91
authentication-tokens:1.144.v5ff4a_5ec5c33
blueocean:1.27.25
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.25
blueocean-commons:1.27.25
blueocean-config:1.27.25
blueocean-core-js:1.27.25
blueocean-dashboard:1.27.25
blueocean-display-url:2.4.4
blueocean-events:1.27.25
blueocean-git-pipeline:1.27.25
blueocean-github-pipeline:1.27.25
blueocean-i18n:1.27.25
blueocean-jira:1.27.25
blueocean-jwt:1.27.25
blueocean-personalization:1.27.25
blueocean-pipeline-api-impl:1.27.25
blueocean-pipeline-editor:1.27.25
blueocean-pipeline-scm-api:1.27.25
blueocean-rest:1.27.25
blueocean-rest-impl:1.27.25
blueocean-web:1.27.25
bootstrap5-api:5.3.8-895.v4d0d8e47fea_d
bouncycastle-api:2.30.1.82-277.v70ca_0b_877184
branch-api:2.1280.v0d4e5b_b_460ef
build-timeout:1.39
caffeine-api:3.2.3-194.v31a_b_f7a_b_5a_81
calendar-view:0.4.1
checks-api:402.vca_263b_f200e3
cloudbees-bitbucket-branch-source:937.2.4
cloudbees-folder:6.1079.vc0975c2de294
command-launcher:123.v37cfdc92ef67
commons-collections4-api:4.5.0-8.va_d5448ef9011
commons-lang3-api:3.20.0-109.ve43756e2d2b_4
commons-text-api:1.15.0-210.v7480a_da_70b_9e
coverage:2.3139.v731d2e83ea_8a_
credentials:1487.va_d001ede2c31
credentials-binding:717.v951d49b_5f3a_a_
cvs:502.v02d5a_0c6b_9a_3
data-tables-api:2.3.5-1497.v38449eb_7d5a_1
datadog:9.1.8
display-url-api:2.217.va_6b_de84cc74b_
docker-commons:457.v0f62a_94f11a_3
docker-workflow:634.vedc7242b_eda_7
durable-task:651.v1f5e074fc83f
echarts-api:6.0.0-1165.vd1283a_3e37d4
eddsa-api:0.3.0.1-29.v67e9a_1c969b_b_
email-ext:1933.v45cec755423f
embeddable-build-status:637.vd878e68178f8
external-monitor-job:223.vb_fddcf42c9b_3
favorite:2.263.v941d21defef7
font-awesome-api:7.1.0-882.v1dfb_771e3278
forensics-api:3.1832.va_1179842528b_
git:5.10.0
git-client:6.5.0
git-forensics:3.2274.v3dc0fd546572
git-server:137.ve0060b_432302
gitea:268.v75e47974c01d
github:1.45.0
github-api:1.330-492.v3941a_032db_2a_
github-branch-source:1967.vdea_d580c1a_b_a_
gitlab-api:6.2.0-111.vf174d6b_8c12e
gitlab-branch-source:740.v04f287f9194d
gradle:2.18.1203.v2c96b_1243c72
gson-api:2.13.2-173.va_a_092315913c
handy-uri-templates-2-api:2.1.8-38.vcea_5d521d5f3
htmlpublisher:427
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:94.vcc3065403257
jackson2-api:2.20.1-423.v13951f6b_6532
jakarta-activation-api:2.1.4-1
jakarta-mail-api:2.1.5-1
jakarta-xml-bind-api:4.0.6-12.vb_1833c1231d3
javadoc:354.vee1a_660b_4990
javax-activation-api:1.2.0-8
javax-mail-api:1.6.2-11
jaxb:2.3.9-143.v5979df3304e6
jdk-tool:83.v417146707a_3d
jenkins-design-language:1.27.25
jersey2-api:2.47-165.ve7809a_3e87e0
jersey3-api:3.1.11-4.v77818819c2e1
jira:3.21
jjwt-api:0.11.5-120.v0268cf544b_89
jnr-posix-api:3.1.21-186.vb_7ec9b_23ce83
job-restrictions:216.v0732cc7fb_076
joda-time-api:2.14.0-177.vd7e9347b_e7d5
jquery:1.12.4-3
jquery3-api:3.7.1-619.vdb_10e002501a_
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20251224-185.v0cc18490c62c
json-path-api:2.10.0-202.va_9cc16c1e476
jsoup:1.22.1-76.v9cdb_2456c0e3
junit:1396.v095840ed8491
ldap:807.v7d7de30930cf
locale:614.va_6a_5a_1a_f2b_38
lockable-resources:1438.v3c0f8c9e2060
mailer:525.v2458b_d8a_1a_71
mapdb-api:1.0.9-44.va_1e1310c9118
matlab:1106.v9b_fb_b_7b_29b_5f
matrix-auth:3.2.9
matrix-project:870.v9db_fcfc2f45b_
mercurial:1323.ve69d2a_db_8a_b_d
metrics:4.2.37-494.v06f9a_939d33a_
mina-sshd-api-common:2.16.0-167.va_269f38cc024
mina-sshd-api-core:2.16.0-167.va_269f38cc024
monitoring:2.6.0
msbuild:1.38
okhttp-api:4.12.0-195.vc02552c04ffd
oss-symbols-api:442.v99039087229b_
pam-auth:1.12
pipeline-build-step:584.vdb_a_2cc3a_d07a_
pipeline-github-lib:65.v203688e7727e
pipeline-graph-analysis:254.v0f63a_a_447dca_
pipeline-graph-view:777.vdeb_113b_b_94da_
pipeline-groovy-lib:787.ve2fef0efdca_6
pipeline-input-step:540.v14b_100d754dd
pipeline-milestone-step:138.v78ca_76831a_43
pipeline-model-api:2.2277.v00573e73ddf1
pipeline-model-definition:2.2277.v00573e73ddf1
pipeline-model-extensions:2.2277.v00573e73ddf1
pipeline-rest-api:2.39
pipeline-stage-step:322.vecffa_99f371c
pipeline-stage-tags-metadata:2.2277.v00573e73ddf1
pipeline-stage-view:2.39
plain-credentials:199.v9f8e1f741799
plugin-util-api:6.1192.v30fe6e2837ff
prism-api:1.30.0-703.v116fb_3b_5b_b_a_a_
pubsub-light:1.19
resource-disposer:0.25
saferestart:102.v4dc1b_9636a_ee
scm-api:728.vc30dcf7a_0df5
script-security:1399.ve6a_66547f6e1
snakeyaml-api:2.5-149.v72471e9c6371
sse-gateway:1.29
ssh-credentials:361.vb_f6760818e8c
ssh-slaves:3.1096.v0b_cc466e4323
sshd:3.384.vc89b_5e138cf9
structs:362.va_b_695ef4fdf9
subversion:1303.vcfd9679fb_c12
thinBackup:2.1.3
timestamper:1.30
token-macro:477.vd4f0dc3cb_cf1
trilead-api:2.284.v1974ea_324382
variant:70.va_d9f17f859e0
versioncolumn:400.v3c5c3004f31d
warnings-ng:12.10010.vca_9e003f32a_2
workflow-aggregator:608.v67378e9d3db_1
workflow-api:1398.v67030756d3fb_
workflow-basic-steps:1098.v808b_fd7f8cf4
workflow-cps:4255.vd9c37f80fd8a_
workflow-durable-task-step:1464.v2d3f5c68f84c
workflow-job:1571.vb_423c255d6d9
workflow-multibranch:821.vc3b_4ea_780798
workflow-scm-step:466.va_d69e602552b_
workflow-step-api:710.v3e456cc85233
workflow-support:1015.v785e5a_b_b_8b_22
ws-cleanup:0.49

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows 11

Reproduction steps

When determining coverage from a Matlab m-script, the painting to a zip file fails for files containing extended ASCII characters.

Expected Results

I'd expected the Coverage plugin to run fine for files containing extended ascii characters. When I remove these characters the coverage paint is successfull.

Actual Results

The console shows:
10:50:59 [Coverage] [-ERROR-] Can't write coverage paint of 'Z:/Programming/Libraries/Simulink/Lib/v4.00/Tools/CompareFiles/INI.m' to zipped source file 'C:\BuildAgent\workspace\Libraries_TestSimulinkLibs_V400\coverage\Z__Programming_Libraries_Simulink_Lib_v4.00_Tools_CompareFiles_INI.m.zip'
10:50:59 [Coverage] [-ERROR-] java.nio.charset.UnmappableCharacterException: Input length = 1
10:50:59 [Coverage] [-ERROR-] at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:280)
10:50:59 [Coverage] [-ERROR-] at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:405)
10:50:59 [Coverage] [-ERROR-] at java.base/sun.nio.cs.StreamDecoder.lockedRead(StreamDecoder.java:217)
10:50:59 [Coverage] [-ERROR-] at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:171)
10:50:59 [Coverage] [-ERROR-] at java.base/java.io.InputStreamReader.read(InputStreamReader.java:188)
10:50:59 [Coverage] [-ERROR-] at java.base/java.io.BufferedReader.fill(BufferedReader.java:160)
10:50:59 [Coverage] [-ERROR-] at java.base/java.io.BufferedReader.implReadLine(BufferedReader.java:370)
10:50:59 [Coverage] [-ERROR-] at java.base/java.io.BufferedReader.readLine(BufferedReader.java:347)
10:50:59 [Coverage] [-ERROR-] at java.base/java.io.BufferedReader.readLine(BufferedReader.java:436)
10:50:59 [Coverage] [-ERROR-] at java.base/java.nio.file.Files.readAllLines(Files.java:3395)
10:50:59 [Coverage] [-ERROR-] at io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.paint(SourceCodePainter.java:208)
10:50:59 [Coverage] [-ERROR-] at io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.lambda$paintSource$1(SourceCodePainter.java:193)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.Optional.map(Optional.java:260)
10:50:59 [Coverage] [-ERROR-] at io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.paintSource(SourceCodePainter.java:193)
10:50:59 [Coverage] [-ERROR-] at io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.lambda$invoke$0(SourceCodePainter.java:155)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:214)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:960)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:934)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
10:50:59 [Coverage] [-ERROR-] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Anything else?

Please note that the supplied file INI.m is Windows-1252 encoded.

Are you interested in contributing a fix?

Please find attached the m-script which triggers the error

INI.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions