tebeka / go2xunit

Convert "go test" output to xunit compatible (used in Jenkins/Hudson)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for nested test suite output ?

mohanraj-r opened this issue · comments

I am using "github.com/tebeka/go2xunit/lib" to build junit xml output for a custom go tool.
I am wondering if its possible to build nested test output e.g. as in xunit-viewer/complete_multi_suites.xml

e.g

 <!-- nested suites -->
        <testsuite name="parent">
            <testcase name="parent test"></testcase>
            <testsuite name="child one">
                <testcase name="child one test"></testcase>
            </testsuite>
            <testsuite name="child two">
                <testcase name="child two test"></testcase>
                <testsuite name="child of child two">
                    <testcase name="child of child two test"></testcase>
                </testsuite>
            </testsuite>
        </testsuite>

The basic usage of the lib in my tool is

suite := &xunit.Suite{Name: "foo"}

	for _, r := range results {
                 t := &xunit.Test{
				Name:   r.Name,
				Status:  r.Status,
				Message: r.GetDebugInfo(),
			}
			suite.Tests = append(suite.Tests, t)
        }

xunit.WriteXML(xunit.Suites{suite}, out, xunit.XUnitTemplate, time.Now())

But the results have 3 level nested hierarchy of data (not shown in the sample above for simplification) and distinctly different categories. I would like to use the nested structure of xunit testsuite to produce a better nested output than the plain single level output. But not sure if its possible using "go2xunit/lib"

For this to be possible I guess the Suite type should have a pointer to itself ?
I see that the Test type has an unexported field isParentTest - I was able to trace out how this field is used vaguely - but not sure if this would be helpful here esp since its not exported.

Hi. Will have a look Thursday.

@tebeka wondering if you had a chance to look into this

I guess it's possible and will require some code changes. Sadly I'm super busy right now and don't have time to do these changes. I'll probably have some free time mid-June.

I'd love to get a patch if you're interested, can mentor to some degree.