From 3fe4a3d214efb8f80852a9feba1cc8a80bd3dcde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Sedl=C3=A1k?= Date: Tue, 21 Jan 2014 16:48:45 +0100 Subject: [PATCH] Add support for Test Stability with Junit Adds test-stability option to junit test result publisher, requires Test stability plugin to be installed. https://wiki.jenkins-ci.org/display/JENKINS/Test+stability+plugin Change-Id: Idd7ef1bdeaf9e6fd8881bab5729950dc717ce9f3 --- jenkins_jobs/modules/publishers.py | 22 ++++++++++++++++------ tests/publishers/fixtures/junit001.xml | 10 ++++++++++ tests/publishers/fixtures/junit001.yaml | 3 +++ tests/publishers/fixtures/junit002.xml | 12 ++++++++++++ tests/publishers/fixtures/junit002.yaml | 5 +++++ 5 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 tests/publishers/fixtures/junit001.xml create mode 100644 tests/publishers/fixtures/junit001.yaml create mode 100644 tests/publishers/fixtures/junit002.xml create mode 100644 tests/publishers/fixtures/junit002.yaml diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py index 2ca3cd7a5..baa6e71a6 100644 --- a/jenkins_jobs/modules/publishers.py +++ b/jenkins_jobs/modules/publishers.py @@ -677,20 +677,30 @@ def junit(parser, xml_parent, data): :arg str results: results filename :arg bool keep-long-stdio: Retain long standard output/error in test results (default true). + :arg bool test-stability: Add historical information about test + results stability (default false). + Requires the Jenkins `Test stability Plugin + `_. - Example:: + Minimal example using defaults: + + .. literalinclude:: /../../tests/publishers/fixtures/junit001.yaml + + Full example: + + .. literalinclude:: /../../tests/publishers/fixtures/junit002.yaml - publishers: - - junit: - results: nosetests.xml - keep-long-stdio: false """ junitresult = XML.SubElement(xml_parent, 'hudson.tasks.junit.JUnitResultArchiver') XML.SubElement(junitresult, 'testResults').text = data['results'] XML.SubElement(junitresult, 'keepLongStdio').text = str( data.get('keep-long-stdio', True)).lower() - XML.SubElement(junitresult, 'testDataPublishers') + datapublisher = XML.SubElement(junitresult, 'testDataPublishers') + if str(data.get('test-stability', False)).lower() == 'true': + XML.SubElement(datapublisher, + 'de.esailors.jenkins.teststability' + '.StabilityTestDataPublisher') def xunit(parser, xml_parent, data): diff --git a/tests/publishers/fixtures/junit001.xml b/tests/publishers/fixtures/junit001.xml new file mode 100644 index 000000000..1a229609f --- /dev/null +++ b/tests/publishers/fixtures/junit001.xml @@ -0,0 +1,10 @@ + + + + + nosetests.xml + true + + + + diff --git a/tests/publishers/fixtures/junit001.yaml b/tests/publishers/fixtures/junit001.yaml new file mode 100644 index 000000000..db17b641f --- /dev/null +++ b/tests/publishers/fixtures/junit001.yaml @@ -0,0 +1,3 @@ +publishers: +- junit: + results: nosetests.xml diff --git a/tests/publishers/fixtures/junit002.xml b/tests/publishers/fixtures/junit002.xml new file mode 100644 index 000000000..e807e9993 --- /dev/null +++ b/tests/publishers/fixtures/junit002.xml @@ -0,0 +1,12 @@ + + + + + nosetests-example.xml + false + + + + + + diff --git a/tests/publishers/fixtures/junit002.yaml b/tests/publishers/fixtures/junit002.yaml new file mode 100644 index 000000000..045752041 --- /dev/null +++ b/tests/publishers/fixtures/junit002.yaml @@ -0,0 +1,5 @@ +publishers: +- junit: + results: nosetests-example.xml + keep-long-stdio: false + test-stability: true