No longer generating fields equal to their default value
diff --git a/build.properties b/build.properties
index 831b13b..3eec206 100644
--- a/build.properties
+++ b/build.properties
@@ -24,6 +24,7 @@
junit.jar=junit-3.8.1.jar
ant.jar=ant-1.6.5.jar
jcommander.jar=jcommander-1.3.jar
+yaml.jar=snakeyaml-1.6.jar
#
# Names of distributions
diff --git a/build.xml b/build.xml
index 37bcd45..4f5ca4c 100644
--- a/build.xml
+++ b/build.xml
@@ -146,6 +146,7 @@
<zipfileset src="${lib.dir}/${beanshell.jar}" />
<zipfileset src="${lib.dir}/${jcommander.jar}" />
<zipfileset src="${lib.dir}/${junit.jar}" />
+ <zipfileset src="${lib.dir}/${yaml.jar}" />
</jar>
</target>
diff --git a/src/main/java/org/testng/internal/Yaml.java b/src/main/java/org/testng/internal/Yaml.java
index c66654e..45d6345 100644
--- a/src/main/java/org/testng/internal/Yaml.java
+++ b/src/main/java/org/testng/internal/Yaml.java
@@ -2,7 +2,6 @@
import javax.xml.parsers.ParserConfigurationException;
-import org.testng.IObjectFactory;
import org.testng.xml.Parser;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlInclude;
@@ -102,146 +101,27 @@
}
}
- private static XmlSuite parse(Map o) {
- XmlSuite result = new XmlSuite();
-
- //
- // <suite>
- //
- Map<Object, Object> suite = (Map<Object, Object>) o.get("suite");
- setField(result, suite, "name", "setName", String.class);
- setField(result, suite, "verbose", "setVerbose", Integer.class);
- result.setParallel(((Boolean) suite.get("parallel")).toString());
- result.setThreadCount((Integer) suite.get("thread-count"));
- result.setDataProviderThreadCount((Integer) suite.get("data-provider-thread-count"));
- result.setJUnit((Boolean) suite.get("junit"));
- setField(result, suite, "configfailurepolicy", "setConfigFailurePolicy", String.class);
- result.setThreadCount((Integer) suite.get("thread-count"));
- result.setTimeOut((String) suite.get("time-out"));
- setField(result, suite, "skipfailedinvocationcounts", "setSkipFailedInvocationCounts",
- Boolean.class);
- result.setObjectFactory((IObjectFactory) suite.get("object-factory"));
-
-
- //
- // <method-selectors>
- //
- {
- List<Map<String, Object>> selectors =
- (List<Map<String, Object>>) suite.get("method-selectors");
- if (selectors != null) {
- for (Map<String, Object> s : selectors) {
- String cls = (String) s.get("selector-class");
- if (cls != null) {
- org.testng.xml.XmlMethodSelector ms = new org.testng.xml.XmlMethodSelector();
- ms.setPriority((Integer) s.get("priority"));
- ms.setName(cls);
- result.getMethodSelectors().add(ms);
- }
- String script = (String) s.get("script");
- if (script != null) {
- org.testng.xml.XmlMethodSelector ms = new org.testng.xml.XmlMethodSelector();
- ms.setExpression(script);
- ms.setLanguage((String) s.get("language"));
- result.getMethodSelectors().add(ms);
- }
- }
- }
- }
-
- //
- // <listeners>
- //
- addToList(suite, "listeners", result.getListeners());
-
- //
- // <packages>
- //
- {
- List<Map<String, String>> packages = (List<Map<String, String>>) suite.get("packages");
- for (Map<String, String> p : packages) {
- XmlPackage xp = new XmlPackage(p.get("name"));
- result.getXmlPackages().add(xp);
- }
- }
-
- //
- // <parameters>
- //
-
- addToMap(suite, "parameters:", result.getParameters());
-
-
- //
- // <test>
- //
- {
- List<Map<String, Object>> tests = (List<Map<String, Object>>) suite.get("tests");
- for (Map<String, Object> test : tests) {
- XmlTest xmlTest = new XmlTest(result);
- xmlTest.setName(test.get("name").toString());
- setField(xmlTest, test, "junit", "setJUnit", Boolean.class);
- setField(xmlTest, test, "verbose", "setVerbose", Integer.class);
- xmlTest.setParallel((String) test.get("parallel"));
- setField(xmlTest, test, "thread-count", "setThreadCount", Integer.class);
- setField(xmlTest, test, "time-out", "setTimeOut", Long.class);
- setField(xmlTest, test, "skipfailedinvocationcounts", "setSkipFailedInvocationCounts",
- Boolean.class);
- setField(xmlTest, test, "preserve-order", "setPreserveOrder", Boolean.class);
-
- //
- // <classes>
- //
- List<Map<String, String>> classes = (List<Map<String, String>>) test.get("classes");
- for (Map<String, String> c : classes) {
- XmlClass xmlClass = new XmlClass(c.get("name"));
- xmlTest.getXmlClasses().add(xmlClass);
- }
-
- //
- // <parameter>
- //
-
- //
- // <groups>
- //
-
- //
- // <packages>
- //
- }
- }
-
- //
- // <method-selectors>
- //
-
- //
- // <suite-files>
- //
-
- System.out.println(result.toXml());
- return result;
- }
-
- private static void maybeAdd(StringBuilder sb, String key, Object value) {
- maybeAdd(sb, "", key, value);
+ private static void maybeAdd(StringBuilder sb, String key, Object value, Object def) {
+ maybeAdd(sb, "", key, value, def);
}
- private static void maybeAdd(StringBuilder sb, String sp, String key, Object value) {
- if (value != null) sb.append(sp).append(key).append(": ").append(value.toString())
- .append("\n");
+ private static void maybeAdd(StringBuilder sb, String sp, String key, Object value, Object def) {
+ if (value != null && ! value.equals(def)) {
+ sb.append(sp).append(key).append(": ").append(value.toString()).append("\n");
+ }
}
public static StringBuilder toYaml(XmlSuite suite) {
StringBuilder result = new StringBuilder();
- maybeAdd(result, "name", suite.getName());
- maybeAdd(result, "junit", suite.isJUnit());
- maybeAdd(result, "verbose", suite.getVerbose());
- maybeAdd(result, "threadCount", suite.getThreadCount());
- maybeAdd(result, "timeOut", suite.getTimeOut());
- maybeAdd(result, "skipFailedInvocationCounts", suite.skipFailedInvocationCounts());
+ maybeAdd(result, "name", suite.getName(), null);
+ maybeAdd(result, "junit", suite.isJUnit(), XmlSuite.DEFAULT_JUNIT);
+ maybeAdd(result, "verbose", suite.getVerbose(), XmlSuite.DEFAULT_VERBOSE);
+ maybeAdd(result, "threadCount", suite.getThreadCount(), XmlSuite.DEFAULT_THREAD_COUNT);
+ maybeAdd(result, "timeOut", suite.getTimeOut(), null);
+ maybeAdd(result, "parallel", suite.getParallel(), XmlSuite.DEFAULT_PARALLEL);
+ maybeAdd(result, "skipFailedInvocationCounts", suite.skipFailedInvocationCounts(),
+ XmlSuite.DEFAULT_SKIP_FAILED_INVOCATION_COUNTS);
toYaml(result, "parameters", "", suite.getParameters());
if (suite.getPackages().size() > 0) {
@@ -262,12 +142,15 @@
private static void toYaml(StringBuilder result, String sp, XmlTest t) {
String sp2 = sp + " ";
result.append(sp).append("- name: ").append(t.getName()).append("\n");
- maybeAdd(result, sp2, "junit", t.isJUnit());
- maybeAdd(result, sp2, "verbose", t.getVerbose());
- maybeAdd(result, sp2, "parallel", t.getParallel());
- maybeAdd(result, sp2, "timeOut", t.getTimeOut());
- maybeAdd(result, sp2, "skipFailedInvocationCounts", t.skipFailedInvocationCounts());
- maybeAdd(result, sp2, "preserveOrder", t.getPreserveOrder());
+
+ maybeAdd(result, "junit", sp2, t.isJUnit(), XmlSuite.DEFAULT_JUNIT);
+ maybeAdd(result, "verbose", sp2, t.getVerbose(), XmlSuite.DEFAULT_VERBOSE);
+ maybeAdd(result, "timeOut", sp2, t.getTimeOut(), null);
+ maybeAdd(result, "parallel", sp2, t.getParallel(), XmlSuite.DEFAULT_PARALLEL);
+ maybeAdd(result, "skipFailedInvocationCounts", t.skipFailedInvocationCounts(),
+ XmlSuite.DEFAULT_SKIP_FAILED_INVOCATION_COUNTS);
+
+ maybeAdd(result, "preserveOrder", sp2, t.getPreserveOrder(), XmlTest.DEFAULT_PRESERVE_ORDER);
toYaml(result, "parameters", sp2, t.getTestParameters());
@@ -310,8 +193,7 @@
result.append(" }\n");
}
- // <!ELEMENT test (method-selectors?,) >
-
+ result.append("\n");
}
private static void toYaml(StringBuilder result, String sp2, XmlClass xc) {
diff --git a/src/main/java/org/testng/xml/XmlSuite.java b/src/main/java/org/testng/xml/XmlSuite.java
index 1434bff..b84e3aa 100755
--- a/src/main/java/org/testng/xml/XmlSuite.java
+++ b/src/main/java/org/testng/xml/XmlSuite.java
@@ -53,20 +53,25 @@
private String m_name = DEFAULT_SUITE_NAME;
/** The suite verbose flag. (0 to 10)*/
+ public static Integer DEFAULT_VERBOSE = 1;
private Integer m_verbose = null;
-
+
+ public static String DEFAULT_PARALLEL = "false";
private String m_parallel = null;
/** Whether to SKIP or CONTINUE to re-attempt failed configuration methods. */
private String m_configFailurePolicy = SKIP;
/** JUnit compatibility flag. */
- private Boolean m_isJUnit = Boolean.FALSE;
-
- private Boolean m_skipFailedInvocationCounts = Boolean.FALSE;
+ public static Boolean DEFAULT_JUNIT = Boolean.FALSE;
+ private Boolean m_isJUnit = DEFAULT_JUNIT;
+
+ public static boolean DEFAULT_SKIP_FAILED_INVOCATION_COUNTS = Boolean.FALSE;
+ private Boolean m_skipFailedInvocationCounts = DEFAULT_SKIP_FAILED_INVOCATION_COUNTS;
/** The thread count. */
- private int m_threadCount = 5;
+ public static Integer DEFAULT_THREAD_COUNT = 5;
+ private int m_threadCount = DEFAULT_THREAD_COUNT;
/** Thread count for the data provider pool */
public static final int DEFAULT_DATA_PROVIDER_THREAD_COUNT = 10;
@@ -452,7 +457,9 @@
p.setProperty("thread-count", String.valueOf(getThreadCount()));
p.setProperty("data-provider-thread-count", String.valueOf(getDataProviderThreadCount()));
p.setProperty("annotations", getAnnotations());
- p.setProperty("junit", m_isJUnit != null ? m_isJUnit.toString() : "false"); // TESTNG-141
+ if (! DEFAULT_JUNIT.equals(m_isJUnit)) {
+ p.setProperty("junit", m_isJUnit != null ? m_isJUnit.toString() : "false"); // TESTNG-141
+ }
p.setProperty("skipfailedinvocationcounts",
m_skipFailedInvocationCounts != null
? m_skipFailedInvocationCounts.toString() : "false");
diff --git a/src/main/java/org/testng/xml/XmlTest.java b/src/main/java/org/testng/xml/XmlTest.java
index 357d9ca..91d7e03 100755
--- a/src/main/java/org/testng/xml/XmlTest.java
+++ b/src/main/java/org/testng/xml/XmlTest.java
@@ -48,7 +48,8 @@
private Boolean m_skipFailedInvocationCounts;
private Map<String, List<Integer>> m_failedInvocationNumbers = null; // lazily initialized
- private String m_preserveOrder;
+ public static String DEFAULT_PRESERVE_ORDER = "false";
+ private String m_preserveOrder = DEFAULT_PRESERVE_ORDER;
/**
* Constructs a <code>XmlTest</code> and adds it to suite's list of tests.
diff --git a/src/test/resources/testng.yaml b/src/test/resources/testng.yaml
index 0f0ee8b..8940e45 100644
--- a/src/test/resources/testng.yaml
+++ b/src/test/resources/testng.yaml
@@ -1,23 +1,13 @@
name: TestNG
-junit: false
-verbose: 1
threadCount: 2
-skipFailedInvocationCounts: false
parameters: { short: 47, parameter: out, char: c, byte: 43, first-name: Cedric, int: 42, string: Cedric, factory-param: FactoryParam, boolean: true, long: 46, double: 44.0, float: 45.0 }
tests:
- name: Nopackage
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ nopackage ]
classes:
- name: NoPackageTest
+
- name: Regression1
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
excludedGroups: [ excludeThisGroup ]
classes:
- name: test.parameters.ParameterSample
@@ -30,11 +20,8 @@
- name: test.expectedexceptions.WrappedExpectedException
- name: test.parameters.OptionalParameterTest
metaGroups: { evenodd: [ even, odd ] }
+
- name: Regression2
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
excludedGroups: [ broken ]
classes:
- name: test.Test1
@@ -88,54 +75,36 @@
- name: test.listeners.ListenerTest
- name: test.preserveorder.PreserveOrderTest
- name: test.listeners.ResultEndMillisTest
+
- name: Injection
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.inject.InjectTestContextTest
- name: test.inject.InjectBeforeMethodTest
- name: test.inject.InjectTestResultTest
- name: test.inject.InjectDataProviderTest
- name: test.inject.NoInjectionTest
+
- name: BeforeMethod
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.configuration.BeforeMethodTest
+
- name: Factory tests
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.factory.classconf.XClassOrderWithFactoryTest
- name: test.factory.FactoryInterleavingTest
+
- name: Basic
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.sample.Basic2
- name: test.sample.Basic1
- name: test.Misc
+
- name: Exclusion
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
excludedGroups: [ excludeThisGroup ]
classes:
- name: test.Test2
+
- name: Dependents
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { foo: Cedric }
classes:
- name: test.dependent.MissingGroupTest
@@ -156,75 +125,48 @@
- name: test.dependent.DepBugVerifyTest
- name: test.dependent.DependsOnProtectedMethodTest
- name: test.dependsongroup.DependsOnGroupsTest
+
- name: Inheritance
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.SampleInheritance
- name: test.inheritance.ClassScopeTest
+
- name: Test outer scope
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ outer-group ]
classes:
- name: test.sample.Scope
+
- name: Test inner scope
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { parameter: in }
includedGroups: [ inner-group ]
classes:
- name: test.sample.Scope
+
- name: AfterClassCalledAtEnd
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.sample.AfterClassCalledAtEnd
+
- name: Triangle
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.triangle.Child1
- name: test.triangle.Child2
+
- name: CheckTrianglePost
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { expected-calls: 2 }
classes:
- name: test.triangle.CheckCount
+
- name: Test class groups 1
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.classgroup.Second
- name: test.classgroup.First
+
- name: Test class groups 2
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.classgroup.First
- name: test.classgroup.Second
+
- name: Factory
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.factory.FactoryTest
- name: test.factory.VerifyFactoryTest
@@ -237,136 +179,91 @@
- name: test.factory.FactoryOrderMainTest
- name: test.factory.FactoryFailureTest
- name: test.factory.FactoryInSuperClassTest
+
- name: TimeOut
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.timeout.TimeOutTest
- name: test.timeout.TimeOutFromXmlTest
+
- name: InvocationCount
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { count: 10 }
classes:
- name: test.InvocationAndSuccessPercentageTest
- name: test.invocationcount.FailedInvocationCountTest
- name: test.invocationcount.FirstAndLastTimeTest
+
- name: Method1
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.methods.SampleMethod1
includedMethods:
- shouldRun1
- shouldRun2
- name: test.methods.VerifyMethod1
+
- name: Method2
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.methods.SampleMethod1
excludedMethods:
- shouldNotRun1
- shouldNotRun2
- name: test.methods.VerifyMethod1
+
- name: Method3
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.methods.SampleMethod1
excludedMethods:
- .*Not.*
- name: test.methods.VerifyMethod1
+
- name: Object factory
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.objectfactory.CustomFactoryTest
- name: test.objectfactory.CombinedTestAndObjectFactoryTest
+
- name: Parameters for constructors
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.ParameterConstructorTest
+
- name: Excluded methods
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ group1, group2 ]
classes:
- name: test.Exclude
excludedMethods:
- excluded1
- excluded2
+
- name: Parameters in init 1
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { param: value1 }
classes:
- name: test.configuration.ConfigurationWithParameters
+
- name: Parameters in init 2
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
parameters: { param: value2 }
classes:
- name: test.configuration.ConfigurationWithParameters
+
- name: Individual method
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.IndividualMethodsTest
includedMethods:
- testMethod
+
- name: Method inheritance
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.inheritance.DChild_2
- name: test.inheritance.VerifyTest
+
- name: Method selectors
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.methodselectors.MethodSelectorTest
- name: test.methodselectors.BeanShellTest
- name: test.methodselectors.CommandLineTest
+
- name: Test order invocation
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.interleavedorder.InterleavedInvocationTest
+
- name: DataProvider
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.dataprovider.Sample1Test
- name: test.dataprovider.IterableTest
@@ -384,51 +281,33 @@
- name: test.dataprovider.FailingIterableDataProviderTest
- name: test.dataprovider.ClassTest
- name: test.dataprovider.InheritedDataProviderTest
+
- name: DP
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.dataprovider.ParallelDataProviderTest
+
- name: UniqueSuite
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.uniquesuite.TestBefore1
- name: test.uniquesuite.TestBefore2
- name: test.uniquesuite.TestAfter
+
- name: InheritGroups
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ group1 ]
classes:
- name: test.configuration.ConfigurationInheritGroupsSampleTest
+
- name: Nested
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ unittest ]
xmlPackages:
- name: test.nested.*
+
- name: Hookable
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.hook.HookSuccessTest
- name: test.hook.HookFailureTest
+
- name: BeforeGroups-AfterGroups-1
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.configuration.ConfigurationGroups1SampleTest
- name: test.configuration.ConfigurationGroups2SampleTest
@@ -437,81 +316,52 @@
- name: test.configuration.ConfigurationGroups5SampleTest
- name: test.configuration.ConfigurationGroups6SampleTest
- name: test.configuration.ConfigurationGroups7SampleTest
+
- name: BeforeGroups-AfterGroups-2
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ A, B ]
classes:
- name: test.configuration.ConfigurationGroups8SampleTest
+
- name: JUnit
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.JUnitTest1
- name: test.CommandLineTest
+
- name: Ant-ClassFileResolution
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.ant.TestCommandLineArgs
+
- name: Class Run
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.regression.groupsordering.A
- name: test.regression.groupsordering.B
+
- name: Groups Run
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ a ]
classes:
- name: test.regression.groupsordering.A
- name: test.regression.groupsordering.B
+
- name: External group invocation
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
includedGroups: [ a ]
classes:
- name: test.groupinvocation.GroupConfiguration
- name: test.groupinvocation.DummyTest
+
- name: SkipExceptions
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.skipex.SkippedExceptionTest
+
- name: MethodInterceptor
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.methodinterceptors.MethodInterceptorTest
+
- name: Asserts
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.asserttests.AssertTest
+
- name: ConfigFailurePolicy
- junit: false
- verbose: 1
- parallel: false
- skipFailedInvocationCounts: false
classes:
- name: test.configurationfailurepolicy.FailurePolicyTest
+