feat: add JUnit XML output format and --output-file flag for CI/CD test reporting
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Beginne in cmd/test.go und prüfe das pkg/output Formatter-Interface aus #371, bevor du die Integrationspunkte auswählst. Definiere die JUnit-Strukturen in pkg/output mit Go's encoding/xml, unterstütze --output-file für die Formatter-Ausgabe und verifiziere, dass das standardmäßige stdout-Verhalten unverändert bleibt, während JSON- und JUnit-Dateien die erwarteten Ergebnisse enthalten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Context:
Maintainer @Harsh4902 raised in #301: "can we store this output at a particular location for further usage?" — this issue directly addresses that question.
CI/CD platforms natively consume JUnit XML for test reporting:
- GitHub Actions: renders test results in PR summaries via junit-reporter
- Jenkins: JUnit plugin reads XML natively, no extra config
- GitLab CI:
artifacts: reports: junit:picks it up automatically - CircleCI:
store_test_resultsuses JUnit XML
Currently microcks test only outputs to stdout. There is no way to :
- Write results to a file for artifact upload or downstream tooling
- Produce JUnit XML that CI dashboards can render natively
This forces teams to parse text output with fragile regex, defeating the purpose of structured CI integration.
Description :
Two additive features, cleanly separated :
--output-file=<path>flag
Write test results to a file instead of (or in addition to) stdout.
Enables GitHub Actions artifact uploads, local file caching, and script pipelines without output redirection hacks.
microcks test ... --output json --output-file results.json
microcks test ... --output junit --output-file results.xml
- junit output format
A new format value for the --output flag (building on #371's pkg/output Formatter interface) :
Non-breaking: both flags are opt-in. Default behavior (text to stdout) unchanged.
Builds on #371: reuses the pkg/output Formatter interface — JUnit is just another Formatter implementation.
Implementation ideas:
- Add --output-file= to cmd/test.go — open the file, pass an io.Writer to the formatter :
var out io.Writer = os.Stdout
if outputFile != "" {
f, err := os.Create(outputFile)
if err != nil { ... }
defer f.Close()
out = f
}
- Add JUnitFormatter to pkg/output/ implementing the Formatter interface from #371:
type JUnitFormatter struct{}
func (f *JUnitFormatter) Format(result *TestResult, w io.Writer) error {
// marshal to encoding/xml JUnit structs
}
- JUnit XML structs (stdlib encoding/xml — zero new dependencies) :
type JUnitTestSuites struct {
XMLName xml.Name xml:"testsuites"
Suites []JUnitTestSuite xml:"testsuite"
}
type JUnitTestSuite struct {
Name string xml:"name,attr"
Tests int xml:"tests,attr"
Failures int xml:"failures,attr"
Cases []JUnitTestCase xml:"testcase"
}
no new dependencies — uses only stdlib encoding/xml.
happy to implement once the pkg/output foundation from #371 lands.
- Vorherrschende Sprache
- Go
- Sterne
- 58
- Forks
- 72
- Ø Merge
- 1 T. 7 Std.
- Gemergte PRs (30 T.)
- 22
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microcks/microcks-cli
-
Wrong link to test resultsEvtl. wieder frei @SajanBisht hat das vor 10 Tagen übernommen, und es ist kein Pull Request offen. Offencomponent/cli keep-open kind/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
microcks/microcks-cli#589 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Default configuration path falls back to the current directory when the home directory cannot be determinedEvtl. vergeben @Sarthak-Shreshtha01 hat das vor 14 Tagen übernommen. Offencomponent/cli kind/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microcks/microcks-cli#583 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
microcks test exits with code 1 (contract failure) instead of code 11 (connection) when polling loop times outEvtl. vergeben @ish-g09 hat das vor 12 Tagen übernommen. Offencomponent/cli kind/bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
microcks/microcks-cli#573 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug: YAML parse error in config is silently swallowed, login overwrites all other contextsEvtl. vergeben @Sarthak-Shreshtha01 hat das vor 19 Tagen übernommen. Offencomponent/cli kind/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microcks/microcks-cli#572 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
import-dir uploads secondary artifacts before their primary API definitionEvtl. vergeben @doraem-on hat das vor 26 Tagen übernommen. Offencomponent/cli kind/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
microcks/microcks-cli#561 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in microcks/microcks-cli
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ovh/ovhcloud-cli#309 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
area/docs
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
layer5io/getnighthawk#380 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag