JUnit report jenkins compatibility
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- PR マージ指標
- PR 指標を取得中
説明
Bug Report
It looks like the current stable mypy-0.800-cp36-cp36m-manylinux2010_x86_64.whl does not generate a "valid" junit compatible file as jenkins treats it. I know that the junit format is not really standardised, but I think it would be cool if the file generated was jenkins compatible (or may be a little tool was provided that converts the "incorrect" format to a "correct" one).
An example of a file that fails in jenkins is
<?xml version="1.0" encoding="utf-8"?>
<testsuite errors="0" failures="1" name="mypy" skips="0" tests="1" time="3.867">
<testcase classname="mypy" file="mypy" line="1" name="mypy-py3_6-linux" time="3.867">
<failure message="mypy produced messages">xxx.py:62: error: Incompatible types in assignment (expression has type "None", variable has type "Union[aaa, bbb]")</failure>
</testcase>
</testsuite>
and the corresponding stacktrace:
00:01:59.084 Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 10.51.5.215/10.51.5.215:40124
00:01:59.084 at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1800)
00:01:59.084 at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
00:01:59.084 at hudson.remoting.Channel.call(Channel.java:1001)
00:01:59.084 at hudson.FilePath.act(FilePath.java:1157)
00:01:59.084 at hudson.FilePath.act(FilePath.java:1146)
00:01:59.084 at org.jenkinsci.plugins.xunit.XUnitProcessor.processTestsReport(XUnitProcessor.java:183)
00:01:59.084 at org.jenkinsci.plugins.xunit.XUnitProcessor.process(XUnitProcessor.java:157)
00:01:59.084 at org.jenkinsci.plugins.xunit.pipeline.XUnitResultsStepExecution.run(XUnitResultsStepExecution.java:83)
00:01:59.084 at org.jenkinsci.plugins.xunit.pipeline.XUnitResultsStepExecution.run(XUnitResultsStepExecution.java:49)
00:01:59.084 at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
00:01:59.084 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
00:01:59.084 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
00:01:59.084 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
00:01:59.084 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
00:01:59.084 org.jenkinsci.plugins.xunit.service.TransformerException: The result file '/home/jenkins/agent/workspace/project/.ci/logs/mypy.xml' for the metric 'JUnit' is not valid. The result file has been skipped.
00:01:59.084 at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:111)
00:01:59.084 at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:38)
00:01:59.084 at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3313)
00:01:59.084 at hudson.remoting.UserRequest.perform(UserRequest.java:211)
00:01:59.084 at hudson.remoting.UserRequest.perform(UserRequest.java:54)
00:01:59.084 at hudson.remoting.Request$2.run(Request.java:376)
00:01:59.084 at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)
00:01:59.084 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
00:01:59.084 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
00:01:59.084 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
00:01:59.084 at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:119)
00:01:59.084 at java.lang.Thread.run(Thread.java:748)
To Reproduce
(Write your steps here:)
- Generate a junit report with
--junit-xml - Feed it to the jenkins junit
Expected Behavior
(Write what you thought would happen.)
Actual Behavior
(Write what happened.)
Your Environment
- Mypy version used: mypy-0.800-cp36-cp36m-manylinux2010_x86_64.whl
- Mypy command-line flags: mypy *.py --junit-xml /path/to/report.xml
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.6.13
- Operating system and version: docker (python:3.6-slim)
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
--junit-xml コマンドラインオプションの実装から始め、Jenkins の JUnit 処理で生成されたレポートを再現します。レポートと Jenkins のエラーを比較し、報告された mypy の失敗の詳細を失うことなく、生成されたファイルが Jenkins に受け入れられることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- ci-cd, testing-qa
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100