You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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_results uses 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
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
}
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:
artifacts: reports: junit:picks it up automaticallystore_test_resultsuses JUnit XMLCurrently
microcks testonly outputs to stdout. There is no way to :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>flagWrite 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.
A new format value for the --output flag (building on feat: add global output formatter support (text/json/yaml) #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:
var out io.Writer = os.Stdout
if outputFile != "" {
f, err := os.Create(outputFile)
if err != nil { ... }
defer f.Close()
out = f
}
type JUnitFormatter struct{}
func (f *JUnitFormatter) Format(result *TestResult, w io.Writer) error {
// marshal to encoding/xml JUnit structs
}
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.