Merge ~vpa1977/+git/testng7:main into ~vpa1977/+git/testng7:6.9.12-4

Proposed by Vladimir Petko
Status: Needs review
Proposed branch: ~vpa1977/+git/testng7:main
Merge into: ~vpa1977/+git/testng7:6.9.12-4
Diff against target: 251465 lines (+126786/-3705)
2344 files modified
.editorconfig (+44/-0)
ANNOUNCEMENT.txt (+12/-12)
CHANGES.txt (+494/-33)
LICENSE.txt (+2/-2)
README.md (+46/-8)
build-logic/basics/build.gradle.kts (+3/-0)
build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts (+10/-0)
build-logic/basics/src/main/kotlin/testng.reproducible-builds.gradle.kts (+7/-0)
build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts (+5/-0)
build-logic/code-quality/build.gradle.kts (+12/-0)
build-logic/code-quality/src/main/kotlin/testng.sonarqube.gradle.kts (+12/-0)
build-logic/code-quality/src/main/kotlin/testng.style.gradle.kts (+13/-0)
build-logic/code-quality/src/main/kotlin/testng.testing.gradle.kts (+40/-0)
build-logic/jvm/build.gradle.kts (+14/-0)
build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt (+16/-0)
build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts (+64/-0)
build-logic/jvm/src/main/kotlin/testng.java-platform.gradle.kts (+4/-0)
build-logic/jvm/src/main/kotlin/testng.java.gradle.kts (+28/-0)
build-logic/jvm/src/main/kotlin/testng.kotlin-library.gradle.kts (+17/-0)
build-logic/publishing/build.gradle.kts (+14/-0)
build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt (+19/-0)
build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt (+16/-0)
build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt (+34/-0)
build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt (+89/-0)
build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt (+100/-0)
build-logic/publishing/src/main/kotlin/testng.local-maven-repo.gradle.kts (+40/-0)
build-logic/publishing/src/main/kotlin/testng.maven-publish.gradle.kts (+51/-0)
build-logic/publishing/src/main/kotlin/testng.merge-feature-jars.gradle.kts (+160/-0)
build-logic/publishing/src/main/kotlin/testng.published-java-library.gradle.kts (+41/-0)
build-logic/publishing/src/main/kotlin/testng.published-java-platform.gradle.kts (+13/-0)
build-logic/settings.gradle.kts (+12/-0)
build.gradle.kts (+56/-0)
debian/changelog (+10/-2)
debian/control (+12/-7)
debian/copyright (+8/-1)
debian/libtestng7-java.poms (+1/-1)
debian/maven.ignoreRules (+0/-1)
debian/maven.rules (+1/-0)
debian/patches/build-with-gradle.patch (+128/-0)
debian/patches/series (+1/-2)
debian/rules (+9/-1)
debian/source/lintian-overrides (+5/-0)
debian/watch (+7/-3)
dev/null (+0/-8)
gradle.properties (+23/-0)
gradlew (+69/-48)
gradlew.bat (+89/-90)
settings.gradle.kts (+41/-0)
testng-ant/src/main/java/org/testng/TestNGAntTask.java (+347/-413)
testng-ant/src/test/java/test/ant/AntTest.java (+29/-0)
testng-ant/src/test/java/test/ant/MyReporter.java (+21/-0)
testng-ant/src/test/java/test/ant/SimpleSample.java (+12/-0)
testng-ant/src/test/resources/ant/build-reporter-config.xml (+17/-0)
testng-ant/src/test/resources/ant/build-simple.xml (+13/-0)
testng-ant/testng-ant-build.gradle.kts (+11/-0)
testng-api/testng-api-build.gradle.kts (+11/-0)
testng-asserts/src/main/java/org/testng/Assert.java (+2213/-0)
testng-asserts/src/main/java/org/testng/FileAssert.java (+359/-0)
testng-asserts/src/main/java/org/testng/asserts/Assertion.java (+524/-469)
testng-asserts/src/main/java/org/testng/asserts/IAssert.java (+3/-0)
testng-asserts/src/main/java/org/testng/asserts/IAssertLifecycle.java (+40/-0)
testng-asserts/src/main/java/org/testng/asserts/LoggingAssert.java (+19/-0)
testng-asserts/src/main/java/org/testng/asserts/SoftAssert.java (+49/-0)
testng-asserts/src/main/java/org/testng/internal/EclipseInterface.java (+18/-0)
testng-asserts/src/test/java/org/testng/AssertTest.java (+665/-0)
testng-asserts/src/test/java/test/assertion/AssertionTest.java (+58/-0)
testng-asserts/src/test/java/test/assertion/MyRawAssertion.java (+66/-0)
testng-asserts/src/test/java/test/assertion/SoftAssertTest.java (+98/-0)
testng-asserts/src/test/java/test/asserttests/ArrayEqualityAssertTest.java (+334/-0)
testng-asserts/src/test/java/test/asserttests/AssertTest.java (+483/-0)
testng-asserts/testng-asserts-build.gradle.kts (+14/-0)
testng-bom/testng-bom-build.gradle.kts (+19/-0)
testng-collections/src/main/java/org/testng/collections/CollectionUtils.java (+22/-0)
testng-collections/src/main/java/org/testng/collections/ListMultiMap.java (+16/-0)
testng-collections/src/main/java/org/testng/collections/Lists.java (+85/-0)
testng-collections/src/main/java/org/testng/collections/Maps.java (+47/-0)
testng-collections/src/main/java/org/testng/collections/MultiMap.java (+91/-0)
testng-collections/src/main/java/org/testng/collections/Objects.java (+89/-0)
testng-collections/src/main/java/org/testng/collections/SetMultiMap.java (+16/-0)
testng-collections/src/main/java/org/testng/collections/Sets.java (+33/-0)
testng-collections/src/main/java/org/testng/util/Strings.java (+76/-0)
testng-collections/testng-collections-build.gradle.kts (+3/-0)
testng-core-api/src/main/java/org/testng/IAlterSuiteListener.java (+24/-0)
testng-core-api/src/main/java/org/testng/IAnnotationTransformer.java (+79/-0)
testng-core-api/src/main/java/org/testng/IAttributes.java (+12/-13)
testng-core-api/src/main/java/org/testng/IClass.java (+40/-0)
testng-core-api/src/main/java/org/testng/IClassListener.java (+12/-0)
testng-core-api/src/main/java/org/testng/IConfigurable.java (+13/-0)
testng-core-api/src/main/java/org/testng/IConfigurationListener.java (+81/-0)
testng-core-api/src/main/java/org/testng/IConfigurationListener2.java (+7/-0)
testng-core-api/src/main/java/org/testng/IConfigureCallBack.java (+10/-12)
testng-core-api/src/main/java/org/testng/IDataProviderInterceptor.java (+29/-0)
testng-core-api/src/main/java/org/testng/IDataProviderListener.java (+45/-0)
testng-core-api/src/main/java/org/testng/IDataProviderMethod.java (+28/-0)
testng-core-api/src/main/java/org/testng/IDynamicGraph.java (+43/-0)
testng-core-api/src/main/java/org/testng/IExecutionListener.java (+25/-0)
testng-core-api/src/main/java/org/testng/IExecutionVisualiser.java (+14/-0)
testng-core-api/src/main/java/org/testng/IHookCallBack.java (+24/-0)
testng-core-api/src/main/java/org/testng/IHookable.java (+8/-9)
testng-core-api/src/main/java/org/testng/IInjectorFactory.java (+36/-0)
testng-core-api/src/main/java/org/testng/IInstanceInfo.java (+18/-0)
testng-core-api/src/main/java/org/testng/IInvokedMethod.java (+23/-0)
testng-core-api/src/main/java/org/testng/IInvokedMethodListener.java (+48/-0)
testng-core-api/src/main/java/org/testng/IMethodInstance.java (+1/-10)
testng-core-api/src/main/java/org/testng/IMethodInterceptor.java (+27/-0)
testng-core-api/src/main/java/org/testng/IMethodSelector.java (+29/-0)
testng-core-api/src/main/java/org/testng/IMethodSelectorContext.java (+31/-0)
testng-core-api/src/main/java/org/testng/IModule.java (+11/-0)
testng-core-api/src/main/java/org/testng/IModuleFactory.java (+3/-8)
testng-core-api/src/main/java/org/testng/IObjectFactory.java (+12/-0)
testng-core-api/src/main/java/org/testng/IObjectFactory2.java (+23/-0)
testng-core-api/src/main/java/org/testng/IReporter.java (+38/-0)
testng-core-api/src/main/java/org/testng/IResultMap.java (+21/-0)
testng-core-api/src/main/java/org/testng/IRetryAnalyzer.java (+1/-2)
testng-core-api/src/main/java/org/testng/ISuite.java (+94/-0)
testng-core-api/src/main/java/org/testng/ISuiteListener.java (+11/-7)
testng-core-api/src/main/java/org/testng/ISuiteResult.java (+8/-0)
testng-core-api/src/main/java/org/testng/ITest.java (+5/-7)
testng-core-api/src/main/java/org/testng/ITestClass.java (+40/-45)
testng-core-api/src/main/java/org/testng/ITestClassFinder.java (+9/-9)
testng-core-api/src/main/java/org/testng/ITestContext.java (+82/-0)
testng-core-api/src/main/java/org/testng/ITestListener.java (+41/-17)
testng-core-api/src/main/java/org/testng/ITestMethodFinder.java (+20/-25)
testng-core-api/src/main/java/org/testng/ITestNGListener.java (+2/-4)
testng-core-api/src/main/java/org/testng/ITestNGListenerFactory.java (+7/-4)
testng-core-api/src/main/java/org/testng/ITestNGMethod.java (+272/-0)
testng-core-api/src/main/java/org/testng/ITestObjectFactory.java (+20/-0)
testng-core-api/src/main/java/org/testng/ITestResult.java (+131/-0)
testng-core-api/src/main/java/org/testng/Reporter.java (+50/-57)
testng-core-api/src/main/java/org/testng/SuiteRunState.java (+20/-0)
testng-core-api/src/main/java/org/testng/TestNGException.java (+1/-10)
testng-core-api/src/main/java/org/testng/annotations/AfterClass.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/AfterGroups.java (+90/-0)
testng-core-api/src/main/java/org/testng/annotations/AfterMethod.java (+102/-0)
testng-core-api/src/main/java/org/testng/annotations/AfterSuite.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/AfterTest.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/BeforeClass.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/BeforeGroups.java (+90/-0)
testng-core-api/src/main/java/org/testng/annotations/BeforeMethod.java (+102/-0)
testng-core-api/src/main/java/org/testng/annotations/BeforeSuite.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/BeforeTest.java (+80/-0)
testng-core-api/src/main/java/org/testng/annotations/CustomAttribute.java (+19/-0)
testng-core-api/src/main/java/org/testng/annotations/DataProvider.java (+51/-0)
testng-core-api/src/main/java/org/testng/annotations/Factory.java (+40/-0)
testng-core-api/src/main/java/org/testng/annotations/Guice.java (+20/-0)
testng-core-api/src/main/java/org/testng/annotations/IAnnotation.java (+4/-0)
testng-core-api/src/main/java/org/testng/annotations/IConfigurationAnnotation.java (+70/-0)
testng-core-api/src/main/java/org/testng/annotations/IDataProviderAnnotation.java (+24/-0)
testng-core-api/src/main/java/org/testng/annotations/IFactoryAnnotation.java (+12/-0)
testng-core-api/src/main/java/org/testng/annotations/IIgnoreAnnotation.java (+4/-0)
testng-core-api/src/main/java/org/testng/annotations/IObjectFactoryAnnotation.java (+3/-0)
testng-core-api/src/main/java/org/testng/annotations/IParameterizable.java (+13/-0)
testng-core-api/src/main/java/org/testng/annotations/IParametersAnnotation.java (+24/-0)
testng-core-api/src/main/java/org/testng/annotations/ITestAnnotation.java (+103/-0)
testng-core-api/src/main/java/org/testng/annotations/ITestOrConfiguration.java (+43/-0)
testng-core-api/src/main/java/org/testng/annotations/Ignore.java (+32/-0)
testng-core-api/src/main/java/org/testng/annotations/Listeners.java (+23/-0)
testng-core-api/src/main/java/org/testng/annotations/NoInjection.java (+11/-0)
testng-core-api/src/main/java/org/testng/annotations/ObjectFactory.java (+13/-0)
testng-core-api/src/main/java/org/testng/annotations/Optional.java (+30/-0)
testng-core-api/src/main/java/org/testng/annotations/Parameters.java (+36/-0)
testng-core-api/src/main/java/org/testng/annotations/Test.java (+200/-0)
testng-core-api/src/main/java/org/testng/annotations/TestInstance.java (+16/-0)
testng-core-api/src/main/java/org/testng/internal/ClassHelper.java (+397/-0)
testng-core-api/src/main/java/org/testng/internal/ConstructorOrMethod.java (+96/-0)
testng-core-api/src/main/java/org/testng/internal/IParameterInfo.java (+21/-0)
testng-core-api/src/main/java/org/testng/internal/PackageUtils.java (+128/-131)
testng-core-api/src/main/java/org/testng/internal/PropertyUtils.java (+151/-0)
testng-core-api/src/main/java/org/testng/internal/ReporterConfig.java (+103/-0)
testng-core-api/src/main/java/org/testng/internal/RuntimeBehavior.java (+130/-0)
testng-core-api/src/main/java/org/testng/internal/Systematiser.java (+123/-0)
testng-core-api/src/main/java/org/testng/internal/Utils.java (+623/-0)
testng-core-api/src/main/java/org/testng/internal/annotations/DisabledRetryAnalyzer.java (+16/-0)
testng-core-api/src/main/java/org/testng/internal/annotations/IAnnotationFinder.java (+78/-0)
testng-core-api/src/main/java/org/testng/internal/annotations/IDataProvidable.java (+12/-0)
testng-core-api/src/main/java/org/testng/internal/objects/InstanceCreator.java (+61/-0)
testng-core-api/src/main/java/org/testng/internal/thread/ThreadTimeoutException.java (+21/-0)
testng-core-api/src/main/java/org/testng/log4testng/Logger.java (+192/-0)
testng-core-api/src/main/java/org/testng/reporters/Buffer.java (+7/-0)
testng-core-api/src/main/java/org/testng/reporters/FileStringBuffer.java (+143/-0)
testng-core-api/src/main/java/org/testng/reporters/IBuffer.java (+9/-0)
testng-core-api/src/main/java/org/testng/reporters/IReporterConfig.java (+18/-0)
testng-core-api/src/main/java/org/testng/reporters/PojoReporterConfig.java (+17/-0)
testng-core-api/src/main/java/org/testng/reporters/RuntimeBehavior.java (+37/-0)
testng-core-api/src/main/java/org/testng/reporters/XMLReporterConfig.java (+252/-0)
testng-core-api/src/main/java/org/testng/reporters/XMLStringBuffer.java (+367/-0)
testng-core-api/src/main/java/org/testng/reporters/XMLUtils.java (+153/-0)
testng-core-api/src/main/java/org/testng/xml/CommentDisabledXmlWeaver.java (+11/-0)
testng-core-api/src/main/java/org/testng/xml/DefaultXmlWeaver.java (+304/-0)
testng-core-api/src/main/java/org/testng/xml/IWeaveXml.java (+21/-0)
testng-core-api/src/main/java/org/testng/xml/XmlClass.java (+256/-0)
testng-core-api/src/main/java/org/testng/xml/XmlDefine.java (+69/-0)
testng-core-api/src/main/java/org/testng/xml/XmlDependencies.java (+36/-0)
testng-core-api/src/main/java/org/testng/xml/XmlGroups.java (+77/-0)
testng-core-api/src/main/java/org/testng/xml/XmlInclude.java (+150/-0)
testng-core-api/src/main/java/org/testng/xml/XmlMethodSelector.java (+124/-0)
testng-core-api/src/main/java/org/testng/xml/XmlMethodSelectors.java (+35/-0)
testng-core-api/src/main/java/org/testng/xml/XmlPackage.java (+138/-0)
testng-core-api/src/main/java/org/testng/xml/XmlRun.java (+49/-0)
testng-core-api/src/main/java/org/testng/xml/XmlScript.java (+23/-0)
testng-core-api/src/main/java/org/testng/xml/XmlSuite.java (+246/-434)
testng-core-api/src/main/java/org/testng/xml/XmlTest.java (+666/-0)
testng-core-api/src/main/java/org/testng/xml/XmlUtils.java (+46/-0)
testng-core-api/src/main/java/org/testng/xml/XmlWeaver.java (+90/-0)
testng-core-api/testng-core-api-build.gradle.kts (+20/-0)
testng-core/src/main/java/org/testng/AssertJUnit.java (+478/-0)
testng-core/src/main/java/org/testng/ClassMethodMap.java (+38/-41)
testng-core/src/main/java/org/testng/CommandLineArgs.java (+254/-0)
testng-core/src/main/java/org/testng/ConversionUtils.java (+32/-0)
testng-core/src/main/java/org/testng/Converter.java (+14/-24)
testng-core/src/main/java/org/testng/DataProviderHolder.java (+44/-0)
testng-core/src/main/java/org/testng/DataProviderInvocationException.java (+9/-0)
testng-core/src/main/java/org/testng/DependencyMap.java (+136/-0)
testng-core/src/main/java/org/testng/ITestRunnerFactory.java (+54/-0)
testng-core/src/main/java/org/testng/InstanceOrderingMethodInterceptor.java (+11/-26)
testng-core/src/main/java/org/testng/JarFileUtils.java (+129/-0)
testng-core/src/main/java/org/testng/PreserveOrderMethodInterceptor.java (+4/-18)
testng-core/src/main/java/org/testng/SkipException.java (+26/-29)
testng-core/src/main/java/org/testng/SuiteResult.java (+13/-41)
testng-core/src/main/java/org/testng/SuiteRunner.java (+804/-0)
testng-core/src/main/java/org/testng/SuiteRunnerWorker.java (+95/-69)
testng-core/src/main/java/org/testng/TestClass.java (+285/-0)
testng-core/src/main/java/org/testng/TestException.java (+9/-14)
testng-core/src/main/java/org/testng/TestListenerAdapter.java (+52/-75)
testng-core/src/main/java/org/testng/TestNG.java (+1982/-0)
testng-core/src/main/java/org/testng/TestNGUtils.java (+7/-4)
testng-core/src/main/java/org/testng/TestRunner.java (+1301/-0)
testng-core/src/main/java/org/testng/TimeBombSkipException.java (+235/-0)
testng-core/src/main/java/org/testng/internal/BaseClassFinder.java (+54/-0)
testng-core/src/main/java/org/testng/internal/BaseTestMethod.java (+798/-0)
testng-core/src/main/java/org/testng/internal/ClassImpl.java (+72/-118)
testng-core/src/main/java/org/testng/internal/ClassInfoMap.java (+74/-0)
testng-core/src/main/java/org/testng/internal/ClonedMethod.java (+46/-74)
testng-core/src/main/java/org/testng/internal/Configuration.java (+159/-0)
testng-core/src/main/java/org/testng/internal/ConfigurationGroupMethods.java (+137/-0)
testng-core/src/main/java/org/testng/internal/ConfigurationMethod.java (+301/-221)
testng-core/src/main/java/org/testng/internal/DataProviderMethod.java (+45/-0)
testng-core/src/main/java/org/testng/internal/DefaultListenerFactory.java (+31/-0)
testng-core/src/main/java/org/testng/internal/DefaultMethodSelectorContext.java (+32/-0)
testng-core/src/main/java/org/testng/internal/DynamicGraph.java (+407/-0)
testng-core/src/main/java/org/testng/internal/DynamicGraphHelper.java (+211/-0)
testng-core/src/main/java/org/testng/internal/ExitCode.java (+94/-0)
testng-core/src/main/java/org/testng/internal/ExitCodeListener.java (+79/-0)
testng-core/src/main/java/org/testng/internal/FactoryMethod.java (+235/-0)
testng-core/src/main/java/org/testng/internal/Graph.java (+66/-90)
testng-core/src/main/java/org/testng/internal/GroupsHelper.java (+73/-0)
testng-core/src/main/java/org/testng/internal/IConfigEavesdropper.java (+7/-0)
testng-core/src/main/java/org/testng/internal/IConfiguration.java (+58/-0)
testng-core/src/main/java/org/testng/internal/IContainer.java (+14/-0)
testng-core/src/main/java/org/testng/internal/IResultListener.java (+11/-0)
testng-core/src/main/java/org/testng/internal/IResultListener2.java (+5/-0)
testng-core/src/main/java/org/testng/internal/ITestClassConfigInfo.java (+27/-0)
testng-core/src/main/java/org/testng/internal/InstanceInfo.java (+23/-0)
testng-core/src/main/java/org/testng/internal/MethodGroupsHelper.java (+269/-0)
testng-core/src/main/java/org/testng/internal/MethodHelper.java (+504/-0)
testng-core/src/main/java/org/testng/internal/MethodInheritance.java (+212/-0)
testng-core/src/main/java/org/testng/internal/MethodInstance.java (+91/-0)
testng-core/src/main/java/org/testng/internal/MethodSelectorDescriptor.java (+35/-0)
testng-core/src/main/java/org/testng/internal/NoOpTestClass.java (+171/-0)
testng-core/src/main/java/org/testng/internal/OverrideProcessor.java (+38/-0)
testng-core/src/main/java/org/testng/internal/ParameterInfo.java (+28/-0)
testng-core/src/main/java/org/testng/internal/Parameters.java (+946/-0)
testng-core/src/main/java/org/testng/internal/PoolService.java (+59/-0)
testng-core/src/main/java/org/testng/internal/RegexpExpectedExceptionsHolder.java (+57/-0)
testng-core/src/main/java/org/testng/internal/ResultMap.java (+58/-0)
testng-core/src/main/java/org/testng/internal/RunInfo.java (+70/-0)
testng-core/src/main/java/org/testng/internal/ScriptMethodSelector.java (+62/-0)
testng-core/src/main/java/org/testng/internal/ScriptSelectorFactory.java (+44/-0)
testng-core/src/main/java/org/testng/internal/Tarjan.java (+56/-0)
testng-core/src/main/java/org/testng/internal/TestListenerHelper.java (+200/-0)
testng-core/src/main/java/org/testng/internal/TestMethodComparator.java (+26/-0)
testng-core/src/main/java/org/testng/internal/TestMethodContainer.java (+50/-0)
testng-core/src/main/java/org/testng/internal/TestNGClassFinder.java (+333/-0)
testng-core/src/main/java/org/testng/internal/TestNGMethod.java (+226/-0)
testng-core/src/main/java/org/testng/internal/TestNGMethodFinder.java (+267/-0)
testng-core/src/main/java/org/testng/internal/Version.java (+20/-0)
testng-core/src/main/java/org/testng/internal/WrappedTestNGMethod.java (+376/-0)
testng-core/src/main/java/org/testng/internal/XmlMethodSelector.java (+375/-0)
testng-core/src/main/java/org/testng/internal/Yaml.java (+394/-0)
testng-core/src/main/java/org/testng/internal/YamlParser.java (+26/-0)
testng-core/src/main/java/org/testng/internal/annotations/AnnotationHelper.java (+394/-0)
testng-core/src/main/java/org/testng/internal/annotations/BaseAnnotation.java (+35/-0)
testng-core/src/main/java/org/testng/internal/annotations/BaseBeforeAfter.java (+56/-0)
testng-core/src/main/java/org/testng/internal/annotations/ConfigurationAnnotation.java (+199/-0)
testng-core/src/main/java/org/testng/internal/annotations/DataProviderAnnotation.java (+42/-0)
testng-core/src/main/java/org/testng/internal/annotations/DefaultAnnotationTransformer.java (+21/-0)
testng-core/src/main/java/org/testng/internal/annotations/FactoryAnnotation.java (+52/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAfterClass.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAfterGroups.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAfterMethod.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAfterSuite.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAfterTest.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IAnnotationTransformer.java (+18/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfter.java (+50/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBaseBeforeAfterMethod.java (+6/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBeforeClass.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBeforeGroups.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBeforeMethod.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBeforeSuite.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IBeforeTest.java (+3/-0)
testng-core/src/main/java/org/testng/internal/annotations/IListeners.java (+5/-0)
testng-core/src/main/java/org/testng/internal/annotations/ITest.java (+5/-0)
testng-core/src/main/java/org/testng/internal/annotations/IgnoreListener.java (+86/-0)
testng-core/src/main/java/org/testng/internal/annotations/JDK15AnnotationFinder.java (+325/-0)
testng-core/src/main/java/org/testng/internal/annotations/JDK15TagFactory.java (+595/-0)
testng-core/src/main/java/org/testng/internal/annotations/ListenersAnnotation.java (+19/-0)
testng-core/src/main/java/org/testng/internal/annotations/ObjectFactoryAnnotation.java (+6/-0)
testng-core/src/main/java/org/testng/internal/annotations/ParametersAnnotation.java (+18/-0)
testng-core/src/main/java/org/testng/internal/annotations/TestAnnotation.java (+192/-0)
testng-core/src/main/java/org/testng/internal/annotations/TestOrConfiguration.java (+82/-0)
testng-core/src/main/java/org/testng/internal/ant/AntReporterConfig.java (+50/-0)
testng-core/src/main/java/org/testng/internal/collections/ArrayIterator.java (+34/-0)
testng-core/src/main/java/org/testng/internal/collections/Ints.java (+14/-0)
testng-core/src/main/java/org/testng/internal/collections/OneToTwoDimArrayIterator.java (+33/-0)
testng-core/src/main/java/org/testng/internal/collections/OneToTwoDimIterator.java (+27/-0)
testng-core/src/main/java/org/testng/internal/collections/Pair.java (+75/-0)
testng-core/src/main/java/org/testng/internal/invokers/AbstractParallelWorker.java (+116/-0)
testng-core/src/main/java/org/testng/internal/invokers/Arguments.java (+29/-0)
testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java (+113/-0)
testng-core/src/main/java/org/testng/internal/invokers/ClassBasedParallelWorker.java (+120/-0)
testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java (+619/-0)
testng-core/src/main/java/org/testng/internal/invokers/ConfigMethodArguments.java (+135/-0)
testng-core/src/main/java/org/testng/internal/invokers/ExceptionUtils.java (+53/-0)
testng-core/src/main/java/org/testng/internal/invokers/ExpectedExceptionsHolder.java (+99/-0)
testng-core/src/main/java/org/testng/internal/invokers/GroupConfigMethodArguments.java (+68/-0)
testng-core/src/main/java/org/testng/internal/invokers/IConfigInvoker.java (+16/-0)
testng-core/src/main/java/org/testng/internal/invokers/IInvoker.java (+7/-5)
testng-core/src/main/java/org/testng/internal/invokers/IMethodRunner.java (+29/-0)
testng-core/src/main/java/org/testng/internal/invokers/ITestInvoker.java (+54/-0)
testng-core/src/main/java/org/testng/internal/invokers/InstanceBasedParallelParallelWorker.java (+41/-0)
testng-core/src/main/java/org/testng/internal/invokers/InvokeMethodRunnable.java (+85/-0)
testng-core/src/main/java/org/testng/internal/invokers/InvokedMethod.java (+65/-0)
testng-core/src/main/java/org/testng/internal/invokers/InvokedMethodListenerInvoker.java (+63/-0)
testng-core/src/main/java/org/testng/internal/invokers/InvokedMethodListenerMethod.java (+13/-0)
testng-core/src/main/java/org/testng/internal/invokers/Invoker.java (+63/-0)
testng-core/src/main/java/org/testng/internal/invokers/MethodArguments.java (+19/-0)
testng-core/src/main/java/org/testng/internal/invokers/MethodInvocationHelper.java (+456/-0)
testng-core/src/main/java/org/testng/internal/invokers/MethodRunner.java (+138/-0)
testng-core/src/main/java/org/testng/internal/invokers/ParameterHandler.java (+123/-0)
testng-core/src/main/java/org/testng/internal/invokers/ParameterHolder.java (+29/-0)
testng-core/src/main/java/org/testng/internal/invokers/SuiteRunnerMap.java (+29/-0)
testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java (+967/-0)
testng-core/src/main/java/org/testng/internal/invokers/TestMethodArguments.java (+136/-0)
testng-core/src/main/java/org/testng/internal/invokers/TestMethodWithDataProviderMethodWorker.java (+153/-0)
testng-core/src/main/java/org/testng/internal/invokers/TestMethodWorker.java (+304/-0)
testng-core/src/main/java/org/testng/internal/invokers/TestNgMethodUtils.java (+168/-0)
testng-core/src/main/java/org/testng/internal/invokers/objects/GuiceContext.java (+36/-0)
testng-core/src/main/java/org/testng/internal/junit/ArrayAsserts.java (+221/-0)
testng-core/src/main/java/org/testng/internal/junit/ArrayComparisonFailure.java (+51/-0)
testng-core/src/main/java/org/testng/internal/junit/ComparisonCriteria.java (+68/-0)
testng-core/src/main/java/org/testng/internal/junit/ExactComparisonCriteria.java (+10/-0)
testng-core/src/main/java/org/testng/internal/junit/InexactComparisonCriteria.java (+18/-0)
testng-core/src/main/java/org/testng/internal/objects/DefaultTestObjectFactory.java (+12/-0)
testng-core/src/main/java/org/testng/internal/objects/Dispenser.java (+18/-0)
testng-core/src/main/java/org/testng/internal/objects/GuiceBackedInjectorFactory.java (+24/-0)
testng-core/src/main/java/org/testng/internal/objects/GuiceBasedObjectDispenser.java (+65/-0)
testng-core/src/main/java/org/testng/internal/objects/GuiceHelper.java (+224/-0)
testng-core/src/main/java/org/testng/internal/objects/IObjectDispenser.java (+17/-0)
testng-core/src/main/java/org/testng/internal/objects/ObjectFactoryImpl.java (+58/-0)
testng-core/src/main/java/org/testng/internal/objects/SimpleObjectDispenser.java (+229/-0)
testng-core/src/main/java/org/testng/internal/objects/pojo/BasicAttributes.java (+25/-0)
testng-core/src/main/java/org/testng/internal/objects/pojo/CreationAttributes.java (+45/-0)
testng-core/src/main/java/org/testng/internal/objects/pojo/DetailedAttributes.java (+65/-0)
testng-core/src/main/java/org/testng/internal/reflect/AbstractMethodMatcher.java (+38/-0)
testng-core/src/main/java/org/testng/internal/reflect/AbstractNodeMethodMatcher.java (+77/-0)
testng-core/src/main/java/org/testng/internal/reflect/ArrayEndingMethodMatcher.java (+55/-0)
testng-core/src/main/java/org/testng/internal/reflect/DataProviderMethodMatcher.java (+48/-0)
testng-core/src/main/java/org/testng/internal/reflect/DirectMethodMatcher.java (+41/-0)
testng-core/src/main/java/org/testng/internal/reflect/InjectableParameter.java (+23/-0)
testng-core/src/main/java/org/testng/internal/reflect/MethodMatcher.java (+22/-0)
testng-core/src/main/java/org/testng/internal/reflect/MethodMatcherContext.java (+58/-0)
testng-core/src/main/java/org/testng/internal/reflect/MethodMatcherException.java (+94/-0)
testng-core/src/main/java/org/testng/internal/reflect/Parameter.java (+88/-0)
testng-core/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java (+194/-105)
testng-core/src/main/java/org/testng/internal/thread/DefaultThreadPoolExecutorFactory.java (+61/-0)
testng-core/src/main/java/org/testng/internal/thread/TestNGThreadFactory.java (+31/-0)
testng-core/src/main/java/org/testng/internal/thread/ThreadExecutionException.java (+11/-0)
testng-core/src/main/java/org/testng/internal/thread/ThreadUtil.java (+87/-0)
testng-core/src/main/java/org/testng/internal/thread/graph/GraphThreadPoolExecutor.java (+204/-0)
testng-core/src/main/java/org/testng/internal/thread/graph/SuiteWorkerFactory.java (+44/-0)
testng-core/src/main/java/org/testng/junit/IJUnitTestRunner.java (+47/-0)
testng-core/src/main/java/org/testng/junit/JUnit3TestClass.java (+11/-0)
testng-core/src/main/java/org/testng/junit/JUnit3TestMethod.java (+29/-0)
testng-core/src/main/java/org/testng/junit/JUnit3TestRecognizer.java (+37/-0)
testng-core/src/main/java/org/testng/junit/JUnit4ConfigurationMethod.java (+29/-0)
testng-core/src/main/java/org/testng/junit/JUnit4SpockMethod.java (+47/-0)
testng-core/src/main/java/org/testng/junit/JUnit4TestClass.java (+19/-0)
testng-core/src/main/java/org/testng/junit/JUnit4TestMethod.java (+48/-0)
testng-core/src/main/java/org/testng/junit/JUnit4TestRecognizer.java (+29/-0)
testng-core/src/main/java/org/testng/junit/JUnit4TestRunner.java (+256/-0)
testng-core/src/main/java/org/testng/junit/JUnitMethodFinder.java (+125/-0)
testng-core/src/main/java/org/testng/junit/JUnitTestClass.java (+146/-0)
testng-core/src/main/java/org/testng/junit/JUnitTestFinder.java (+51/-0)
testng-core/src/main/java/org/testng/junit/JUnitTestMethod.java (+39/-0)
testng-core/src/main/java/org/testng/junit/JUnitTestRecognizer.java (+7/-0)
testng-core/src/main/java/org/testng/junit/JUnitTestRunner.java (+258/-0)
testng-core/src/main/java/org/testng/log/TextFormatter.java (+17/-0)
testng-core/src/main/java/org/testng/reporters/DotTestListener.java (+30/-0)
testng-core/src/main/java/org/testng/reporters/EmailableReporter.java (+160/-134)
testng-core/src/main/java/org/testng/reporters/EmailableReporter2.java (+874/-0)
testng-core/src/main/java/org/testng/reporters/ExitCodeListener.java (+70/-0)
testng-core/src/main/java/org/testng/reporters/FailedReporter.java (+321/-0)
testng-core/src/main/java/org/testng/reporters/Files.java (+76/-0)
testng-core/src/main/java/org/testng/reporters/HtmlHelper.java (+34/-0)
testng-core/src/main/java/org/testng/reporters/ICustomizeXmlReport.java (+13/-0)
testng-core/src/main/java/org/testng/reporters/JUnitReportReporter.java (+298/-0)
testng-core/src/main/java/org/testng/reporters/JUnitXMLReporter.java (+295/-0)
testng-core/src/main/java/org/testng/reporters/SuiteHTMLReporter.java (+406/-396)
testng-core/src/main/java/org/testng/reporters/TestHTMLReporter.java (+432/-0)
testng-core/src/main/java/org/testng/reporters/TextReporter.java (+204/-0)
testng-core/src/main/java/org/testng/reporters/VerboseReporter.java (+275/-0)
testng-core/src/main/java/org/testng/reporters/XMLConstants.java (+73/-0)
testng-core/src/main/java/org/testng/reporters/XMLReporter.java (+229/-0)
testng-core/src/main/java/org/testng/reporters/XMLSuiteResultWriter.java (+353/-0)
testng-core/src/main/java/org/testng/reporters/jq/BannerPanel.java (+23/-0)
testng-core/src/main/java/org/testng/reporters/jq/BaseMultiSuitePanel.java (+41/-0)
testng-core/src/main/java/org/testng/reporters/jq/BasePanel.java (+38/-0)
testng-core/src/main/java/org/testng/reporters/jq/ChronologicalPanel.java (+101/-0)
testng-core/src/main/java/org/testng/reporters/jq/GroupPanel.java (+48/-0)
testng-core/src/main/java/org/testng/reporters/jq/INavigatorPanel.java (+14/-0)
testng-core/src/main/java/org/testng/reporters/jq/IPanel.java (+7/-0)
testng-core/src/main/java/org/testng/reporters/jq/IgnoredMethodsPanel.java (+52/-0)
testng-core/src/main/java/org/testng/reporters/jq/Main.java (+113/-0)
testng-core/src/main/java/org/testng/reporters/jq/Model.java (+208/-0)
testng-core/src/main/java/org/testng/reporters/jq/NavigatorPanel.java (+290/-0)
testng-core/src/main/java/org/testng/reporters/jq/ReporterPanel.java (+49/-0)
testng-core/src/main/java/org/testng/reporters/jq/ResultsByClass.java (+36/-0)
testng-core/src/main/java/org/testng/reporters/jq/SuitePanel.java (+103/-0)
testng-core/src/main/java/org/testng/reporters/jq/TestNgXmlPanel.java (+38/-0)
testng-core/src/main/java/org/testng/reporters/jq/TestPanel.java (+50/-0)
testng-core/src/main/java/org/testng/reporters/jq/TimesPanel.java (+162/-0)
testng-core/src/main/java/org/testng/reporters/util/StackTraceTools.java (+57/-0)
testng-core/src/main/java/org/testng/thread/IExecutorFactory.java (+71/-0)
testng-core/src/main/java/org/testng/thread/ITestNGThreadPoolExecutor.java (+10/-0)
testng-core/src/main/java/org/testng/thread/IThreadWorkerFactory.java (+16/-0)
testng-core/src/main/java/org/testng/thread/IWorker.java (+30/-0)
testng-core/src/main/java/org/testng/util/RetryAnalyzerCount.java (+48/-0)
testng-core/src/main/java/org/testng/util/TimeUtils.java (+56/-0)
testng-core/src/main/java/org/testng/xml/IFileParser.java (+9/-0)
testng-core/src/main/java/org/testng/xml/IPostProcessor.java (+9/-0)
testng-core/src/main/java/org/testng/xml/ISuiteParser.java (+6/-0)
testng-core/src/main/java/org/testng/xml/LaunchSuite.java (+405/-0)
testng-core/src/main/java/org/testng/xml/Parser.java (+22/-0)
testng-core/src/main/java/org/testng/xml/SuiteGenerator.java (+57/-0)
testng-core/src/main/java/org/testng/xml/SuiteXmlParser.java (+28/-0)
testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java (+316/-312)
testng-core/src/main/java/org/testng/xml/TestNGURLs.java (+22/-0)
testng-core/src/main/java/org/testng/xml/XMLParser.java (+66/-0)
testng-core/src/main/java/org/testng/xml/internal/Parser.java (+278/-0)
testng-core/src/main/java/org/testng/xml/internal/TestNamesMatcher.java (+84/-0)
testng-core/src/main/java/org/testng/xml/internal/XmlSuiteUtils.java (+100/-0)
testng-core/src/main/java/testng-1.0.dtd.html (+206/-0)
testng-core/src/main/resources/META-INF/services/org.testng.xml.ISuiteParser (+1/-0)
testng-core/src/main/resources/org/testng/header (+24/-0)
testng-core/src/main/resources/org/testng/testng-reports.css (+326/-0)
testng-core/src/main/resources/org/testng/testng-reports.js (+122/-0)
testng-core/src/main/resources/org/testng/testng-reports1.css (+344/-0)
testng-core/src/main/resources/org/testng/testng-reports2.js (+76/-0)
testng-core/src/main/resources/testng-1.0.dtd (+213/-0)
testng-core/src/main/resources/testng.css (+9/-0)
testng-core/src/main/resources/testngtasks (+1/-0)
testng-core/src/test/groovy/test/groovy/EasyJUnitGroovySample.groovy (+17/-0)
testng-core/src/test/groovy/test/groovy/GroovyTest.groovy (+77/-0)
testng-core/src/test/groovy/test/groovy/Issue2360Sample.java (+25/-0)
testng-core/src/test/groovy/test/groovy/SpecialNameJUnitGroovySample.groovy (+17/-0)
testng-core/src/test/groovy/test/groovy/SpockSample.groovy (+17/-0)
testng-core/src/test/java/ConverterSample2.java (+24/-0)
testng-core/src/test/java/ConverterSample4.java (+69/-0)
testng-core/src/test/java/NoPackageTest.java (+17/-0)
testng-core/src/test/java/ReporterConfigTest.java (+24/-0)
testng-core/src/test/java/groovy/transform/Internal.java (+10/-0)
testng-core/src/test/java/org/testng/DryRunSample.java (+27/-0)
testng-core/src/test/java/org/testng/DryRunTest.java (+24/-0)
testng-core/src/test/java/org/testng/JarFileUtilsTest.java (+170/-0)
testng-core/src/test/java/org/testng/SampleIModule.java (+12/-0)
testng-core/src/test/java/org/testng/internal/ClassHelperTest.java (+151/-0)
testng-core/src/test/java/org/testng/internal/ConsoleReporter.java (+40/-0)
testng-core/src/test/java/org/testng/internal/DynamicGraphHelperTest.java (+259/-0)
testng-core/src/test/java/org/testng/internal/DynamicGraphTest.java (+428/-0)
testng-core/src/test/java/org/testng/internal/GroupsHelperTest.java (+48/-0)
testng-core/src/test/java/org/testng/internal/MethodHelperTest.java (+44/-0)
testng-core/src/test/java/org/testng/internal/MethodInstanceTest.java (+545/-0)
testng-core/src/test/java/org/testng/internal/MethodMultiplyingInterceptor.java (+45/-0)
testng-core/src/test/java/org/testng/internal/ParametersTest.java (+28/-0)
testng-core/src/test/java/org/testng/internal/TestClassSample.java (+19/-0)
testng-core/src/test/java/org/testng/internal/TestListenerHelperTest.java (+80/-0)
testng-core/src/test/java/org/testng/internal/UtilsTest.java (+44/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingAfterClass.java (+14/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingAfterSuite.java (+14/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingAfterTest.java (+17/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingBeforeClass.java (+14/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingBeforeSuite.java (+14/-0)
testng-core/src/test/java/org/testng/internal/conflistener/FailingBeforeTest.java (+18/-0)
testng-core/src/test/java/org/testng/internal/conflistener/testng.xml (+31/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/EdgeWeightTestSample1.java (+23/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/EdgeWeightTestSample2.java (+32/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/FactoryTestClassSample.java (+30/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/FakeTestClass.java (+107/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/FakeWrappedFactoryMethod.java (+19/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/HardDependencyTestClassSample.java (+11/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/HardDependencyViaGroupsTestClassSample.java (+11/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/IndependentTestClassSample.java (+11/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/LotsOfEdgesTest.java (+386/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/SequentialClassA.java (+12/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/SequentialClassB.java (+12/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/SoftDependencyTestClassSample.java (+11/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/testpackage/PackageTestClassA.java (+12/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/testpackage/PackageTestClassBAbstract.java (+6/-0)
testng-core/src/test/java/org/testng/internal/dynamicgraph/testpackage/PackageTestClassBB.java (+12/-0)
testng-core/src/test/java/org/testng/internal/invokers/ParameterHandlerTest.java (+79/-0)
testng-core/src/test/java/org/testng/internal/issue1339/BabyPanda.java (+25/-0)
testng-core/src/test/java/org/testng/internal/issue1339/GrandpaBear.java (+9/-0)
testng-core/src/test/java/org/testng/internal/issue1339/LittlePanda.java (+3/-0)
testng-core/src/test/java/org/testng/internal/issue1339/PapaBear.java (+9/-0)
testng-core/src/test/java/org/testng/internal/issue1456/TestClassSample.java (+16/-0)
testng-core/src/test/java/org/testng/internal/issue2195/BaseClass.java (+18/-0)
testng-core/src/test/java/org/testng/internal/issue2195/TestClass.java (+9/-0)
testng-core/src/test/java/org/testng/internal/listeners/DummyListenerFactory.java (+18/-0)
testng-core/src/test/java/org/testng/internal/listeners/EmptyExecutionListener.java (+11/-0)
testng-core/src/test/java/org/testng/internal/listeners/TestClassDoublingupAsListenerFactory.java (+15/-0)
testng-core/src/test/java/org/testng/internal/listeners/TestClassWithCompositeListener.java (+10/-0)
testng-core/src/test/java/org/testng/internal/listeners/TestClassWithListener.java (+6/-0)
testng-core/src/test/java/org/testng/internal/listeners/TestClassWithMultipleListenerFactories.java (+6/-0)
testng-core/src/test/java/org/testng/internal/listeners/parameterindex/ParameterIndexListenerTest.java (+14/-0)
testng-core/src/test/java/org/testng/internal/listeners/parameterindex/ParameterIndexTestListener.java (+25/-0)
testng-core/src/test/java/org/testng/internal/listeners/parameterindex/TestWithProviderTest.java (+21/-0)
testng-core/src/test/java/org/testng/internal/misamples/AbstractMoves.java (+9/-0)
testng-core/src/test/java/org/testng/internal/misamples/Batman.java (+13/-0)
testng-core/src/test/java/org/testng/internal/misamples/IDance.java (+6/-0)
testng-core/src/test/java/org/testng/internal/misamples/JohnTravoltaMoves.java (+7/-0)
testng-core/src/test/java/org/testng/internal/misamples/MickJagger.java (+7/-0)
testng-core/src/test/java/org/testng/internal/misamples/SuperHeroCapabilities.java (+10/-0)
testng-core/src/test/java/org/testng/internal/objects/GuiceHelperTest.java (+69/-0)
testng-core/src/test/java/org/testng/internal/objects/InstanceCreatorTest.java (+34/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/DataDrivenSampleTestClass.java (+17/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/ExceptionThrowingDataDrivenSampleTestClass.java (+17/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/FakeSuite.java (+143/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/FakeTestContext.java (+145/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/FakeTestNGMethod.java (+343/-0)
testng-core/src/test/java/org/testng/internal/paramhandler/ParameterizedSampleTestClass.java (+10/-0)
testng-core/src/test/java/org/testng/jarfileutils/JarCreator.java (+54/-0)
testng-core/src/test/java/org/testng/jarfileutils/org/testng/SampleTest1.java (+11/-0)
testng-core/src/test/java/org/testng/jarfileutils/org/testng/SampleTest2.java (+11/-0)
testng-core/src/test/java/org/testng/jarfileutils/org/testng/SampleTest3.java (+11/-0)
testng-core/src/test/java/org/testng/jarfileutils/org/testng/SampleTest4.java (+11/-0)
testng-core/src/test/java/org/testng/jarfileutils/org/testng/SampleTest5.java (+11/-0)
testng-core/src/test/java/org/testng/reporters/FailedInformationOnConsoleReporter.java (+81/-0)
testng-core/src/test/java/org/testng/reporters/jq/TimesPanelTest.java (+32/-0)
testng-core/src/test/java/org/testng/util/StringsTest.java (+26/-0)
testng-core/src/test/java/org/testng/xml/FakeHttpXmlParser.java (+19/-0)
testng-core/src/test/java/org/testng/xml/Issue1716TestSample.java (+8/-0)
testng-core/src/test/java/org/testng/xml/ParserTest.java (+31/-0)
testng-core/src/test/java/org/testng/xml/SuiteXmlParserTest.java (+41/-0)
testng-core/src/test/java/org/testng/xml/XmlSuiteTest.java (+125/-0)
testng-core/src/test/java/org/testng/xml/XmlTestTest.java (+52/-0)
testng-core/src/test/java/org/testng/xml/internal/TestNamesMatcherTest.java (+109/-0)
testng-core/src/test/java/org/testng/xml/internal/XmlSuiteUtilsTest.java (+24/-0)
testng-core/src/test/java/org/testng/xml/issue1668/TestClassSample.java (+11/-0)
testng-core/src/test/java/org/testng/xml/issue1674/Testclass.java (+8/-0)
testng-core/src/test/java/org/testng/xml/issue435/Testclass.java (+17/-0)
testng-core/src/test/java/test/BaseDistributedTest.java (+49/-0)
testng-core/src/test/java/test/BaseTest.java (+434/-0)
testng-core/src/test/java/test/CheckSuitesInitializationTest.java (+38/-0)
testng-core/src/test/java/test/ClassConfigurations.java (+50/-0)
testng-core/src/test/java/test/CommandLineTest.java (+175/-0)
testng-core/src/test/java/test/CountSampleTest.java (+33/-0)
testng-core/src/test/java/test/CountTest.java (+36/-0)
testng-core/src/test/java/test/CtorCalledOnce.java (+36/-0)
testng-core/src/test/java/test/EclipseTest.java (+19/-0)
testng-core/src/test/java/test/Exclude.java (+45/-0)
testng-core/src/test/java/test/FileStringBufferTest.java (+30/-0)
testng-core/src/test/java/test/GraphTest.java (+195/-0)
testng-core/src/test/java/test/IndividualMethodsTest.java (+28/-0)
testng-core/src/test/java/test/InvocationAndSuccessPercentageTest.java (+91/-0)
testng-core/src/test/java/test/InvokedMethodListener.java (+24/-0)
testng-core/src/test/java/test/InvokedMethodNameListener.java (+209/-0)
testng-core/src/test/java/test/JUnit4Test.java (+75/-0)
testng-core/src/test/java/test/JUnitTest1.java (+115/-0)
testng-core/src/test/java/test/JUnitTestClassLoader.java (+119/-0)
testng-core/src/test/java/test/MethodTest.java (+47/-0)
testng-core/src/test/java/test/Misc.java (+27/-0)
testng-core/src/test/java/test/NestedStaticSampleTest.java (+14/-0)
testng-core/src/test/java/test/NestedStaticTest.java (+37/-0)
testng-core/src/test/java/test/ParameterConstructorTest.java (+51/-0)
testng-core/src/test/java/test/ReflectionHelperTest.java (+72/-0)
testng-core/src/test/java/test/ReporterApiTest.java (+20/-0)
testng-core/src/test/java/test/ReturnValueSampleTest.java (+11/-0)
testng-core/src/test/java/test/ReturnValueTest.java (+57/-0)
testng-core/src/test/java/test/SampleInheritance.java (+41/-0)
testng-core/src/test/java/test/SerializationTest.java (+26/-0)
testng-core/src/test/java/test/SimpleBaseTest.java (+443/-0)
testng-core/src/test/java/test/StaticTest.java (+12/-0)
testng-core/src/test/java/test/Test1.java (+147/-0)
testng-core/src/test/java/test/Test2.java (+73/-0)
testng-core/src/test/java/test/TestClassContainerForGitHubIssue1360.java (+57/-0)
testng-core/src/test/java/test/TestHelper.java (+56/-0)
testng-core/src/test/java/test/abstractconfmethod/B.java (+9/-0)
testng-core/src/test/java/test/abstractconfmethod/C.java (+13/-0)
testng-core/src/test/java/test/abstractconfmethod/foo/A.java (+5/-0)
testng-core/src/test/java/test/abstractmethods/AbstractTest.java (+20/-0)
testng-core/src/test/java/test/abstractmethods/CRUDTest.java (+12/-0)
testng-core/src/test/java/test/abstractmethods/CRUDTest2.java (+10/-0)
testng-core/src/test/java/test/access/BasePrivateAccessConfigurationMethods.java (+24/-0)
testng-core/src/test/java/test/access/PrivateAccessConfigurationMethods.java (+49/-0)
testng-core/src/test/java/test/aftergroups/AfterGroupsBehaviorTest.java (+49/-0)
testng-core/src/test/java/test/aftergroups/issue165/TestclassSampleWithFailedMember.java (+18/-0)
testng-core/src/test/java/test/aftergroups/issue165/TestclassSampleWithSkippedMember.java (+18/-0)
testng-core/src/test/java/test/aftergroups/issue1880/LocalConfigListener.java (+19/-0)
testng-core/src/test/java/test/aftergroups/issue1880/TestClassSample.java (+19/-0)
testng-core/src/test/java/test/alwaysrun/AlwaysRunAfter1.java (+27/-0)
testng-core/src/test/java/test/alwaysrun/AlwaysRunAfter2.java (+24/-0)
testng-core/src/test/java/test/alwaysrun/AlwaysRunAfter3.java (+27/-0)
testng-core/src/test/java/test/alwaysrun/AlwaysRunBefore1.java (+51/-0)
testng-core/src/test/java/test/alwaysrun/AlwaysRunTest.java (+57/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerClassInvocationSampleTest.java (+11/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerClassSampleTest.java (+22/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java (+20/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerFactorySampleTest.java (+18/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerInTestngXml.java (+19/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerInvocationCountTest.java (+33/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerSampleTest.java (+40/-0)
testng-core/src/test/java/test/annotationtransformer/AnnotationTransformerTest.java (+326/-0)
testng-core/src/test/java/test/annotationtransformer/ConfigurationSampleTest.java (+32/-0)
testng-core/src/test/java/test/annotationtransformer/ConfigurationTransformer.java (+36/-0)
testng-core/src/test/java/test/annotationtransformer/DataProviderTransformer.java (+34/-0)
testng-core/src/test/java/test/annotationtransformer/FactoryTransformer.java (+51/-0)
testng-core/src/test/java/test/annotationtransformer/MyListenerTransformer.java (+38/-0)
testng-core/src/test/java/test/annotationtransformer/MyParamTransformer.java (+30/-0)
testng-core/src/test/java/test/annotationtransformer/MySuiteListener.java (+17/-0)
testng-core/src/test/java/test/annotationtransformer/MySuiteListener2.java (+17/-0)
testng-core/src/test/java/test/annotationtransformer/MyTimeOutTransformer.java (+15/-0)
testng-core/src/test/java/test/annotationtransformer/MyTransformer.java (+39/-0)
testng-core/src/test/java/test/annotationtransformer/SimpleTest.java (+24/-0)
testng-core/src/test/java/test/annotationtransformer/issue1790/TestClassSample1.java (+9/-0)
testng-core/src/test/java/test/annotationtransformer/issue1790/TestClassSample2.java (+9/-0)
testng-core/src/test/java/test/annotationtransformer/issue1790/TransformerImpl.java (+40/-0)
testng-core/src/test/java/test/annotationtransformer/issue2312/RetryListener.java (+20/-0)
testng-core/src/test/java/test/annotationtransformer/issue2312/SampleTestClass.java (+12/-0)
testng-core/src/test/java/test/annotationtransformer/issue2536/data/nested/ClassContainer.java (+14/-0)
testng-core/src/test/java/test/annotationtransformer/issue2536/data/normal/NonGroupClass1.java (+12/-0)
testng-core/src/test/java/test/annotationtransformer/issue2536/data/normal/NonGroupClass2.java (+11/-0)
testng-core/src/test/java/test/annotationtransformer/issue2536/listeners/ExternalGroupManager.java (+54/-0)
testng-core/src/test/java/test/ant/AntSystemPropertySet.java (+27/-0)
testng-core/src/test/java/test/ant/DontOverrideSuiteNameTest.java (+13/-0)
testng-core/src/test/java/test/ant/MultipleThreadTest.java (+132/-0)
testng-core/src/test/java/test/ant/NoPackageTest.java (+19/-0)
testng-core/src/test/java/test/ant/TestCommandLineArgs.java (+40/-0)
testng-core/src/test/java/test/attributes/AttributeTest.java (+35/-0)
testng-core/src/test/java/test/attributes/issue2346/BaseTest.java (+23/-0)
testng-core/src/test/java/test/attributes/issue2346/IssueTest.java (+22/-0)
testng-core/src/test/java/test/attributes/issue2346/LocalTestListener.java (+30/-0)
testng-core/src/test/java/test/attributes/issue2346/SingleTest.java (+16/-0)
testng-core/src/test/java/test/beforegroups/BeforeGroupsTest.java (+152/-0)
testng-core/src/test/java/test/beforegroups/issue118/TestclassSample.java (+19/-0)
testng-core/src/test/java/test/beforegroups/issue1694/BaseClassWithBeforeGroups.java (+15/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassA.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassB.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassC.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassD.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassE.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue1694/ChildClassF.java (+8/-0)
testng-core/src/test/java/test/beforegroups/issue2229/AnotherTestClassSample.java (+52/-0)
testng-core/src/test/java/test/beforegroups/issue2229/TestClassSample.java (+93/-0)
testng-core/src/test/java/test/beforegroups/issue346/SampleTestClass.java (+35/-0)
testng-core/src/test/java/test/bug90/Bug90Test.java (+28/-0)
testng-core/src/test/java/test/bug90/Sample.java (+19/-0)
testng-core/src/test/java/test/bug92/Bug92Test.java (+27/-0)
testng-core/src/test/java/test/bug92/TestAlpha.java (+12/-0)
testng-core/src/test/java/test/bug92/TestBase.java (+19/-0)
testng-core/src/test/java/test/bug92/TestBravo.java (+12/-0)
testng-core/src/test/java/test/classgroup/First.java (+23/-0)
testng-core/src/test/java/test/classgroup/Second.java (+12/-0)
testng-core/src/test/java/test/cli/CliTest.java (+80/-0)
testng-core/src/test/java/test/cli/github1517/TestClassWithConfigFailureSample.java (+17/-0)
testng-core/src/test/java/test/cli/github1517/TestClassWithConfigSkipAndFailureSample.java (+23/-0)
testng-core/src/test/java/test/cli/github1517/TestClassWithConfigSkipSample.java (+18/-0)
testng-core/src/test/java/test/cli/github2693/TestClassSample.java (+24/-0)
testng-core/src/test/java/test/commandline/CommandLineOverridesXml.java (+108/-0)
testng-core/src/test/java/test/commandline/Issue987TestSample.java (+19/-0)
testng-core/src/test/java/test/commandline/OverrideSampleTest.java (+12/-0)
testng-core/src/test/java/test/commandline/issue341/LocalLogAggregator.java (+22/-0)
testng-core/src/test/java/test/commandline/issue341/TestSampleA.java (+11/-0)
testng-core/src/test/java/test/commandline/issue341/TestSampleB.java (+11/-0)
testng-core/src/test/java/test/conffailure/ClassWithFailedBeforeSuite.java (+11/-0)
testng-core/src/test/java/test/conffailure/ClassWithFailedBeforeSuiteVerification.java (+26/-0)
testng-core/src/test/java/test/conffailure/ClassWithFailedBeforeTestClass.java (+15/-0)
testng-core/src/test/java/test/conffailure/ClassWithFailedBeforeTestClassVerification.java (+31/-0)
testng-core/src/test/java/test/conffailure/ConfigurationFailure.java (+55/-0)
testng-core/src/test/java/test/conffailure/github990/AbstractBaseSample.java (+24/-0)
testng-core/src/test/java/test/conffailure/github990/ChildClassSample.java (+6/-0)
testng-core/src/test/java/test/configuration/AfterMethodWithGroupFiltersSampleTest.java (+40/-0)
testng-core/src/test/java/test/configuration/AfterMethodWithGroupFiltersTest.java (+17/-0)
testng-core/src/test/java/test/configuration/Base.java (+20/-0)
testng-core/src/test/java/test/configuration/Base3.java (+21/-0)
testng-core/src/test/java/test/configuration/BaseBeforeTestOrdering.java (+8/-0)
testng-core/src/test/java/test/configuration/BaseGroupsASampleTest.java (+10/-0)
testng-core/src/test/java/test/configuration/BaseGroupsBSampleTest.java (+8/-0)
testng-core/src/test/java/test/configuration/BaseGroupsTest.java (+56/-0)
testng-core/src/test/java/test/configuration/BeforeClassTest.java (+51/-0)
testng-core/src/test/java/test/configuration/BeforeClassThreadA.java (+17/-0)
testng-core/src/test/java/test/configuration/BeforeClassThreadB.java (+17/-0)
testng-core/src/test/java/test/configuration/BeforeMethodTest.java (+27/-0)
testng-core/src/test/java/test/configuration/BeforeMethodWithGroupFiltersSampleTest.java (+41/-0)
testng-core/src/test/java/test/configuration/BeforeMethodWithGroupFiltersTest.java (+17/-0)
testng-core/src/test/java/test/configuration/BeforeTestOrdering1Test.java (+23/-0)
testng-core/src/test/java/test/configuration/BeforeTestOrdering2Test.java (+23/-0)
testng-core/src/test/java/test/configuration/BeforeTestOrderingTest.java (+56/-0)
testng-core/src/test/java/test/configuration/ConfigurationBaseTest.java (+27/-0)
testng-core/src/test/java/test/configuration/ConfigurationDisabledSampleTest.java (+26/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroupBothSampleTest.java (+45/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroupDataProviderSampleTest.java (+38/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroupInvocationCountSampleTest.java (+32/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroupIteratorDataProviderSampleTest.java (+40/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups1SampleTest.java (+46/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups2SampleTest.java (+60/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups3SampleTest.java (+56/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups4SampleTest.java (+39/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups5SampleTest.java (+55/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups6SampleTest.java (+47/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups7SampleTest.java (+38/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroups8SampleTest.java (+49/-0)
testng-core/src/test/java/test/configuration/ConfigurationGroupsTest.java (+63/-0)
testng-core/src/test/java/test/configuration/ConfigurationInheritGroupsSampleTest.java (+19/-0)
testng-core/src/test/java/test/configuration/ConfigurationListenerSampleTest.java (+29/-0)
testng-core/src/test/java/test/configuration/ConfigurationListenerTest.java (+17/-0)
testng-core/src/test/java/test/configuration/ConfigurationTest.java (+32/-0)
testng-core/src/test/java/test/configuration/ConfigurationWithParameters.java (+22/-0)
testng-core/src/test/java/test/configuration/GroupsTest.java (+57/-0)
testng-core/src/test/java/test/configuration/MultipleBeforeGroupTest.java (+23/-0)
testng-core/src/test/java/test/configuration/ReflectMethodParametrizedConfigurationMethodTest.java (+44/-0)
testng-core/src/test/java/test/configuration/SingleConfigurationTest.java (+37/-0)
testng-core/src/test/java/test/configuration/SuiteFactoryOnceSample1Test.java (+23/-0)
testng-core/src/test/java/test/configuration/SuiteFactoryOnceSample2Test.java (+11/-0)
testng-core/src/test/java/test/configuration/SuiteFactoryOnceTest.java (+21/-0)
testng-core/src/test/java/test/configuration/github1338/BaseGitHub1338Sample.java (+23/-0)
testng-core/src/test/java/test/configuration/github1338/FirstGitHub1338Sample.java (+9/-0)
testng-core/src/test/java/test/configuration/github1338/SecondGitHub1338Sample.java (+9/-0)
testng-core/src/test/java/test/configuration/github1338/ThirdGitHub1338Sample.java (+9/-0)
testng-core/src/test/java/test/configuration/github1625/TestRunnerIssue1625.java (+27/-0)
testng-core/src/test/java/test/configuration/github1625/TestclassSampleUsingMocks.java (+35/-0)
testng-core/src/test/java/test/configuration/github1625/TestclassSampleWithoutUsingMocks.java (+27/-0)
testng-core/src/test/java/test/configuration/github1700/BaseClassSample.java (+20/-0)
testng-core/src/test/java/test/configuration/github1700/ChildClassTestSample1.java (+10/-0)
testng-core/src/test/java/test/configuration/github1700/ChildClassTestSample2.java (+10/-0)
testng-core/src/test/java/test/configuration/github1700/RunTest.java (+21/-0)
testng-core/src/test/java/test/configuration/issue1035/InvocationTracker.java (+45/-0)
testng-core/src/test/java/test/configuration/issue1035/MyFactory.java (+24/-0)
testng-core/src/test/java/test/configuration/issue1035/TestclassExample.java (+27/-0)
testng-core/src/test/java/test/configuration/issue1753/ChildClassSample.java (+27/-0)
testng-core/src/test/java/test/configuration/issue1753/IssueTest.java (+32/-0)
testng-core/src/test/java/test/configuration/issue1753/LocalReporter.java (+37/-0)
testng-core/src/test/java/test/configuration/issue1753/ParentClassSample.java (+24/-0)
testng-core/src/test/java/test/configuration/issue2209/IssueTest.java (+59/-0)
testng-core/src/test/java/test/configuration/issue2254/IssueTest.java (+63/-0)
testng-core/src/test/java/test/configuration/issue2254/samples/SampleTestCase.java (+42/-0)
testng-core/src/test/java/test/configuration/issue2400/DataStore.java (+19/-0)
testng-core/src/test/java/test/configuration/issue2400/IssueTest.java (+23/-0)
testng-core/src/test/java/test/configuration/issue2400/TestNGTestClass.java (+65/-0)
testng-core/src/test/java/test/configuration/issue2400/TestRunnerCapabilities.java (+53/-0)
testng-core/src/test/java/test/configuration/issue2426/IssueTest.java (+22/-0)
testng-core/src/test/java/test/configuration/issue2426/MyMethodListener.java (+45/-0)
testng-core/src/test/java/test/configuration/issue2426/SampleTestCase.java (+54/-0)
testng-core/src/test/java/test/configuration/issue2432/Base.java (+16/-0)
testng-core/src/test/java/test/configuration/issue2432/IssueTest.java (+43/-0)
testng-core/src/test/java/test/configuration/issue2432/Test1.java (+12/-0)
testng-core/src/test/java/test/configuration/issue2664/MethodInvocationListener.java (+20/-0)
testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesBaseClass.java (+8/-0)
testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesChildSample.java (+20/-0)
testng-core/src/test/java/test/configuration/issue2664/cls/GroupDependenciesSample.java (+23/-0)
testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesBaseClass.java (+8/-0)
testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesChildSample.java (+20/-0)
testng-core/src/test/java/test/configuration/issue2664/suite/GroupDependenciesSample.java (+23/-0)
testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesBaseClass.java (+8/-0)
testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesChildSample.java (+20/-0)
testng-core/src/test/java/test/configuration/issue2664/test/GroupDependenciesSample.java (+23/-0)
testng-core/src/test/java/test/configuration/sample/BaseSuiteTestSample.java (+21/-0)
testng-core/src/test/java/test/configuration/sample/ConfigurationTestSample.java (+96/-0)
testng-core/src/test/java/test/configuration/sample/ExternalConfigurationClassSample.java (+52/-0)
testng-core/src/test/java/test/configuration/sample/MethodCallOrderTestSample.java (+74/-0)
testng-core/src/test/java/test/configuration/sample/SuiteTestSample.java (+22/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeClassMethod.java (+19/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeClassMethodAndAfterClass.java (+19/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeClassMethodAndBeforeGroupsAfterClassAfterGroups.java (+27/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeClassMethodAndBeforeMethodAfterMethodAfterClass.java (+27/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeMethod.java (+15/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeMethodAndMultipleInvocations.java (+24/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithFailedBeforeMethodAndMultipleTests.java (+18/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ClassWithSkippingBeforeMethod.java (+24/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ExtendsClassWithFailedBeforeClassMethod.java (+11/-0)
testng-core/src/test/java/test/configurationfailurepolicy/ExtendsClassWithFailedBeforeMethod.java (+13/-0)
testng-core/src/test/java/test/configurationfailurepolicy/FactoryClassWithFailedBeforeClassMethod.java (+13/-0)
testng-core/src/test/java/test/configurationfailurepolicy/FactoryClassWithFailedBeforeMethod.java (+13/-0)
testng-core/src/test/java/test/configurationfailurepolicy/FactoryClassWithFailedBeforeMethodAndMultipleInvocations.java (+14/-0)
testng-core/src/test/java/test/configurationfailurepolicy/FailurePolicyTest.java (+181/-0)
testng-core/src/test/java/test/converter/ConverterSample1.java (+21/-0)
testng-core/src/test/java/test/custom/CustomAttributeTest.java (+39/-0)
testng-core/src/test/java/test/custom/CustomAttributesListener.java (+24/-0)
testng-core/src/test/java/test/custom/CustomAttributesTransformer.java (+45/-0)
testng-core/src/test/java/test/custom/TestClassSample.java (+15/-0)
testng-core/src/test/java/test/cyclic/AbstractGenericTests.java (+11/-0)
testng-core/src/test/java/test/cyclic/BaseIntegrationTest.java (+16/-0)
testng-core/src/test/java/test/cyclic/HibernateConcreteTests.java (+11/-0)
testng-core/src/test/java/test/cyclic/SomeConcreteTests.java (+11/-0)
testng-core/src/test/java/test/dataprovider/AnnotatedInheritedDataProviderBaseSample.java (+6/-0)
testng-core/src/test/java/test/dataprovider/AnnotatedInheritedDataProviderSample.java (+9/-0)
testng-core/src/test/java/test/dataprovider/BooleanDataProviderSample.java (+15/-0)
testng-core/src/test/java/test/dataprovider/ClassDataProviderSample.java (+17/-0)
testng-core/src/test/java/test/dataprovider/ClassSample.java (+34/-0)
testng-core/src/test/java/test/dataprovider/ConfigurationAndDataProvidersSample.java (+53/-0)
testng-core/src/test/java/test/dataprovider/ConstructorInjectionProvider.java (+20/-0)
testng-core/src/test/java/test/dataprovider/ConstructorOrMethodSample.java (+51/-0)
testng-core/src/test/java/test/dataprovider/ConstructorSample.java (+36/-0)
testng-core/src/test/java/test/dataprovider/CreateDataTest.java (+25/-0)
testng-core/src/test/java/test/dataprovider/DataProviderAsTestSample.java (+16/-0)
testng-core/src/test/java/test/dataprovider/DataProviderIntegrationSample.java (+17/-0)
testng-core/src/test/java/test/dataprovider/DataProviderRetryAnalyzer.java (+19/-0)
testng-core/src/test/java/test/dataprovider/DataProviderRetryTest.java (+26/-0)
testng-core/src/test/java/test/dataprovider/DataProviderTest.java (+409/-0)
testng-core/src/test/java/test/dataprovider/DataProviderWithErrorSample.java (+23/-0)
testng-core/src/test/java/test/dataprovider/DependentSample.java (+26/-0)
testng-core/src/test/java/test/dataprovider/DuplicateDataProviderSample.java (+20/-0)
testng-core/src/test/java/test/dataprovider/EmptyDataProviderSample.java (+30/-0)
testng-core/src/test/java/test/dataprovider/ExplicitDataProviderNameSample.java (+20/-0)
testng-core/src/test/java/test/dataprovider/FailedDataProviderSample.java (+19/-0)
testng-core/src/test/java/test/dataprovider/FailingDataProviderSample.java (+18/-0)
testng-core/src/test/java/test/dataprovider/FailingDataProviderTest.java (+48/-0)
testng-core/src/test/java/test/dataprovider/FailingIterableDataProvider.java (+38/-0)
testng-core/src/test/java/test/dataprovider/FailingIterableDataProviderTest.java (+47/-0)
testng-core/src/test/java/test/dataprovider/FieldInjectionProvider.java (+17/-0)
testng-core/src/test/java/test/dataprovider/GitHub513Sample.java (+22/-0)
testng-core/src/test/java/test/dataprovider/Github1509TestClassSample.java (+17/-0)
testng-core/src/test/java/test/dataprovider/ITestNGMethodSample.java (+21/-0)
testng-core/src/test/java/test/dataprovider/IndicesFactorySample.java (+39/-0)
testng-core/src/test/java/test/dataprovider/IndicesSample.java (+33/-0)
testng-core/src/test/java/test/dataprovider/IndicesTest.java (+72/-0)
testng-core/src/test/java/test/dataprovider/InheritedDataProvider.java (+11/-0)
testng-core/src/test/java/test/dataprovider/InheritedDataProviderSample.java (+9/-0)
testng-core/src/test/java/test/dataprovider/InnexistentDataProviderSample.java (+9/-0)
testng-core/src/test/java/test/dataprovider/InstanceDataProviderSample.java (+18/-0)
testng-core/src/test/java/test/dataprovider/InstanceDataProviderSampleFactory.java (+11/-0)
testng-core/src/test/java/test/dataprovider/InterceptorTest.java (+79/-0)
testng-core/src/test/java/test/dataprovider/Jdk14IteratorSample.java (+13/-0)
testng-core/src/test/java/test/dataprovider/MethodSample.java (+46/-0)
testng-core/src/test/java/test/dataprovider/NonStaticProvider.java (+11/-0)
testng-core/src/test/java/test/dataprovider/OneDimDataProviderSample.java (+50/-0)
testng-core/src/test/java/test/dataprovider/ParallelDataProvider2Sample.java (+26/-0)
testng-core/src/test/java/test/dataprovider/ParallelDataProviderSample.java (+22/-0)
testng-core/src/test/java/test/dataprovider/RawIteratorDataProviderSample.java (+30/-0)
testng-core/src/test/java/test/dataprovider/StaticDataProviderSampleSample.java (+30/-0)
testng-core/src/test/java/test/dataprovider/StaticDataProviderSampleWithoutGuiceSample.java (+12/-0)
testng-core/src/test/java/test/dataprovider/StaticProvider.java (+11/-0)
testng-core/src/test/java/test/dataprovider/TestContextSample.java (+37/-0)
testng-core/src/test/java/test/dataprovider/TestContextTest.java (+46/-0)
testng-core/src/test/java/test/dataprovider/TestInstanceFactory.java (+11/-0)
testng-core/src/test/java/test/dataprovider/TestInstanceSample.java (+39/-0)
testng-core/src/test/java/test/dataprovider/TestNG411Sample.java (+49/-0)
testng-core/src/test/java/test/dataprovider/UnnamedDataProviderSample.java (+15/-0)
testng-core/src/test/java/test/dataprovider/VarArgsDataProviderSample.java (+15/-0)
testng-core/src/test/java/test/dataprovider/issue128/DataProviderParametersMismatchTest.java (+52/-0)
testng-core/src/test/java/test/dataprovider/issue128/GitHub128Sample.java (+63/-0)
testng-core/src/test/java/test/dataprovider/issue1691/DataProviderDefinitionAtClassLevelAndNoTestMethodUsage.java (+15/-0)
testng-core/src/test/java/test/dataprovider/issue1691/DataProviderDefinitionCompletelyProvidedAtClassLevel.java (+14/-0)
testng-core/src/test/java/test/dataprovider/issue1691/DataProviderDefinitionCompletelyProvidedAtClassLevelAndPartiallyAtMethodLevel.java (+14/-0)
testng-core/src/test/java/test/dataprovider/issue1691/DataProviderDefinitionProvidedPartiallyAtClassLevel.java (+14/-0)
testng-core/src/test/java/test/dataprovider/issue1691/SampleDataProvider.java (+22/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/BaseClassWithFullDefinitionOfDataProviderInClassLevel.java (+7/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/BaseClassWithFullDefinitionOfDataProviderInTestMethod.java (+14/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/BaseClassWithPartialDefinitionOfDataProviderInTestMethod.java (+13/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/ChildClassHasFullDefinitionOfDataProviderAtClassLevel.java (+8/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/ChildClassHasPartialDefinitionOfDataProviderAtClassLevel.java (+8/-0)
testng-core/src/test/java/test/dataprovider/issue1691/withinheritance/ChildClassWithNoDataProviderInformationInTestMethod.java (+12/-0)
testng-core/src/test/java/test/dataprovider/issue1987/BaseClassSample.java (+11/-0)
testng-core/src/test/java/test/dataprovider/issue1987/DataProviderInBaseClass.java (+9/-0)
testng-core/src/test/java/test/dataprovider/issue1987/DataProviderInDifferentClass.java (+9/-0)
testng-core/src/test/java/test/dataprovider/issue1987/DataProviderInSameClass.java (+15/-0)
testng-core/src/test/java/test/dataprovider/issue1987/DataProviderTrackingListener.java (+17/-0)
testng-core/src/test/java/test/dataprovider/issue1987/IssueTest.java (+39/-0)
testng-core/src/test/java/test/dataprovider/issue2111/CountingListener.java (+20/-0)
testng-core/src/test/java/test/dataprovider/issue2111/DataProviderHouse.java (+11/-0)
testng-core/src/test/java/test/dataprovider/issue2111/LocalDataProviderInterceptor.java (+27/-0)
testng-core/src/test/java/test/dataprovider/issue2111/TestClassExample.java (+9/-0)
testng-core/src/test/java/test/dataprovider/issue2111/TestClassExamplePoweredByFactory.java (+13/-0)
testng-core/src/test/java/test/dataprovider/issue2111/TestClassExamplePoweredByFactoryUsingListener.java (+15/-0)
testng-core/src/test/java/test/dataprovider/issue2111/TestClassSampleUsingListener.java (+11/-0)
testng-core/src/test/java/test/dataprovider/issue2157/TestClassWithDataProviderThatThrowsExceptions.java (+49/-0)
testng-core/src/test/java/test/dataprovider/issue217/IssueTest.java (+16/-0)
testng-core/src/test/java/test/dataprovider/issue217/SampleTestCase.java (+16/-0)
testng-core/src/test/java/test/dataprovider/issue2255/IssueTest.java (+17/-0)
testng-core/src/test/java/test/dataprovider/issue2255/SampleTestCase.java (+41/-0)
testng-core/src/test/java/test/dataprovider/issue2267/CustomListener.java (+25/-0)
testng-core/src/test/java/test/dataprovider/issue2267/IssueTest.java (+21/-0)
testng-core/src/test/java/test/dataprovider/issue2267/SampleTestCase.java (+23/-0)
testng-core/src/test/java/test/dataprovider/issue2327/IssueTest.java (+26/-0)
testng-core/src/test/java/test/dataprovider/issue2327/SampleTestCase.java (+27/-0)
testng-core/src/test/java/test/dataprovider/issue2504/IssueTest.java (+25/-0)
testng-core/src/test/java/test/dataprovider/issue2504/SampleTestCase.java (+26/-0)
testng-core/src/test/java/test/dataprovider/issue2504/SampleTestCaseListener.java (+24/-0)
testng-core/src/test/java/test/dataprovider/issue2565/Data.java (+22/-0)
testng-core/src/test/java/test/dataprovider/issue2565/SampleTestUsingConsumer.java (+23/-0)
testng-core/src/test/java/test/dataprovider/issue2565/SampleTestUsingFunction.java (+28/-0)
testng-core/src/test/java/test/dataprovider/issue2565/SampleTestUsingPredicate.java (+27/-0)
testng-core/src/test/java/test/dataprovider/issue2565/SampleTestUsingSupplier.java (+24/-0)
testng-core/src/test/java/test/defaultmethods/DefaultMethodTest.java (+93/-0)
testng-core/src/test/java/test/defaultmethods/InterfaceA.java (+25/-0)
testng-core/src/test/java/test/defaultmethods/TestA.java (+3/-0)
testng-core/src/test/java/test/defaultmethods/TestB.java (+3/-0)
testng-core/src/test/java/test/defaultmethods/TestC.java (+3/-0)
testng-core/src/test/java/test/dependent/BaseOrderMethodTest.java (+42/-0)
testng-core/src/test/java/test/dependent/C1.java (+13/-0)
testng-core/src/test/java/test/dependent/C2.java (+14/-0)
testng-core/src/test/java/test/dependent/ClassDependsOnGroups.java (+30/-0)
testng-core/src/test/java/test/dependent/ClassWide1Test.java (+22/-0)
testng-core/src/test/java/test/dependent/ClassWide2Test.java (+12/-0)
testng-core/src/test/java/test/dependent/DepBugSampleTest.java (+39/-0)
testng-core/src/test/java/test/dependent/DepBugVerifyTest.java (+17/-0)
testng-core/src/test/java/test/dependent/DependencyFixTest.java (+25/-0)
testng-core/src/test/java/test/dependent/DependentAlwaysRunTest.java (+45/-0)
testng-core/src/test/java/test/dependent/DependentOnGroup1AlwaysRunSampleTest.java (+31/-0)
testng-core/src/test/java/test/dependent/DependentOnGroup2AlwaysRunSampleTest.java (+34/-0)
testng-core/src/test/java/test/dependent/DependentOnMethod1AlwaysRunSampleTest.java (+31/-0)
testng-core/src/test/java/test/dependent/DependentTest.java (+287/-0)
testng-core/src/test/java/test/dependent/DependentWithDataProviderSampleTest.java (+55/-0)
testng-core/src/test/java/test/dependent/DependsOnProtectedMethodTest.java (+27/-0)
testng-core/src/test/java/test/dependent/DepthDependencyTest.java (+21/-0)
testng-core/src/test/java/test/dependent/DifferentClassDependsOnGroupsTest1.java (+15/-0)
testng-core/src/test/java/test/dependent/DifferentClassDependsOnGroupsTest2.java (+8/-0)
testng-core/src/test/java/test/dependent/GitHub261AlphaSample.java (+12/-0)
testng-core/src/test/java/test/dependent/GitHub261BetaSample.java (+15/-0)
testng-core/src/test/java/test/dependent/GitHub261Test.java (+23/-0)
testng-core/src/test/java/test/dependent/GroupByInstancesSampleTest.java (+45/-0)
testng-core/src/test/java/test/dependent/GroupByInstancesTest.java (+42/-0)
testng-core/src/test/java/test/dependent/ImplicitGroupInclusion2SampleTest.java (+39/-0)
testng-core/src/test/java/test/dependent/ImplicitGroupInclusion3SampleTest.java (+20/-0)
testng-core/src/test/java/test/dependent/ImplicitGroupInclusion4SampleTest.java (+47/-0)
testng-core/src/test/java/test/dependent/ImplicitGroupInclusionSampleTest.java (+19/-0)
testng-core/src/test/java/test/dependent/ImplicitGroupInclusionTest.java (+78/-0)
testng-core/src/test/java/test/dependent/ImplicitMethodInclusionSampleTest.java (+13/-0)
testng-core/src/test/java/test/dependent/InstanceSkipSampleTest.java (+51/-0)
testng-core/src/test/java/test/dependent/MissingGroupSampleTest.java (+33/-0)
testng-core/src/test/java/test/dependent/MissingGroupTest.java (+20/-0)
testng-core/src/test/java/test/dependent/MissingMethodSampleTest.java (+29/-0)
testng-core/src/test/java/test/dependent/MissingMethodTest.java (+20/-0)
testng-core/src/test/java/test/dependent/MultiGroup1SampleTest.java (+14/-0)
testng-core/src/test/java/test/dependent/MultiGroup2SampleTest.java (+11/-0)
testng-core/src/test/java/test/dependent/MultiGroupTest.java (+22/-0)
testng-core/src/test/java/test/dependent/MultipleDependentSampleTest.java (+21/-0)
testng-core/src/test/java/test/dependent/OrderMethodTest.java (+28/-0)
testng-core/src/test/java/test/dependent/SD2.java (+34/-0)
testng-core/src/test/java/test/dependent/SampleDependent1.java (+20/-0)
testng-core/src/test/java/test/dependent/SampleDependentConfigurationMethods.java (+26/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods.java (+56/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods2.java (+56/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods3.java (+45/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods4.java (+18/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods5.java (+12/-0)
testng-core/src/test/java/test/dependent/SampleDependentMethods6.java (+11/-0)
testng-core/src/test/java/test/dependent/SampleDependentTest.java (+39/-0)
testng-core/src/test/java/test/dependent/Test1.java (+3/-0)
testng-core/src/test/java/test/dependent/functionality1/Config.java (+11/-0)
testng-core/src/test/java/test/dependent/functionality1/Test1.java (+15/-0)
testng-core/src/test/java/test/dependent/functionality1/Test2.java (+15/-0)
testng-core/src/test/java/test/dependent/github1156/ASample.java (+9/-0)
testng-core/src/test/java/test/dependent/github1156/BSample.java (+9/-0)
testng-core/src/test/java/test/dependent/github1380/GitHub1380Sample.java (+18/-0)
testng-core/src/test/java/test/dependent/github1380/GitHub1380Sample2.java (+18/-0)
testng-core/src/test/java/test/dependent/github1380/GitHub1380Sample3.java (+18/-0)
testng-core/src/test/java/test/dependent/github1380/GitHub1380Sample4.java (+18/-0)
testng-core/src/test/java/test/dependent/issue1648/ClassASample.java (+28/-0)
testng-core/src/test/java/test/dependent/issue1648/ClassBSample.java (+15/-0)
testng-core/src/test/java/test/dependent/issue1648/LogExtractor.java (+7/-0)
testng-core/src/test/java/test/dependent/issue1648/TestOneSample.java (+3/-0)
testng-core/src/test/java/test/dependent/issue1648/TestRunner.java (+39/-0)
testng-core/src/test/java/test/dependent/issue1648/TestTwoSample.java (+3/-0)
testng-core/src/test/java/test/dependent/issue2658/BaseClassSample.java (+12/-0)
testng-core/src/test/java/test/dependent/issue2658/FailingClassSample.java (+8/-0)
testng-core/src/test/java/test/dependent/issue2658/PassingClassSample.java (+8/-0)
testng-core/src/test/java/test/dependent/xml/GroupDependencySampleTest.java (+15/-0)
testng-core/src/test/java/test/dependent/xml/GroupDependencyTest.java (+66/-0)
testng-core/src/test/java/test/dependsongroup/DependsOnGroupsTest.java (+30/-0)
testng-core/src/test/java/test/dependsongroup/FirstSampleTest.java (+15/-0)
testng-core/src/test/java/test/dependsongroup/SecondSampleTest.java (+15/-0)
testng-core/src/test/java/test/dependsongroup/TestFixture1.java (+8/-0)
testng-core/src/test/java/test/dependsongroup/TestFixture2.java (+14/-0)
testng-core/src/test/java/test/dependsongroup/ZeroSampleTest.java (+13/-0)
testng-core/src/test/java/test/dependsongroup/suite.xml (+15/-0)
testng-core/src/test/java/test/enable/A.java (+73/-0)
testng-core/src/test/java/test/enable/B.java (+74/-0)
testng-core/src/test/java/test/enable/C.java (+74/-0)
testng-core/src/test/java/test/enable/EnableTest.java (+72/-0)
testng-core/src/test/java/test/enable/Issue420BaseTestCase.java (+19/-0)
testng-core/src/test/java/test/enable/Issue420FirstSample.java (+10/-0)
testng-core/src/test/java/test/enable/Issue420SecondSample.java (+10/-0)
testng-core/src/test/java/test/expectedexceptions/ExpectedExceptionsTest.java (+44/-0)
testng-core/src/test/java/test/expectedexceptions/ParametersExceptionTest.java (+27/-0)
testng-core/src/test/java/test/expectedexceptions/SampleExceptions.java (+27/-0)
testng-core/src/test/java/test/expectedexceptions/SampleExceptions2.java (+53/-0)
testng-core/src/test/java/test/expectedexceptions/WrappedExpectedExceptionTest.java (+12/-0)
testng-core/src/test/java/test/expectedexceptions/github1409/TestClassSample.java (+10/-0)
testng-core/src/test/java/test/expectedexceptions/issue2074/FailingInterruptTest.java (+21/-0)
testng-core/src/test/java/test/expectedexceptions/issue2074/IssueTest.java (+25/-0)
testng-core/src/test/java/test/expectedexceptions/issue2235/ExampleTestCase.java (+11/-0)
testng-core/src/test/java/test/expectedexceptions/issue2235/IssueTest.java (+25/-0)
testng-core/src/test/java/test/factory/ArrayEmptyFactorySample.java (+22/-0)
testng-core/src/test/java/test/factory/BadMethodReturnTypeFactory.java (+11/-0)
testng-core/src/test/java/test/factory/BaseFactory.java (+11/-0)
testng-core/src/test/java/test/factory/BaseFactorySample.java (+29/-0)
testng-core/src/test/java/test/factory/ChildFactory.java (+3/-0)
testng-core/src/test/java/test/factory/DisabledFactory.java (+11/-0)
testng-core/src/test/java/test/factory/DisabledFactoryTest.java (+24/-0)
testng-core/src/test/java/test/factory/DoubleFactory.java (+16/-0)
testng-core/src/test/java/test/factory/EmptyFactoryDataProviderTest.java (+25/-0)
testng-core/src/test/java/test/factory/Factory2Test.java (+12/-0)
testng-core/src/test/java/test/factory/FactoryAndTestMethodTest.java (+37/-0)
testng-core/src/test/java/test/factory/FactoryBaseSample.java (+25/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderNotStaticSample.java (+11/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderSample.java (+23/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderStaticErrorSample.java (+19/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderStaticSample.java (+11/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderTest.java (+53/-0)
testng-core/src/test/java/test/factory/FactoryDataProviderWithNoArgCtorErrorSample.java (+23/-0)
testng-core/src/test/java/test/factory/FactoryFailureNoInstancesSample.java (+20/-0)
testng-core/src/test/java/test/factory/FactoryFailureSample.java (+15/-0)
testng-core/src/test/java/test/factory/FactoryFailureTest.java (+38/-0)
testng-core/src/test/java/test/factory/FactoryInSeparateClassTest.java (+45/-0)
testng-core/src/test/java/test/factory/FactoryInSuperClassTest.java (+20/-0)
testng-core/src/test/java/test/factory/FactoryIntegrationTest.java (+68/-0)
testng-core/src/test/java/test/factory/FactoryInterleavingTest.java (+35/-0)
testng-core/src/test/java/test/factory/FactoryOrderMainTest.java (+25/-0)
testng-core/src/test/java/test/factory/FactoryTest.java (+28/-0)
testng-core/src/test/java/test/factory/FactoryTest2.java (+33/-0)
testng-core/src/test/java/test/factory/FactoryWithDataProvider.java (+27/-0)
testng-core/src/test/java/test/factory/FactoryWithDataProviderTest.java (+45/-0)
testng-core/src/test/java/test/factory/FactoryWithInstanceInfo2Sample.java (+29/-0)
testng-core/src/test/java/test/factory/FactoryWithInstanceInfoTest.java (+34/-0)
testng-core/src/test/java/test/factory/GitHub876Sample.java (+47/-0)
testng-core/src/test/java/test/factory/InterleavingFactorySample.java (+14/-0)
testng-core/src/test/java/test/factory/InterleavingSample.java (+42/-0)
testng-core/src/test/java/test/factory/IteratorEmptyFactorySample.java (+24/-0)
testng-core/src/test/java/test/factory/MySample.java (+32/-0)
testng-core/src/test/java/test/factory/NestedFactorySample.java (+43/-0)
testng-core/src/test/java/test/factory/NestedStaticFactorySample.java (+44/-0)
testng-core/src/test/java/test/factory/NonPublicFactory.java (+11/-0)
testng-core/src/test/java/test/factory/NotStaticDataProvider.java (+13/-0)
testng-core/src/test/java/test/factory/OddSample.java (+18/-0)
testng-core/src/test/java/test/factory/OrderFactory.java (+17/-0)
testng-core/src/test/java/test/factory/OrderSample.java (+32/-0)
testng-core/src/test/java/test/factory/StaticDataProvider.java (+13/-0)
testng-core/src/test/java/test/factory/TestClassAnnotationTest.java (+31/-0)
testng-core/src/test/java/test/factory/VerifyFactoryTest.java (+16/-0)
testng-core/src/test/java/test/factory/VerifyFactoryWithInstanceInfoTest.java (+16/-0)
testng-core/src/test/java/test/factory/classconf/XClassOrderWithFactory.java (+31/-0)
testng-core/src/test/java/test/factory/classconf/XClassOrderWithFactoryTest.java (+18/-0)
testng-core/src/test/java/test/factory/github1083/ArrayFactorySample.java (+27/-0)
testng-core/src/test/java/test/factory/github1083/ConstructorFactorySample.java (+29/-0)
testng-core/src/test/java/test/factory/github1083/DataProviderArrayFactorySample.java (+33/-0)
testng-core/src/test/java/test/factory/github1083/DataProviderInstanceInfoFactorySample.java (+38/-0)
testng-core/src/test/java/test/factory/github1083/GitHub1083Test.java (+47/-0)
testng-core/src/test/java/test/factory/github1083/InstanceInfoFactorySample.java (+32/-0)
testng-core/src/test/java/test/factory/github1131/EmptyConstructorSample.java (+23/-0)
testng-core/src/test/java/test/factory/github1131/GitHub1131Test.java (+54/-0)
testng-core/src/test/java/test/factory/github1131/IntConstructorSample.java (+25/-0)
testng-core/src/test/java/test/factory/github1131/StringConstructorSample.java (+25/-0)
testng-core/src/test/java/test/factory/github1631/DataProviderTransformer.java (+46/-0)
testng-core/src/test/java/test/factory/github1631/ExternalDataProviders.java (+11/-0)
testng-core/src/test/java/test/factory/github1631/FactoryWithExternalDataProviderTests.java (+19/-0)
testng-core/src/test/java/test/factory/github1631/FactoryWithLocalDataProviderTests.java (+25/-0)
testng-core/src/test/java/test/factory/github1631/GitHub1631Tests.java (+31/-0)
testng-core/src/test/java/test/factory/github2428/FactoryTest.java (+27/-0)
testng-core/src/test/java/test/factory/github2428/IssueTest.java (+21/-0)
testng-core/src/test/java/test/factory/github2428/Reporter.java (+29/-0)
testng-core/src/test/java/test/factory/github328/ExcludedFactory.java (+24/-0)
testng-core/src/test/java/test/factory/github328/GitHub328Test.java (+26/-0)
testng-core/src/test/java/test/factory/issue1041/FactoryAnnotatedConstructorExample.java (+52/-0)
testng-core/src/test/java/test/factory/issue1041/IssueTest.java (+29/-0)
testng-core/src/test/java/test/factory/issue1041/ResultExtractor.java (+47/-0)
testng-core/src/test/java/test/factory/issue1745/Github1745Test.java (+28/-0)
testng-core/src/test/java/test/factory/issue1745/SuiteXmlPoweredFactoryTest.java (+28/-0)
testng-core/src/test/java/test/factory/issue1745/TestClassSample.java (+40/-0)
testng-core/src/test/java/test/factory/issue1770/SampleTestBase.java (+13/-0)
testng-core/src/test/java/test/factory/issue1770/SampleTestFour.java (+20/-0)
testng-core/src/test/java/test/factory/issue1924/IssueTest.java (+20/-0)
testng-core/src/test/java/test/factory/issue1924/TestclassSample.java (+26/-0)
testng-core/src/test/java/test/factory/issue326/IssueTest.java (+54/-0)
testng-core/src/test/java/test/factory/issue326/LocalTrackingListener.java (+48/-0)
testng-core/src/test/java/test/factory/issue326/SampleTestClass.java (+55/-0)
testng-core/src/test/java/test/factory/issue553/Base.java (+17/-0)
testng-core/src/test/java/test/factory/issue553/Concrete.java (+3/-0)
testng-core/src/test/java/test/factory/issue553/IssueTest.java (+24/-0)
testng-core/src/test/java/test/factory/nested/AbstractBaseSample.java (+15/-0)
testng-core/src/test/java/test/factory/nested/BaseFactorySample.java (+14/-0)
testng-core/src/test/java/test/factory/nested/FactoryWithAnonymousTestsSample.java (+14/-0)
testng-core/src/test/java/test/factory/nested/GitHub1307Test.java (+25/-0)
testng-core/src/test/java/test/factory/sample/Factory2Sample.java (+66/-0)
testng-core/src/test/java/test/factory/sample/Factory2TestSample.java (+15/-0)
testng-core/src/test/java/test/failedreporter/FailedReporter2SampleTest.java (+20/-0)
testng-core/src/test/java/test/failedreporter/FailedReporterLocalTestClass.java (+25/-0)
testng-core/src/test/java/test/failedreporter/FailedReporterParametersTest.java (+138/-0)
testng-core/src/test/java/test/failedreporter/FailedReporterSampleTest.java (+19/-0)
testng-core/src/test/java/test/failedreporter/FailedReporterScenariosTest.java (+87/-0)
testng-core/src/test/java/test/failedreporter/FailedReporterTest.java (+207/-0)
testng-core/src/test/java/test/failedreporter/issue1297/depend/PassDependsOnFailureSample.java (+14/-0)
testng-core/src/test/java/test/failedreporter/issue1297/depend_on_group/GroupDependFailureSample.java (+12/-0)
testng-core/src/test/java/test/failedreporter/issue1297/depend_on_group/GroupDependPassSample.java (+11/-0)
testng-core/src/test/java/test/failedreporter/issue1297/depend_on_group/GroupDependSampleBase.java (+21/-0)
testng-core/src/test/java/test/failedreporter/issue1297/depend_on_test/PassDependsOnPassSample.java (+20/-0)
testng-core/src/test/java/test/failedreporter/issue1297/groups/GroupsFailureSample.java (+12/-0)
testng-core/src/test/java/test/failedreporter/issue1297/groups/GroupsPassSample.java (+8/-0)
testng-core/src/test/java/test/failedreporter/issue1297/groups/GroupsSampleBase.java (+21/-0)
testng-core/src/test/java/test/failedreporter/issue1297/inheritance/InheritanceFailureSample.java (+11/-0)
testng-core/src/test/java/test/failedreporter/issue1297/inheritance/InheritancePassSample.java (+8/-0)
testng-core/src/test/java/test/failedreporter/issue1297/inheritance/SampleBase.java (+20/-0)
testng-core/src/test/java/test/failedreporter/issue1297/straightforward/AllPassSample.java (+14/-0)
testng-core/src/test/java/test/failedreporter/issue1297/straightforward/FailureSample.java (+19/-0)
testng-core/src/test/java/test/failedreporter/issue2517/DataProviderWithFactoryFailedReporterSample.java (+28/-0)
testng-core/src/test/java/test/failedreporter/issue2517/DataProviderWithFactoryFailedReporterTest.java (+54/-0)
testng-core/src/test/java/test/failedreporter/issue2521/DataProviderWithFactoryMultiFailedReporterSample.java (+35/-0)
testng-core/src/test/java/test/failedreporter/issue2521/DataProviderWithFactoryMultiFailedReporterTest.java (+54/-0)
testng-core/src/test/java/test/failures/Base0.java (+9/-0)
testng-core/src/test/java/test/failures/Base1.java (+14/-0)
testng-core/src/test/java/test/failures/BaseFailuresTest.java (+82/-0)
testng-core/src/test/java/test/failures/Child.java (+14/-0)
testng-core/src/test/java/test/failures/DependentTest.java (+16/-0)
testng-core/src/test/java/test/failures/FailuresTest.java (+105/-0)
testng-core/src/test/java/test/failures/issue1930/PrimeNumberChecker.java (+20/-0)
testng-core/src/test/java/test/failures/issue1930/SimpleCliStatus.java (+26/-0)
testng-core/src/test/java/test/failures/issue1930/TestBase.java (+18/-0)
testng-core/src/test/java/test/failures/issue1930/TestClassSample.java (+26/-0)
testng-core/src/test/java/test/github1336/BaseClass.java (+41/-0)
testng-core/src/test/java/test/github1336/TestNG1.java (+20/-0)
testng-core/src/test/java/test/github1336/TestNG1NoPriority.java (+20/-0)
testng-core/src/test/java/test/github1336/TestNG2.java (+20/-0)
testng-core/src/test/java/test/github1336/TestNG2NoPriority.java (+20/-0)
testng-core/src/test/java/test/github1336/TestNG3.java (+20/-0)
testng-core/src/test/java/test/github1336/TestNG3NoPriority.java (+20/-0)
testng-core/src/test/java/test/github1362/AfterGroupsTestInvolvingInterceptors.java (+43/-0)
testng-core/src/test/java/test/github1362/LocalMethodInterceptor.java (+20/-0)
testng-core/src/test/java/test/github1362/TestSample.java (+30/-0)
testng-core/src/test/java/test/github1405/JUnitTestClassSample.java (+8/-0)
testng-core/src/test/java/test/github1405/TestClassSample.java (+10/-0)
testng-core/src/test/java/test/github1405/TestExclusionOfMainMethod.java (+26/-0)
testng-core/src/test/java/test/github1417/AnotherTestClassSample.java (+46/-0)
testng-core/src/test/java/test/github1417/TestClassSample.java (+21/-0)
testng-core/src/test/java/test/github1417/TestParamsInjectionInBeforeClass.java (+24/-0)
testng-core/src/test/java/test/github1417/YetAnotherTestClassSample.java (+48/-0)
testng-core/src/test/java/test/github1461/MemoryLeakTestNg.java (+74/-0)
testng-core/src/test/java/test/github1461/MyTestClassWithGlobalReferenceCounterSample.java (+37/-0)
testng-core/src/test/java/test/github1490/DataProviderHouse.java (+28/-0)
testng-core/src/test/java/test/github1490/FactoryPoweredDataProviderWithListenerAnnotationSample.java (+28/-0)
testng-core/src/test/java/test/github1490/FactoryPoweredDataProviderWithoutListenerAnnotationSample.java (+25/-0)
testng-core/src/test/java/test/github1490/InstanceBasedDataProviderWithListenerAnnotationSample.java (+20/-0)
testng-core/src/test/java/test/github1490/SimpleDataProviderWithListenerAnnotationSample.java (+20/-0)
testng-core/src/test/java/test/github1490/SimpleDataProviderWithListenerAnnotationSample1.java (+20/-0)
testng-core/src/test/java/test/github1490/SimpleDataProviderWithoutListenerAnnotationSample.java (+17/-0)
testng-core/src/test/java/test/github1490/StaticDataProviderWithListenerAnnotationSample.java (+28/-0)
testng-core/src/test/java/test/github1490/TestInfo.java (+13/-0)
testng-core/src/test/java/test/github1490/TwoFactoriesShareSameDataProviderSampleOne.java (+23/-0)
testng-core/src/test/java/test/github1490/TwoFactoriesShareSameDataProviderSampleTwo.java (+23/-0)
testng-core/src/test/java/test/github1490/TwoTestMethodsShareSameDataProviderSample.java (+27/-0)
testng-core/src/test/java/test/github1490/TwoTestMethodsShareSameDataProviderSampleTwo.java (+20/-0)
testng-core/src/test/java/test/github1490/VerifyDataProviderListener.java (+169/-0)
testng-core/src/test/java/test/github765/DuplicateCallsSample.java (+20/-0)
testng-core/src/test/java/test/github765/ExcludeSyntheticMethodsFromTemplateCallsTest.java (+22/-0)
testng-core/src/test/java/test/github765/TestTemplate.java (+6/-0)
testng-core/src/test/java/test/github799/EnsureInstancesAreOrderedViaFactories.java (+63/-0)
testng-core/src/test/java/test/github799/InstanceTestSample.java (+37/-0)
testng-core/src/test/java/test/github799/MethodsTestSample.java (+28/-0)
testng-core/src/test/java/test/github799/ReverseOrderTestSample.java (+27/-0)
testng-core/src/test/java/test/github799/TestSample.java (+27/-0)
testng-core/src/test/java/test/graph/GraphVisualiserTest.java (+38/-0)
testng-core/src/test/java/test/graph/LocalVisualiser.java (+31/-0)
testng-core/src/test/java/test/graph/TestSampleWithListener.java (+14/-0)
testng-core/src/test/java/test/graph/TestSampleWithoutListener.java (+12/-0)
testng-core/src/test/java/test/groupbug/GroupBugTest.java (+35/-0)
testng-core/src/test/java/test/groupbug/ITCaseOne.java (+31/-0)
testng-core/src/test/java/test/groupbug/ITCaseTwo.java (+30/-0)
testng-core/src/test/java/test/groupinvocation/DummyTest.java (+36/-0)
testng-core/src/test/java/test/groupinvocation/DummyTest2.java (+19/-0)
testng-core/src/test/java/test/groupinvocation/FailingBeforeGroupMethod.java (+10/-0)
testng-core/src/test/java/test/groupinvocation/GroupConfiguration.java (+16/-0)
testng-core/src/test/java/test/groupinvocation/GroupSuiteSampleTest.java (+15/-0)
testng-core/src/test/java/test/groupinvocation/GroupSuiteSampleTest2.java (+15/-0)
testng-core/src/test/java/test/groupinvocation/GroupSuiteTest.java (+158/-0)
testng-core/src/test/java/test/groupinvocation/InvokerTest.java (+55/-0)
testng-core/src/test/java/test/groupinvocation/testng.xml (+34/-0)
testng-core/src/test/java/test/groups/issue182/ChildTest.java (+9/-0)
testng-core/src/test/java/test/groups/issue182/IssueTest.java (+28/-0)
testng-core/src/test/java/test/groups/issue182/LocalListener.java (+24/-0)
testng-core/src/test/java/test/groups/issue182/ParentTest.java (+8/-0)
testng-core/src/test/java/test/groups/issue1834/IssueTest.java (+49/-0)
testng-core/src/test/java/test/groups/issue1834/OutputGatheringListener.java (+20/-0)
testng-core/src/test/java/test/groups/issue1834/TestSample.java (+16/-0)
testng-core/src/test/java/test/groups/issue2152/IssueTest.java (+18/-0)
testng-core/src/test/java/test/groups/issue2152/TestClassSample.java (+27/-0)
testng-core/src/test/java/test/groups/issue2232/IssueTest.java (+85/-0)
testng-core/src/test/java/test/groups/issue2232/samples/SampleTest.java (+34/-0)
testng-core/src/test/java/test/groups/issue2232/samples/SampleTest2.java (+37/-0)
testng-core/src/test/java/test/guice/ExampleSingleton.java (+7/-0)
testng-core/src/test/java/test/guice/FakeInjector.java (+136/-0)
testng-core/src/test/java/test/guice/Guice1Test.java (+19/-0)
testng-core/src/test/java/test/guice/Guice2Test.java (+18/-0)
testng-core/src/test/java/test/guice/GuiceBase.java (+6/-0)
testng-core/src/test/java/test/guice/GuiceExampleModule.java (+13/-0)
testng-core/src/test/java/test/guice/GuiceInheritanceTest.java (+14/-0)
testng-core/src/test/java/test/guice/GuiceModuleFactoryTest.java (+16/-0)
testng-core/src/test/java/test/guice/GuiceNoModuleTest.java (+11/-0)
testng-core/src/test/java/test/guice/GuiceParentModule.java (+21/-0)
testng-core/src/test/java/test/guice/GuiceParentModuleTest.java (+24/-0)
testng-core/src/test/java/test/guice/GuiceTest.java (+100/-0)
testng-core/src/test/java/test/guice/GuiceTestModule.java (+18/-0)
testng-core/src/test/java/test/guice/ISingleton.java (+6/-0)
testng-core/src/test/java/test/guice/ModuleFactory.java (+22/-0)
testng-core/src/test/java/test/guice/MyContext.java (+6/-0)
testng-core/src/test/java/test/guice/MyContextImpl.java (+10/-0)
testng-core/src/test/java/test/guice/MyService.java (+6/-0)
testng-core/src/test/java/test/guice/MyServiceProvider.java (+11/-0)
testng-core/src/test/java/test/guice/MySession.java (+3/-0)
testng-core/src/test/java/test/guice/issue2343/Person.java (+10/-0)
testng-core/src/test/java/test/guice/issue2343/SampleA.java (+15/-0)
testng-core/src/test/java/test/guice/issue2343/SampleB.java (+15/-0)
testng-core/src/test/java/test/guice/issue2343/modules/ParentModule.java (+27/-0)
testng-core/src/test/java/test/guice/issue2355/AnotherParentModule.java (+38/-0)
testng-core/src/test/java/test/guice/issue2427/Test1.java (+13/-0)
testng-core/src/test/java/test/guice/issue2427/Test2.java (+13/-0)
testng-core/src/test/java/test/guice/issue2427/modules/TestAbstractModule.java (+28/-0)
testng-core/src/test/java/test/guice/issue2427/modules/TestModuleOne.java (+11/-0)
testng-core/src/test/java/test/guice/issue2427/modules/TestModuleTwo.java (+11/-0)
testng-core/src/test/java/test/guice/issue2427/modules/TestParentConfigModule.java (+11/-0)
testng-core/src/test/java/test/guice/issue2570/GuiceModule.java (+37/-0)
testng-core/src/test/java/test/guice/issue2570/GuicePoweredConstructorInjectedRetry.java (+33/-0)
testng-core/src/test/java/test/guice/issue2570/GuicePoweredConstructorInjectedRetryForDPTest.java (+30/-0)
testng-core/src/test/java/test/guice/issue2570/GuicePoweredSetterInjectedRetry.java (+33/-0)
testng-core/src/test/java/test/guice/issue2570/SampleTestClass.java (+28/-0)
testng-core/src/test/java/test/guice/issue279/Car.java (+7/-0)
testng-core/src/test/java/test/guice/issue279/DummyReporter.java (+29/-0)
testng-core/src/test/java/test/guice/issue279/DummyReporterWithoutModuleFactory.java (+29/-0)
testng-core/src/test/java/test/guice/issue279/Greeter.java (+6/-0)
testng-core/src/test/java/test/guice/issue279/IssueTest.java (+54/-0)
testng-core/src/test/java/test/guice/issue279/MyListener.java (+28/-0)
testng-core/src/test/java/test/guice/issue279/MyListenerWithoutModuleFactory.java (+28/-0)
testng-core/src/test/java/test/guice/issue279/SampleModule.java (+12/-0)
testng-core/src/test/java/test/guice/issue279/TestClassWithListener.java (+11/-0)
testng-core/src/test/java/test/guice/issue279/TestClassWithoutListener.java (+9/-0)
testng-core/src/test/java/test/guice/issue279/TestDIFactory.java (+13/-0)
testng-core/src/test/java/test/guice/issue279/TextGreeter.java (+9/-0)
testng-core/src/test/java/test/guice/issue279/Vehicle.java (+5/-0)
testng-core/src/test/java/test/guice/jitbinding/FirstModuleSample.java (+25/-0)
testng-core/src/test/java/test/guice/jitbinding/JitBindingTest.java (+21/-0)
testng-core/src/test/java/test/guice/jitbinding/SecondModuleSample.java (+25/-0)
testng-core/src/test/java/test/hook/HookableTest.java (+193/-0)
testng-core/src/test/java/test/hook/issue2251/AbstractBaseTestCase.java (+41/-0)
testng-core/src/test/java/test/hook/issue2251/IssueTest.java (+20/-0)
testng-core/src/test/java/test/hook/issue2251/SampleTestCase.java (+19/-0)
testng-core/src/test/java/test/hook/issue2257/IssueTest.java (+21/-0)
testng-core/src/test/java/test/hook/issue2257/TestClassSample.java (+60/-0)
testng-core/src/test/java/test/hook/issue2266/IssueTest.java (+22/-0)
testng-core/src/test/java/test/hook/issue2266/TestClassSample.java (+32/-0)
testng-core/src/test/java/test/hook/samples/BaseConfigurableSample.java (+23/-0)
testng-core/src/test/java/test/hook/samples/ConfigurableFailureSample.java (+19/-0)
testng-core/src/test/java/test/hook/samples/ConfigurableSuccessSample.java (+20/-0)
testng-core/src/test/java/test/hook/samples/ConfigurableSuccessWithListenerSample.java (+39/-0)
testng-core/src/test/java/test/hook/samples/HookFailureSample.java (+24/-0)
testng-core/src/test/java/test/hook/samples/HookSuccessDynamicParametersSample.java (+40/-0)
testng-core/src/test/java/test/hook/samples/HookSuccessSample.java (+31/-0)
testng-core/src/test/java/test/hook/samples/HookSuccessTimeoutSample.java (+31/-0)
testng-core/src/test/java/test/hook/samples/HookSuccessWithListenerSample.java (+31/-0)
testng-core/src/test/java/test/ignore/ChildClassTestSample.java (+9/-0)
testng-core/src/test/java/test/ignore/ChildSample.java (+9/-0)
testng-core/src/test/java/test/ignore/IgnoreClassParentSample.java (+11/-0)
testng-core/src/test/java/test/ignore/IgnoreClassSample.java (+14/-0)
testng-core/src/test/java/test/ignore/IgnoreTest.java (+86/-0)
testng-core/src/test/java/test/ignore/IgnoreTestSample.java (+14/-0)
testng-core/src/test/java/test/ignore/ParentClassTestSample.java (+23/-0)
testng-core/src/test/java/test/ignore/ParentSample.java (+9/-0)
testng-core/src/test/java/test/ignore/ignorePackage/IgnorePackageSample.java (+12/-0)
testng-core/src/test/java/test/ignore/ignorePackage/package-info.java (+4/-0)
testng-core/src/test/java/test/ignore/ignorePackage/subPackage/SubPackageSample.java (+9/-0)
testng-core/src/test/java/test/ignore/issue2396/FirstTest.java (+13/-0)
testng-core/src/test/java/test/ignore/issue2613/LocalClassListener.java (+24/-0)
testng-core/src/test/java/test/ignore/issue2613/SampleTestClassWithEnabledDisabledIgnoredTestMethods.java (+17/-0)
testng-core/src/test/java/test/ignore/issue2613/SampleTestClassWithEnabledIgnoredTestMethods.java (+14/-0)
testng-core/src/test/java/test/inheritance/BaseClassScope.java (+6/-0)
testng-core/src/test/java/test/inheritance/Child_1.java (+17/-0)
testng-core/src/test/java/test/inheritance/ClassScopeTest.java (+18/-0)
testng-core/src/test/java/test/inheritance/DChild_2.java (+31/-0)
testng-core/src/test/java/test/inheritance/InheritanceConfigTest.java (+27/-0)
testng-core/src/test/java/test/inheritance/VerifyTest.java (+28/-0)
testng-core/src/test/java/test/inheritance/ZBase_0.java (+30/-0)
testng-core/src/test/java/test/inheritance/github949/ChildClassSample.java (+12/-0)
testng-core/src/test/java/test/inheritance/github949/ChildClassWithAlwasyRunEnabledSample.java (+12/-0)
testng-core/src/test/java/test/inheritance/github949/CommonBaseClass.java (+17/-0)
testng-core/src/test/java/test/inheritance/github949/Github949Test.java (+30/-0)
testng-core/src/test/java/test/inheritance/github949/ParentClassSample.java (+15/-0)
testng-core/src/test/java/test/inheritance/github949/ParentClassWithAlwasyRunEnabledSample.java (+15/-0)
testng-core/src/test/java/test/inheritance/github980/ChildClassSample.java (+16/-0)
testng-core/src/test/java/test/inheritance/github980/Github980Test.java (+35/-0)
testng-core/src/test/java/test/inheritance/github980/ParentClassSample.java (+16/-0)
testng-core/src/test/java/test/inheritance/issue2489/IssueTest.java (+45/-0)
testng-core/src/test/java/test/inheritance/issue2489/tests/BaseClassA.java (+36/-0)
testng-core/src/test/java/test/inheritance/issue2489/tests/TestClassA.java (+40/-0)
testng-core/src/test/java/test/inheritance/testng234/ChildTest.java (+17/-0)
testng-core/src/test/java/test/inheritance/testng234/ParentTest.java (+11/-0)
testng-core/src/test/java/test/inheritance/testng234/PolymorphicFailureTest.java (+24/-0)
testng-core/src/test/java/test/inheritance/testng471/Class1.java (+27/-0)
testng-core/src/test/java/test/inheritance/testng471/Class2.java (+24/-0)
testng-core/src/test/java/test/inheritance/testng471/Class3.java (+28/-0)
testng-core/src/test/java/test/inheritance/testng471/SuperClass1.java (+9/-0)
testng-core/src/test/java/test/inheritance/testng471/SuperClass2.java (+9/-0)
testng-core/src/test/java/test/inheritance/testng471/TestNG471.java (+50/-0)
testng-core/src/test/java/test/inheritance/testng739/A.java (+16/-0)
testng-core/src/test/java/test/inheritance/testng739/B.java (+9/-0)
testng-core/src/test/java/test/inheritance/testng739/BaseClass.java (+9/-0)
testng-core/src/test/java/test/inheritance/testng739/TestNG739.java (+26/-0)
testng-core/src/test/java/test/inject/Github1298Test.java (+22/-0)
testng-core/src/test/java/test/inject/Github1649Test.java (+111/-0)
testng-core/src/test/java/test/inject/HappyPathNativeInjectionTestSample.java (+54/-0)
testng-core/src/test/java/test/inject/InjectAfterMethodWithTestResultSampleTest.java (+46/-0)
testng-core/src/test/java/test/inject/InjectAfterMethodWithTestResultTest.java (+17/-0)
testng-core/src/test/java/test/inject/InjectBeforeAndAfterMethodsWithTestResultSampleTest.java (+67/-0)
testng-core/src/test/java/test/inject/InjectBeforeMethodTest.java (+42/-0)
testng-core/src/test/java/test/inject/InjectDataProviderTest.java (+46/-0)
testng-core/src/test/java/test/inject/InjectTestContextTest.java (+30/-0)
testng-core/src/test/java/test/inject/InjectTestResultTest.java (+17/-0)
testng-core/src/test/java/test/inject/NativeInjectionTest.java (+92/-0)
testng-core/src/test/java/test/inject/NativeInjectionTestSamples.java (+61/-0)
testng-core/src/test/java/test/inject/NegativeNativeInjectionTestSample.java (+13/-0)
testng-core/src/test/java/test/inject/NoInjectionTest.java (+35/-0)
testng-core/src/test/java/test/inject/Sample.java (+17/-0)
testng-core/src/test/java/test/interleavedorder/BaseTestClass.java (+15/-0)
testng-core/src/test/java/test/interleavedorder/InterleavedInvocationTest.java (+45/-0)
testng-core/src/test/java/test/interleavedorder/TestChild1.java (+16/-0)
testng-core/src/test/java/test/interleavedorder/TestChild2.java (+16/-0)
testng-core/src/test/java/test/interleavedorder/testng-order.xml (+11/-0)
testng-core/src/test/java/test/invocationcount/DataProviderBase.java (+24/-0)
testng-core/src/test/java/test/invocationcount/DataProviderFalseFalseTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/DataProviderFalseTrueTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/DataProviderTrueFalseTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/DataProviderTrueTrueTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/FailedInvocationCount.java (+20/-0)
testng-core/src/test/java/test/invocationcount/FailedInvocationCount2.java (+29/-0)
testng-core/src/test/java/test/invocationcount/FailedInvocationCountTest.java (+44/-0)
testng-core/src/test/java/test/invocationcount/FirstAndLastTimeTest.java (+174/-0)
testng-core/src/test/java/test/invocationcount/InvocationBase.java (+8/-0)
testng-core/src/test/java/test/invocationcount/InvocationCountFalseFalseTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/InvocationCountFalseTrueTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/InvocationCountTrueFalseTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/InvocationCountTrueTrueTest.java (+12/-0)
testng-core/src/test/java/test/invocationcount/issue1719/DummyReporter.java (+53/-0)
testng-core/src/test/java/test/invocationcount/issue1719/IssueTest.java (+22/-0)
testng-core/src/test/java/test/invocationcount/issue1719/TestclassSample.java (+28/-0)
testng-core/src/test/java/test/invocationcount/issue426/SampleTestClassWithNoThreadPoolSizeDefined.java (+12/-0)
testng-core/src/test/java/test/invocationcount/issue426/SampleTestClassWithThreadPoolSizeDefined.java (+12/-0)
testng-core/src/test/java/test/invokedmethodlistener/A.java (+9/-0)
testng-core/src/test/java/test/invokedmethodlistener/B.java (+13/-0)
testng-core/src/test/java/test/invokedmethodlistener/Base.java (+54/-0)
testng-core/src/test/java/test/invokedmethodlistener/C.java (+13/-0)
testng-core/src/test/java/test/invokedmethodlistener/Failure.java (+7/-0)
testng-core/src/test/java/test/invokedmethodlistener/InvokedMethodListener.java (+24/-0)
testng-core/src/test/java/test/invokedmethodlistener/InvokedMethodListenerTest.java (+139/-0)
testng-core/src/test/java/test/invokedmethodlistener/InvokedMethodNameListener.java (+43/-0)
testng-core/src/test/java/test/invokedmethodlistener/MyListener.java (+57/-0)
testng-core/src/test/java/test/invokedmethodlistener/Sample.java (+32/-0)
testng-core/src/test/java/test/invokedmethodlistener/Sample2.java (+35/-0)
testng-core/src/test/java/test/invokedmethodlistener/Success.java (+7/-0)
testng-core/src/test/java/test/issue107/Issue107Test.java (+52/-0)
testng-core/src/test/java/test/issue107/MySuiteListener.java (+17/-0)
testng-core/src/test/java/test/issue107/TestTestngCounter.java (+26/-0)
testng-core/src/test/java/test/issue1430/TestFileToClass.java (+17/-0)
testng-core/src/test/java/test/issue565/Issue565Test.java (+40/-0)
testng-core/src/test/java/test/issue565/deadlock/ClassInGroupB.java (+13/-0)
testng-core/src/test/java/test/issue565/deadlock/GeneratedClassFactory.java (+23/-0)
testng-core/src/test/java/test/issue565/deadlock/GeneratedClassInGroupA.java (+33/-0)
testng-core/src/test/java/test/jarpackages/JarPackagesTest.java (+48/-0)
testng-core/src/test/java/test/jarpackages/testng.xml (+10/-0)
testng-core/src/test/java/test/jarpackages/tests/A.java (+9/-0)
testng-core/src/test/java/test/jarpackages/tests/B.java (+9/-0)
testng-core/src/test/java/test/jason/Main.java (+16/-0)
testng-core/src/test/java/test/jason/MainBase.java (+9/-0)
testng-core/src/test/java/test/jason/MainTest.java (+28/-0)
testng-core/src/test/java/test/junit/BaseTest.java (+40/-0)
testng-core/src/test/java/test/junit/JUnitConstructorTest.java (+35/-0)
testng-core/src/test/java/test/junit/JUnitEmptyTest.java (+17/-0)
testng-core/src/test/java/test/junit/MainSuite.java (+16/-0)
testng-core/src/test/java/test/junit/SetNameTest.java (+25/-0)
testng-core/src/test/java/test/junit/SetUpExceptionSampleTest.java (+16/-0)
testng-core/src/test/java/test/junit/SetUpExceptionTest.java (+19/-0)
testng-core/src/test/java/test/junit/Suite1.java (+17/-0)
testng-core/src/test/java/test/junit/Suite2.java (+14/-0)
testng-core/src/test/java/test/junit/Suite3.java (+12/-0)
testng-core/src/test/java/test/junit/Suite4.java (+13/-0)
testng-core/src/test/java/test/junit/TestAa.java (+8/-0)
testng-core/src/test/java/test/junit/TestAb.java (+8/-0)
testng-core/src/test/java/test/junit/TestAc.java (+8/-0)
testng-core/src/test/java/test/junit/TestAd.java (+8/-0)
testng-core/src/test/java/test/junit/TestAe.java (+8/-0)
testng-core/src/test/java/test/junit/TestAf.java (+8/-0)
testng-core/src/test/java/test/junit/testsetup/ATest.java (+11/-0)
testng-core/src/test/java/test/junit/testsetup/Data.java (+5/-0)
testng-core/src/test/java/test/junit/testsetup/LayerATestSuite.java (+15/-0)
testng-core/src/test/java/test/junit/testsetup/LoggingTestSuite.java (+21/-0)
testng-core/src/test/java/test/junit/testsetup/SmokeSuite.java (+27/-0)
testng-core/src/test/java/test/junit/testsetup/TestSuiteContainerWrapper.java (+40/-0)
testng-core/src/test/java/test/junit4/BeforeClassJUnit4Sample.java (+23/-0)
testng-core/src/test/java/test/junit4/ClassRuleJUnit4Sample.java (+27/-0)
testng-core/src/test/java/test/junit4/InheritedTest.java (+4/-0)
testng-core/src/test/java/test/junit4/JUnit4Child.java (+9/-0)
testng-core/src/test/java/test/junit4/JUnit4ParameterizedTest.java (+54/-0)
testng-core/src/test/java/test/junit4/JUnit4Sample1.java (+10/-0)
testng-core/src/test/java/test/junit4/JUnit4Sample2.java (+34/-0)
testng-core/src/test/java/test/junit4/JUnit4SampleSuite.java (+14/-0)
testng-core/src/test/java/test/junit4/listeners/Issue323JUnitInvocationListener.java (+21/-0)
testng-core/src/test/java/test/junit4/listeners/Issue323TestRunner.java (+21/-0)
testng-core/src/test/java/test/junit4/listeners/Issue323TestSample.java (+8/-0)
testng-core/src/test/java/test/junitreports/Issue1262TestSample.java (+18/-0)
testng-core/src/test/java/test/junitreports/JUnitReportsTest.java (+218/-0)
testng-core/src/test/java/test/junitreports/LocalJUnitReportReporter.java (+31/-0)
testng-core/src/test/java/test/junitreports/LocalJUnitXMLReporter.java (+45/-0)
testng-core/src/test/java/test/junitreports/SimpleTestSample.java (+17/-0)
testng-core/src/test/java/test/junitreports/TestClassContainerForGithubIssue1265.java (+47/-0)
testng-core/src/test/java/test/junitreports/TestSuiteHandler.java (+52/-0)
testng-core/src/test/java/test/junitreports/Testcase.java (+87/-0)
testng-core/src/test/java/test/junitreports/Testsuite.java (+96/-0)
testng-core/src/test/java/test/junitreports/TestsuiteRetriever.java (+5/-0)
testng-core/src/test/java/test/junitreports/TestsuiteXmlParser.java (+22/-0)
testng-core/src/test/java/test/junitreports/issue2124/TestClassSample.java (+16/-0)
testng-core/src/test/java/test/junitreports/issue993/SampleTestClass.java (+30/-0)
testng-core/src/test/java/test/justin/BaseTestCase.java (+49/-0)
testng-core/src/test/java/test/justin/MonthTest.java (+23/-0)
testng-core/src/test/java/test/listeners/AggregateSampleTest.java (+16/-0)
testng-core/src/test/java/test/listeners/AlterSuiteListenerTest.java (+141/-0)
testng-core/src/test/java/test/listeners/BaseAggregate.java (+6/-0)
testng-core/src/test/java/test/listeners/BaseListener.java (+31/-0)
testng-core/src/test/java/test/listeners/BaseWithListener.java (+12/-0)
testng-core/src/test/java/test/listeners/ClassListenerSample.java (+14/-0)
testng-core/src/test/java/test/listeners/ConfigurationListenerFailSampleTest.java (+15/-0)
testng-core/src/test/java/test/listeners/ConfigurationListenerSkipSampleTest.java (+18/-0)
testng-core/src/test/java/test/listeners/ConfigurationListenerSucceedSampleTest.java (+13/-0)
testng-core/src/test/java/test/listeners/ConfigurationListenerTest.java (+61/-0)
testng-core/src/test/java/test/listeners/Derived1.java (+8/-0)
testng-core/src/test/java/test/listeners/Derived2.java (+8/-0)
testng-core/src/test/java/test/listeners/Derived3.java (+11/-0)
testng-core/src/test/java/test/listeners/EndMillisShouldNotBeZeroTest.java (+47/-0)
testng-core/src/test/java/test/listeners/ExecutionListener1SampleTest.java (+8/-0)
testng-core/src/test/java/test/listeners/ExecutionListener2SampleTest.java (+10/-0)
testng-core/src/test/java/test/listeners/ExecutionListener3SampleTest.java (+8/-0)
testng-core/src/test/java/test/listeners/ExecutionListenerAndSuiteListener.java (+32/-0)
testng-core/src/test/java/test/listeners/ExecutionListenerAndSuiteListenerTest.java (+22/-0)
testng-core/src/test/java/test/listeners/ExecutionListenerTest.java (+64/-0)
testng-core/src/test/java/test/listeners/FailingSampleTest.java (+19/-0)
testng-core/src/test/java/test/listeners/GitHub911Listener.java (+51/-0)
testng-core/src/test/java/test/listeners/GitHub911Sample.java (+20/-0)
testng-core/src/test/java/test/listeners/InterceptorInvokeTwiceSimulateListener.java (+26/-0)
testng-core/src/test/java/test/listeners/L1.java (+3/-0)
testng-core/src/test/java/test/listeners/L2.java (+3/-0)
testng-core/src/test/java/test/listeners/L3.java (+11/-0)
testng-core/src/test/java/test/listeners/LListener.java (+17/-0)
testng-core/src/test/java/test/listeners/LSampleTest.java (+9/-0)
testng-core/src/test/java/test/listeners/ListenerAssert.java (+20/-0)
testng-core/src/test/java/test/listeners/ListenerInXmlTest.java (+19/-0)
testng-core/src/test/java/test/listeners/ListenerTest.java (+433/-0)
testng-core/src/test/java/test/listeners/ListenersTest.java (+155/-0)
testng-core/src/test/java/test/listeners/MultiListener.java (+153/-0)
testng-core/src/test/java/test/listeners/MyClassListener.java (+37/-0)
testng-core/src/test/java/test/listeners/MyInvokedMethodListener.java (+32/-0)
testng-core/src/test/java/test/listeners/MyMethodInterceptor.java (+21/-0)
testng-core/src/test/java/test/listeners/OrderedListenerSampleTest.java (+26/-0)
testng-core/src/test/java/test/listeners/ResultContextListener.java (+29/-0)
testng-core/src/test/java/test/listeners/ResultContextListenerSample.java (+11/-0)
testng-core/src/test/java/test/listeners/ResultContextTest.java (+17/-0)
testng-core/src/test/java/test/listeners/ResultEndMillisTest.java (+21/-0)
testng-core/src/test/java/test/listeners/ResultListener.java (+72/-0)
testng-core/src/test/java/test/listeners/SetStatusListener.java (+40/-0)
testng-core/src/test/java/test/listeners/SetStatusSample.java (+12/-0)
testng-core/src/test/java/test/listeners/SimpleListener.java (+21/-0)
testng-core/src/test/java/test/listeners/SimpleSample.java (+9/-0)
testng-core/src/test/java/test/listeners/SuiteAndConfigurationListenerTest.java (+50/-0)
testng-core/src/test/java/test/listeners/SuiteAndInvokedMethodListenerTest.java (+50/-0)
testng-core/src/test/java/test/listeners/SuiteListener.java (+19/-0)
testng-core/src/test/java/test/listeners/SuiteListener2.java (+73/-0)
testng-core/src/test/java/test/listeners/SuiteListenerSample.java (+11/-0)
testng-core/src/test/java/test/listeners/SuiteListenerSample2.java (+11/-0)
testng-core/src/test/java/test/listeners/TestAndClassListener.java (+52/-0)
testng-core/src/test/java/test/listeners/github1029/Issue1029InvokedMethodListener.java (+34/-0)
testng-core/src/test/java/test/listeners/github1029/Issue1029SampleTestClassWithDataDrivenMethod.java (+17/-0)
testng-core/src/test/java/test/listeners/github1029/Issue1029SampleTestClassWithFiveInstances.java (+26/-0)
testng-core/src/test/java/test/listeners/github1029/Issue1029SampleTestClassWithFiveMethods.java (+31/-0)
testng-core/src/test/java/test/listeners/github1029/Issue1029SampleTestClassWithOneMethod.java (+11/-0)
testng-core/src/test/java/test/listeners/github1130/ASample.java (+9/-0)
testng-core/src/test/java/test/listeners/github1130/BSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github1130/BaseSample.java (+6/-0)
testng-core/src/test/java/test/listeners/github1130/GitHub1130Test.java (+40/-0)
testng-core/src/test/java/test/listeners/github1130/MyListener.java (+47/-0)
testng-core/src/test/java/test/listeners/github1284/Listener1284.java (+31/-0)
testng-core/src/test/java/test/listeners/github1284/Sample1284.java (+35/-0)
testng-core/src/test/java/test/listeners/github1284/Sample1284B.java (+21/-0)
testng-core/src/test/java/test/listeners/github1284/TestListeners.java (+39/-0)
testng-core/src/test/java/test/listeners/github1296/GitHub1296Test.java (+29/-0)
testng-core/src/test/java/test/listeners/github1296/MyConfigurationListener.java (+28/-0)
testng-core/src/test/java/test/listeners/github1296/MyTest.java (+23/-0)
testng-core/src/test/java/test/listeners/github1319/TestResultInstanceCheckTest.java (+20/-0)
testng-core/src/test/java/test/listeners/github1319/TestSample.java (+86/-0)
testng-core/src/test/java/test/listeners/github1393/Listener1393.java (+14/-0)
testng-core/src/test/java/test/listeners/github1465/ExampleClassListener.java (+63/-0)
testng-core/src/test/java/test/listeners/github1465/ExampleClassSample.java (+31/-0)
testng-core/src/test/java/test/listeners/github1465/IssueTest.java (+58/-0)
testng-core/src/test/java/test/listeners/github1490/DataProviderInfoProvider.java (+23/-0)
testng-core/src/test/java/test/listeners/github1490/InstanceAwareLocalDataProviderListener.java (+35/-0)
testng-core/src/test/java/test/listeners/github1490/LocalDataProviderListener.java (+33/-0)
testng-core/src/test/java/test/listeners/github1602/IssueTest.java (+55/-0)
testng-core/src/test/java/test/listeners/github1602/ListenerForIssue1602.java (+53/-0)
testng-core/src/test/java/test/listeners/github1602/TestClassWithFailingConfigsSample.java (+20/-0)
testng-core/src/test/java/test/listeners/github1602/TestClassWithPassingConfigsSample.java (+16/-0)
testng-core/src/test/java/test/listeners/github1735/ExecutionListenerTest.java (+24/-0)
testng-core/src/test/java/test/listeners/github1735/LocalExecutionListener.java (+28/-0)
testng-core/src/test/java/test/listeners/github1735/TestClassSample.java (+10/-0)
testng-core/src/test/java/test/listeners/github1735/TestClassTwoSample.java (+10/-0)
testng-core/src/test/java/test/listeners/github2385/BaseTestCLass.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/FatherTestClass.java (+10/-0)
testng-core/src/test/java/test/listeners/github2385/ITestClassInterface.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/ITestInheritedInterface.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/ITestInterface.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/ITestInterfaceSame.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/ITestInterfaceSameInherit.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/IssueTest.java (+111/-0)
testng-core/src/test/java/test/listeners/github2385/SonTestClassSample.java (+8/-0)
testng-core/src/test/java/test/listeners/github2385/TestClassAndInterfaceInheritSample.java (+10/-0)
testng-core/src/test/java/test/listeners/github2385/TestClassListener.java (+19/-0)
testng-core/src/test/java/test/listeners/github2385/TestClassListenersInheritSample.java (+8/-0)
testng-core/src/test/java/test/listeners/github2385/TestInterfaceListenersInheritSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github2385/TestListener.java (+19/-0)
testng-core/src/test/java/test/listeners/github2385/TestMultiInheritSameAnnotationSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github2385/TestMultiInheritSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github2385/TestMultiLevelInheritSameAnnotationSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github2385/TestMultiLevelInheritSample.java (+9/-0)
testng-core/src/test/java/test/listeners/github2385/packages/ITestInterfaceWithoutImpl.java (+6/-0)
testng-core/src/test/java/test/listeners/github2385/packages/TestPackageListener.java (+19/-0)
testng-core/src/test/java/test/listeners/github2385/packages/TestWithoutImplSample.java (+8/-0)
testng-core/src/test/java/test/listeners/github2522/FirstTestSample.java (+17/-0)
testng-core/src/test/java/test/listeners/github2522/IssueTest.java (+88/-0)
testng-core/src/test/java/test/listeners/github2522/SecondTestSample.java (+14/-0)
testng-core/src/test/java/test/listeners/github2522/SkipTestListener.java (+14/-0)
testng-core/src/test/java/test/listeners/github2522/SkipTestSample.java (+19/-0)
testng-core/src/test/java/test/listeners/github2522/TestListener.java (+33/-0)
testng-core/src/test/java/test/listeners/github2558/CallHolder.java (+21/-0)
testng-core/src/test/java/test/listeners/github2558/ClassMethodListenersHolder.java (+68/-0)
testng-core/src/test/java/test/listeners/github2558/DataProviderListenersHolder.java (+39/-0)
testng-core/src/test/java/test/listeners/github2558/ExecutionListenersHolder.java (+32/-0)
testng-core/src/test/java/test/listeners/github2558/ReportersHolder.java (+27/-0)
testng-core/src/test/java/test/listeners/github2558/SuiteAlterListenersHolder.java (+24/-0)
testng-core/src/test/java/test/listeners/github2558/SuiteListenersHolder.java (+33/-0)
testng-core/src/test/java/test/listeners/github2558/TestClassSamples.java (+32/-0)
testng-core/src/test/java/test/listeners/github2558/TestListenersHolder.java (+33/-0)
testng-core/src/test/java/test/listeners/github551/ConfigListener.java (+20/-0)
testng-core/src/test/java/test/listeners/github551/Test551.java (+20/-0)
testng-core/src/test/java/test/listeners/github551/TestWithFailingConfig.java (+18/-0)
testng-core/src/test/java/test/listeners/github956/ListenerFor956.java (+38/-0)
testng-core/src/test/java/test/listeners/github956/TestClassContainer.java (+23/-0)
testng-core/src/test/java/test/listeners/issue1777/IssueTest.java (+59/-0)
testng-core/src/test/java/test/listeners/issue1777/MyListener.java (+110/-0)
testng-core/src/test/java/test/listeners/issue1777/TestClassSample.java (+30/-0)
testng-core/src/test/java/test/listeners/issue1952/TestclassSample.java (+12/-0)
testng-core/src/test/java/test/listeners/issue2043/SampleDataProvider.java (+16/-0)
testng-core/src/test/java/test/listeners/issue2043/SampleTestClass.java (+27/-0)
testng-core/src/test/java/test/listeners/issue2043/listeners/FailFastListener.java (+33/-0)
testng-core/src/test/java/test/listeners/issue2055/DynamicTestListener.java (+16/-0)
testng-core/src/test/java/test/listeners/issue2055/TestClassSample.java (+19/-0)
testng-core/src/test/java/test/listeners/issue2061/DynamicSuiteListener.java (+12/-0)
testng-core/src/test/java/test/listeners/issue2061/DynamicTestListener.java (+5/-0)
testng-core/src/test/java/test/listeners/issue2061/ListenerEnabledBaseClass.java (+15/-0)
testng-core/src/test/java/test/listeners/issue2061/TestClassSample.java (+9/-0)
testng-core/src/test/java/test/listeners/issue2220/IssueTest.java (+35/-0)
testng-core/src/test/java/test/listeners/issue2220/Listener1.java (+31/-0)
testng-core/src/test/java/test/listeners/issue2220/TestClass01.java (+21/-0)
testng-core/src/test/java/test/listeners/issue2220/TestClass02.java (+21/-0)
testng-core/src/test/java/test/listeners/issue2328/ConfigListener.java (+36/-0)
testng-core/src/test/java/test/listeners/issue2328/IssueTest.java (+25/-0)
testng-core/src/test/java/test/listeners/issue2328/SampleWithConfiguration.java (+21/-0)
testng-core/src/test/java/test/listeners/issue2456/IssueTest.java (+23/-0)
testng-core/src/test/java/test/listeners/issue2456/SimpleErrorSniffingListener.java (+32/-0)
testng-core/src/test/java/test/listeners/issue2456/TestClassSample.java (+22/-0)
testng-core/src/test/java/test/listeners/issue2638/DummyInvokedMethodListener.java (+30/-0)
testng-core/src/test/java/test/listeners/issue2638/TestClassASample.java (+9/-0)
testng-core/src/test/java/test/listeners/issue2638/TestClassBSample.java (+9/-0)
testng-core/src/test/java/test/listeners/issue2685/InterruptedTestSample.java (+16/-0)
testng-core/src/test/java/test/listeners/issue2685/SampleTestFailureListener.java (+22/-0)
testng-core/src/test/java/test/listeners/ordering/Constants.java (+70/-0)
testng-core/src/test/java/test/listeners/ordering/ListenerInvocationDefaultBehaviorTest.java (+477/-0)
testng-core/src/test/java/test/listeners/ordering/ListenerInvocationListenerInvocationDisabledBehaviorTest.java (+462/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassPoweredByFactoryWithFailedMethod.java (+21/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithDataDrivenMethodPassAndFailedIterations.java (+20/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithDataDrivenPassMethod.java (+15/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithFailedAndSkippedConfigAndSkippedTestMethod.java (+19/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithFailedConfigAndSkippedTestMethod.java (+15/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithFailedMethod.java (+12/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithFailedMethodHasRetryAnalyzer.java (+23/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithFailedMethodMultipleInvocations.java (+12/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithPassConfigAndMethod.java (+12/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithPassFailMethods.java (+18/-0)
testng-core/src/test/java/test/listeners/ordering/SimpleTestClassWithPassMethod.java (+9/-0)
testng-core/src/test/java/test/listeners/ordering/UniversalListener.java (+254/-0)
testng-core/src/test/java/test/mannotation/MAnnotation2SampleTest.java (+90/-0)
testng-core/src/test/java/test/mannotation/MAnnotationSampleTest.java (+130/-0)
testng-core/src/test/java/test/mannotation/MBase.java (+9/-0)
testng-core/src/test/java/test/mannotation/MBaseCapture.java (+16/-0)
testng-core/src/test/java/test/mannotation/MChildCaptureTest.java (+9/-0)
testng-core/src/test/java/test/mannotation/MTest1.java (+94/-0)
testng-core/src/test/java/test/mannotation/MTest2.java (+6/-0)
testng-core/src/test/java/test/mannotation/MTest3.java (+35/-0)
testng-core/src/test/java/test/mannotation/issue1976/IssueTest.java (+139/-0)
testng-core/src/test/java/test/methodinterceptors/FastTestsFirstInterceptor.java (+30/-0)
testng-core/src/test/java/test/methodinterceptors/FooTest.java (+15/-0)
testng-core/src/test/java/test/methodinterceptors/Issue392.java (+16/-0)
testng-core/src/test/java/test/methodinterceptors/Issue392Test.java (+39/-0)
testng-core/src/test/java/test/methodinterceptors/Issue521.java (+16/-0)
testng-core/src/test/java/test/methodinterceptors/Issue521Test.java (+39/-0)
testng-core/src/test/java/test/methodinterceptors/LockUpInterceptorSampleTest.java (+27/-0)
testng-core/src/test/java/test/methodinterceptors/MethodInterceptorTest.java (+116/-0)
testng-core/src/test/java/test/methodinterceptors/NullMethodInterceptor.java (+14/-0)
testng-core/src/test/java/test/methodinterceptors/RemoveAMethodInterceptor.java (+57/-0)
testng-core/src/test/java/test/methodinterceptors/issue1726/CustomInterceptorTest.java (+51/-0)
testng-core/src/test/java/test/methodinterceptors/issue1726/Priority.java (+11/-0)
testng-core/src/test/java/test/methodinterceptors/issue1726/PriorityInterceptor.java (+33/-0)
testng-core/src/test/java/test/methodinterceptors/issue1726/TestClassSample1.java (+21/-0)
testng-core/src/test/java/test/methodinterceptors/issue1726/TestClassSample2.java (+21/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/FirstInterceptor.java (+8/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/FooTest.java (+18/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/MethodNameFilterInterceptor.java (+36/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/MultipleInterceptorsTest.java (+38/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/SecondInterceptor.java (+8/-0)
testng-core/src/test/java/test/methodinterceptors/multipleinterceptors/ThirdInterceptor.java (+8/-0)
testng-core/src/test/java/test/methods/SampleMethod1.java (+47/-0)
testng-core/src/test/java/test/methods/VerifyMethod1.java (+23/-0)
testng-core/src/test/java/test/methodselection/DollarMethodSample.java (+21/-0)
testng-core/src/test/java/test/methodselection/MethodSelectionTest.java (+39/-0)
testng-core/src/test/java/test/methodselectors/AllTestsMethodSelector.java (+22/-0)
testng-core/src/test/java/test/methodselectors/ClassWithManyMethodsSample.java (+24/-0)
testng-core/src/test/java/test/methodselectors/CommandLineTest.java (+179/-0)
testng-core/src/test/java/test/methodselectors/MethodSelectorInSuiteTest.java (+80/-0)
testng-core/src/test/java/test/methodselectors/MethodSelectorTest.java (+100/-0)
testng-core/src/test/java/test/methodselectors/NoTest.java (+3/-0)
testng-core/src/test/java/test/methodselectors/NoTest1MethodSelector.java (+24/-0)
testng-core/src/test/java/test/methodselectors/NoTestSelector.java (+18/-0)
testng-core/src/test/java/test/methodselectors/PrioritySampleTest.java (+13/-0)
testng-core/src/test/java/test/methodselectors/PriorityTest.java (+49/-0)
testng-core/src/test/java/test/methodselectors/SampleTest.java (+15/-0)
testng-core/src/test/java/test/methodselectors/ScriptNegativeTest.java (+44/-0)
testng-core/src/test/java/test/methodselectors/ScriptTest.java (+30/-0)
testng-core/src/test/java/test/methodselectors/Test2MethodSelector.java (+28/-0)
testng-core/src/test/java/test/methodselectors/issue1985/FilteringMethodSelector.java (+34/-0)
testng-core/src/test/java/test/methodselectors/issue1985/TestClassSample.java (+18/-0)
testng-core/src/test/java/test/mixed/JUnit3Test1.java (+15/-0)
testng-core/src/test/java/test/mixed/JUnit4Test1.java (+13/-0)
testng-core/src/test/java/test/mixed/MixedTest.java (+72/-0)
testng-core/src/test/java/test/mixed/TestNGGroups.java (+12/-0)
testng-core/src/test/java/test/mixed/TestNGTest1.java (+13/-0)
testng-core/src/test/java/test/morten/SampleTest.java (+35/-0)
testng-core/src/test/java/test/morten/SampleTestFactory.java (+14/-0)
testng-core/src/test/java/test/multiple/Test1.java (+21/-0)
testng-core/src/test/java/test/multiple/TestMultiple.java (+23/-0)
testng-core/src/test/java/test/multiple/ThisFactory.java (+23/-0)
testng-core/src/test/java/test/multiplelisteners/SimpleReporter.java (+29/-0)
testng-core/src/test/java/test/multiplelisteners/Test1.java (+10/-0)
testng-core/src/test/java/test/multiplelisteners/TestMaker.java (+46/-0)
testng-core/src/test/java/test/name/BlankNameSample.java (+18/-0)
testng-core/src/test/java/test/name/ITestSample.java (+45/-0)
testng-core/src/test/java/test/name/NameSample.java (+13/-0)
testng-core/src/test/java/test/name/NameTest.java (+196/-0)
testng-core/src/test/java/test/name/NoNameSample.java (+12/-0)
testng-core/src/test/java/test/name/SimpleITestSample.java (+18/-0)
testng-core/src/test/java/test/name/TestOnClassListener.java (+33/-0)
testng-core/src/test/java/test/name/TestOnClassSample.java (+10/-0)
testng-core/src/test/java/test/name/github1046/LocalTestNameGatherer.java (+35/-0)
testng-core/src/test/java/test/name/github1046/TestClassSample.java (+51/-0)
testng-core/src/test/java/test/name/github1046/TestCustomNamesForTests.java (+30/-0)
testng-core/src/test/java/test/nested/GarfTest.java (+17/-0)
testng-core/src/test/java/test/nested/foo/AccountTypeEnum.java (+6/-0)
testng-core/src/test/java/test/nested2/TmpA.java (+25/-0)
testng-core/src/test/java/test/objectfactory/BadMethodObjectFactoryFactory.java (+11/-0)
testng-core/src/test/java/test/objectfactory/ClassObjectFactory.java (+16/-0)
testng-core/src/test/java/test/objectfactory/ClassObjectFactorySampleTest.java (+19/-0)
testng-core/src/test/java/test/objectfactory/CombinedTestAndObjectFactorySample.java (+37/-0)
testng-core/src/test/java/test/objectfactory/CombinedTestAndObjectFactoryTest.java (+26/-0)
testng-core/src/test/java/test/objectfactory/ContextAwareObjectFactoryFactory.java (+18/-0)
testng-core/src/test/java/test/objectfactory/CustomFactoryTest.java (+68/-0)
testng-core/src/test/java/test/objectfactory/ISetValue.java (+5/-0)
testng-core/src/test/java/test/objectfactory/LoggingObjectFactory.java (+15/-0)
testng-core/src/test/java/test/objectfactory/MyObjectFactoryFactory.java (+12/-0)
testng-core/src/test/java/test/objectfactory/ObjectFactory2Test.java (+39/-0)
testng-core/src/test/java/test/objectfactory/ObjectFactoryTest.java (+78/-0)
testng-core/src/test/java/test/objectfactory/SimpleSample.java (+9/-0)
testng-core/src/test/java/test/objectfactory/github1131/EmptyConstructorSample.java (+23/-0)
testng-core/src/test/java/test/objectfactory/github1131/IntConstructorSample.java (+25/-0)
testng-core/src/test/java/test/objectfactory/github1131/MyObjectFactory.java (+24/-0)
testng-core/src/test/java/test/objectfactory/github1131/StringConstructorSample.java (+25/-0)
testng-core/src/test/java/test/objectfactory/github1827/GitHub1827Sample.java (+19/-0)
testng-core/src/test/java/test/objectfactory/issue2676/LocalSuiteAlteringListener.java (+13/-0)
testng-core/src/test/java/test/objectfactory/issue2676/LoggingObjectFactorySample.java (+16/-0)
testng-core/src/test/java/test/objectfactory/issue2676/TestClassSample.java (+9/-0)
testng-core/src/test/java/test/order/OrderTest.java (+34/-0)
testng-core/src/test/java/test/order/github288/Actual1Sample.java (+23/-0)
testng-core/src/test/java/test/order/github288/Actual2Sample.java (+9/-0)
testng-core/src/test/java/test/order/github288/BaseSample.java (+13/-0)
testng-core/src/test/java/test/override/OverrideSampleTest.java (+14/-0)
testng-core/src/test/java/test/override/OverrideTest.java (+73/-0)
testng-core/src/test/java/test/parameters/BeforeWithParameterSample.java (+27/-0)
testng-core/src/test/java/test/parameters/EnumParameterSample.java (+19/-0)
testng-core/src/test/java/test/parameters/InheritFromSuiteChild1.java (+22/-0)
testng-core/src/test/java/test/parameters/InheritFromSuiteChild2.java (+21/-0)
testng-core/src/test/java/test/parameters/InheritFromSuiteChild3.java (+20/-0)
testng-core/src/test/java/test/parameters/Issue1061Sample.java (+36/-0)
testng-core/src/test/java/test/parameters/Issue1554TestClassSample.java (+25/-0)
testng-core/src/test/java/test/parameters/OptionalParameterTest.java (+14/-0)
testng-core/src/test/java/test/parameters/Override1Sample.java (+23/-0)
testng-core/src/test/java/test/parameters/ParamInheritanceTest.java (+68/-0)
testng-core/src/test/java/test/parameters/ParameterInjectAndOptionSample.java (+25/-0)
testng-core/src/test/java/test/parameters/ParameterInjectAndOptionTest.java (+20/-0)
testng-core/src/test/java/test/parameters/ParameterOverrideTest.java (+71/-0)
testng-core/src/test/java/test/parameters/ParameterSample.java (+26/-0)
testng-core/src/test/java/test/parameters/ParameterTest.java (+134/-0)
testng-core/src/test/java/test/parameters/ParametersPackageLevelMethodTest.java (+21/-0)
testng-core/src/test/java/test/parameters/Sample.java (+11/-0)
testng-core/src/test/java/test/parameters/Shadow1Sample.java (+14/-0)
testng-core/src/test/java/test/parameters/Shadow2Sample.java (+14/-0)
testng-core/src/test/java/test/parameters/ShadowTest.java (+39/-0)
testng-core/src/test/java/test/parameters/issue2238/ExampleTestCase.java (+15/-0)
testng-core/src/test/java/test/parameters/issue2238/IssueTest.java (+60/-0)
testng-core/src/test/java/test/pholser/Captor.java (+35/-0)
testng-core/src/test/java/test/pholser/Demo.java (+62/-0)
testng-core/src/test/java/test/pholser/Saboteur.java (+37/-0)
testng-core/src/test/java/test/pkg/PackageTest.java (+93/-0)
testng-core/src/test/java/test/pkg2/Test1.java (+12/-0)
testng-core/src/test/java/test/pkg2/Test2.java (+11/-0)
testng-core/src/test/java/test/pkg2/Test3.java (+9/-0)
testng-core/src/test/java/test/preserveorder/A.java (+15/-0)
testng-core/src/test/java/test/preserveorder/B.java (+15/-0)
testng-core/src/test/java/test/preserveorder/C.java (+15/-0)
testng-core/src/test/java/test/preserveorder/Chuck3Sample.java (+19/-0)
testng-core/src/test/java/test/preserveorder/Chuck4Sample.java (+19/-0)
testng-core/src/test/java/test/preserveorder/ClassSample.java (+26/-0)
testng-core/src/test/java/test/preserveorder/ClassSampleFactory.java (+15/-0)
testng-core/src/test/java/test/preserveorder/Issue1122Sample.java (+15/-0)
testng-core/src/test/java/test/preserveorder/PreserveOrderTest.java (+124/-0)
testng-core/src/test/java/test/priority/PriorityTest.java (+116/-0)
testng-core/src/test/java/test/priority/SampleTest01.java (+42/-0)
testng-core/src/test/java/test/priority/SampleTest02.java (+43/-0)
testng-core/src/test/java/test/priority/SampleTestBase.java (+12/-0)
testng-core/src/test/java/test/priority/WithPriorityAndDependsMethodsSample.java (+15/-0)
testng-core/src/test/java/test/priority/WithPrioritySample2Test.java (+11/-0)
testng-core/src/test/java/test/priority/WithPrioritySampleTest.java (+11/-0)
testng-core/src/test/java/test/priority/WithoutPrioritySampleTest.java (+12/-0)
testng-core/src/test/java/test/priority/issue2075/InterruptTest.java (+15/-0)
testng-core/src/test/java/test/priority/issue2137/IssueTest.java (+48/-0)
testng-core/src/test/java/test/priority/issue2137/OrderListener.java (+20/-0)
testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest.java (+286/-0)
testng-core/src/test/java/test/priority/parallel/EfficientPriorityParallelizationTest2.java (+294/-0)
testng-core/src/test/java/test/priority/parallel/HighPriorityTestSample.java (+37/-0)
testng-core/src/test/java/test/priority/parallel/LowPriorityTestSample.java (+84/-0)
testng-core/src/test/java/test/privatemethod/PrivateMethodTest.java (+22/-0)
testng-core/src/test/java/test/reflect/ReflectionRecipesTest.java (+361/-0)
testng-core/src/test/java/test/reflect/TestContextJustForTesting.java (+122/-0)
testng-core/src/test/java/test/reflect/TestMethodMatcher.java (+251/-0)
testng-core/src/test/java/test/reflect/TestResultJustForTesting.java (+150/-0)
testng-core/src/test/java/test/reflect/XmlTestJustForTesting.java (+10/-0)
testng-core/src/test/java/test/regression/BeforeTestFailingTest.java (+22/-0)
testng-core/src/test/java/test/regression/MyTestngTest.java (+16/-0)
testng-core/src/test/java/test/regression/MyTestngTest2.java (+20/-0)
testng-core/src/test/java/test/regression/groupsordering/A.java (+11/-0)
testng-core/src/test/java/test/regression/groupsordering/B.java (+11/-0)
testng-core/src/test/java/test/regression/groupsordering/Base.java (+25/-0)
testng-core/src/test/java/test/regression/groupsordering/testng.xml (+22/-0)
testng-core/src/test/java/test/reports/EmailableReporterTest.java (+155/-0)
testng-core/src/test/java/test/reports/FailedReporterTest.java (+215/-0)
testng-core/src/test/java/test/reports/GitHub1148Sample.java (+18/-0)
testng-core/src/test/java/test/reports/GitHub148Sample.java (+19/-0)
testng-core/src/test/java/test/reports/GitHub447Listener.java (+39/-0)
testng-core/src/test/java/test/reports/GitHub447Sample.java (+33/-0)
testng-core/src/test/java/test/reports/Issue1566Sample.java (+14/-0)
testng-core/src/test/java/test/reports/Issue1659Sample.java (+14/-0)
testng-core/src/test/java/test/reports/ListenerReporterSample.java (+25/-0)
testng-core/src/test/java/test/reports/ReportTest.java (+308/-0)
testng-core/src/test/java/test/reports/ReporterLogFailureSample.java (+15/-0)
testng-core/src/test/java/test/reports/ReporterLogListener.java (+27/-0)
testng-core/src/test/java/test/reports/ReporterLogSkippedSample.java (+20/-0)
testng-core/src/test/java/test/reports/ReporterLogSuccessSample.java (+14/-0)
testng-core/src/test/java/test/reports/ReporterLogTest.java (+39/-0)
testng-core/src/test/java/test/reports/ReporterSample.java (+19/-0)
testng-core/src/test/java/test/reports/SampleA.java (+9/-0)
testng-core/src/test/java/test/reports/SampleB.java (+9/-0)
testng-core/src/test/java/test/reports/SimpleFailedSample.java (+11/-0)
testng-core/src/test/java/test/reports/UniqueReporterInjectionSample1.java (+13/-0)
testng-core/src/test/java/test/reports/UniqueReporterInjectionSample2.java (+13/-0)
testng-core/src/test/java/test/reports/UniqueReporterInjectionTest.java (+37/-0)
testng-core/src/test/java/test/reports/XmlReporterTest.java (+79/-0)
testng-core/src/test/java/test/reports/issue1756/CustomTestNGReporter.java (+41/-0)
testng-core/src/test/java/test/reports/issue1756/SampleTestClass.java (+33/-0)
testng-core/src/test/java/test/reports/issue2069/Dummy1.java (+13/-0)
testng-core/src/test/java/test/reports/issue2069/Dummy2.java (+8/-0)
testng-core/src/test/java/test/reports/issue2069/Dummy3.java (+18/-0)
testng-core/src/test/java/test/reports/issue2069/Dummy4.java (+9/-0)
testng-core/src/test/java/test/reports/issue2069/IssueTest.java (+44/-0)
testng-core/src/test/java/test/reports/issue2171/MyExampleListener.java (+24/-0)
testng-core/src/test/java/test/reports/issue2171/TestClassExample.java (+16/-0)
testng-core/src/test/java/test/reports/issue2445/FailureTestFactory.java (+13/-0)
testng-core/src/test/java/test/reports/issue2445/Test1.java (+11/-0)
testng-core/src/test/java/test/reports/issue2445/Test2.java (+11/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassFailsAtBeforeGroupsWithBeforeGroupsSuiteTestSample.java (+32/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassFailsAtBeforeSuiteWithBeforeGroupsSuiteTestSample.java (+32/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassFailsAtBeforeTestWithBeforeGroupsSuiteTestSample.java (+32/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassWithBeforeGroupsSample.java (+16/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassWithBeforeSuiteSample.java (+16/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassWithBeforeTestSample.java (+16/-0)
testng-core/src/test/java/test/reports/issue2611/TestClassWithJustTestMethodsSample.java (+9/-0)
testng-core/src/test/java/test/retryAnalyzer/EventualSuccess.java (+16/-0)
testng-core/src/test/java/test/retryAnalyzer/ExitCodeTest.java (+47/-0)
testng-core/src/test/java/test/retryAnalyzer/FactoryTest.java (+32/-0)
testng-core/src/test/java/test/retryAnalyzer/ImmediateSuccess.java (+8/-0)
testng-core/src/test/java/test/retryAnalyzer/InvocationCountTest.java (+179/-0)
testng-core/src/test/java/test/retryAnalyzer/Issue217TestClassSample.java (+20/-0)
testng-core/src/test/java/test/retryAnalyzer/Issue217TestClassSampleWithOneDataProvider.java (+17/-0)
testng-core/src/test/java/test/retryAnalyzer/MyFactory.java (+16/-0)
testng-core/src/test/java/test/retryAnalyzer/MyRetry.java (+17/-0)
testng-core/src/test/java/test/retryAnalyzer/PersistentFailure.java (+11/-0)
testng-core/src/test/java/test/retryAnalyzer/RetryAnalyzerTest.java (+306/-0)
testng-core/src/test/java/test/retryAnalyzer/TestResultPruner.java (+27/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/ComplexDataProviderWithObjectAndArraySample.java (+27/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/DataProviderRetryAnalyzer.java (+31/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/DataProviderWithRetryAttemptsFailure.java (+26/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/DataProviderWithSingleParam.java (+43/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/DataProviderWithStringArraySample.java (+25/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/RetryAnalyzerWithComplexDataProviderTest.java (+77/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/RetryAnalyzerWithDataProviderTest.java (+27/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/RetryAnalyzerWithoutDataProvider.java (+15/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/RetryCountTest.java (+19/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/issue2163/RetryAnalyzer.java (+19/-0)
testng-core/src/test/java/test/retryAnalyzer/dataprovider/issue2163/TestClassPoweredByDataProviderSample.java (+26/-0)
testng-core/src/test/java/test/retryAnalyzer/github1519/MyAnalyzer.java (+14/-0)
testng-core/src/test/java/test/retryAnalyzer/github1519/MyListener.java (+15/-0)
testng-core/src/test/java/test/retryAnalyzer/github1519/TestClassSample.java (+16/-0)
testng-core/src/test/java/test/retryAnalyzer/github1600/Github1600Analyzer.java (+25/-0)
testng-core/src/test/java/test/retryAnalyzer/github1600/Github1600Listener.java (+37/-0)
testng-core/src/test/java/test/retryAnalyzer/github1600/Github1600TestSample.java (+14/-0)
testng-core/src/test/java/test/retryAnalyzer/github1706/DataDrivenSample.java (+24/-0)
testng-core/src/test/java/test/retryAnalyzer/github1706/LocalRetry.java (+11/-0)
testng-core/src/test/java/test/retryAnalyzer/github1706/NativeInjectionSample.java (+18/-0)
testng-core/src/test/java/test/retryAnalyzer/github1706/ParameterInjectionSample.java (+19/-0)
testng-core/src/test/java/test/retryAnalyzer/github2669/FailedRetry.java (+21/-0)
testng-core/src/test/java/test/retryAnalyzer/github2669/RetryTestSample.java (+17/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1241/GitHub1241Sample.java (+14/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1241/MyRetry.java (+19/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1538/RetryForIssue1538.java (+11/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1538/TestClassSampleWithTestMethodDependencies.java (+18/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1697/DatadrivenSample.java (+22/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1697/LocalReporter.java (+53/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1697/RetryForDataDrivenTest.java (+16/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1697/SampleTestclass.java (+23/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1697/SimpleRetrier.java (+11/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1946/RetryAnalyzer.java (+38/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1946/TestclassBase.java (+23/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1946/TestclassSample1.java (+16/-0)
testng-core/src/test/java/test/retryAnalyzer/issue1946/TestclassSample2.java (+21/-0)
testng-core/src/test/java/test/retryAnalyzer/issue2148/ExceptionAfterMethodTestSample.java (+35/-0)
testng-core/src/test/java/test/retryAnalyzer/issue2148/IssueTest.java (+28/-0)
testng-core/src/test/java/test/retryAnalyzer/issue2148/RetryAnalyzer.java (+19/-0)
testng-core/src/test/java/test/retryAnalyzer/issue2684/RerunAnalyzer.java (+20/-0)
testng-core/src/test/java/test/retryAnalyzer/issue2684/SampleTestClassWithGroupConfigs.java (+54/-0)
testng-core/src/test/java/test/sample/AfterClassCalledAtEnd.java (+49/-0)
testng-core/src/test/java/test/sample/AllJUnitTests.java (+18/-0)
testng-core/src/test/java/test/sample/BaseAfterClassCalledAtEnd.java (+12/-0)
testng-core/src/test/java/test/sample/BaseSample1.java (+10/-0)
testng-core/src/test/java/test/sample/BaseSampleInheritance.java (+44/-0)
testng-core/src/test/java/test/sample/Basic1.java (+26/-0)
testng-core/src/test/java/test/sample/Basic2.java (+30/-0)
testng-core/src/test/java/test/sample/ConverterSample3.java (+83/-0)
testng-core/src/test/java/test/sample/InvocationCountTest.java (+75/-0)
testng-core/src/test/java/test/sample/JUnitSample1.java (+36/-0)
testng-core/src/test/java/test/sample/JUnitSample2.java (+30/-0)
testng-core/src/test/java/test/sample/JUnitSample3.java (+23/-0)
testng-core/src/test/java/test/sample/JUnitSample4.java (+35/-0)
testng-core/src/test/java/test/sample/PartialGroupTest.java (+43/-0)
testng-core/src/test/java/test/sample/PartialGroupVerification.java (+16/-0)
testng-core/src/test/java/test/sample/README.txt (+2/-0)
testng-core/src/test/java/test/sample/Sample1.java (+64/-0)
testng-core/src/test/java/test/sample/Sample2.java (+26/-0)
testng-core/src/test/java/test/sample/Scope.java (+20/-0)
testng-core/src/test/java/test/sample/SetUpWithParameterTest.java (+18/-0)
testng-core/src/test/java/test/sanitycheck/CheckSuiteNamesTest.java (+80/-0)
testng-core/src/test/java/test/sanitycheck/CheckTestNamesTest.java (+84/-0)
testng-core/src/test/java/test/sanitycheck/SampleTest1.java (+8/-0)
testng-core/src/test/java/test/sanitycheck/SampleTest2.java (+8/-0)
testng-core/src/test/java/test/sanitycheck/SampleTest3.java (+8/-0)
testng-core/src/test/java/test/serviceloader/MyConfigurationListener.java (+16/-0)
testng-core/src/test/java/test/serviceloader/ServiceLoaderSampleTest.java (+6/-4)
testng-core/src/test/java/test/serviceloader/ServiceLoaderTest.java (+91/-0)
testng-core/src/test/java/test/serviceloader/TmpSuiteListener.java (+12/-0)
testng-core/src/test/java/test/simple/IncludedExcludedSampleTest.java (+46/-0)
testng-core/src/test/java/test/simple/IncludedExcludedTest.java (+105/-0)
testng-core/src/test/java/test/simple/SimpleSample.java (+9/-0)
testng-core/src/test/java/test/skip/ReasonForSkipTest.java (+141/-0)
testng-core/src/test/java/test/skip/ReasonReporter.java (+51/-0)
testng-core/src/test/java/test/skip/TestClassWithFailedConfig.java (+15/-0)
testng-core/src/test/java/test/skip/TestClassWithFailedConfigInParentClass.java (+9/-0)
testng-core/src/test/java/test/skip/TestClassWithFailedMethod.java (+14/-0)
testng-core/src/test/java/test/skip/TestClassWithFailedMethodInParentClass.java (+9/-0)
testng-core/src/test/java/test/skip/TestClassWithGroupFailures.java (+14/-0)
testng-core/src/test/java/test/skip/TestClassWithMultipleFailures.java (+19/-0)
testng-core/src/test/java/test/skip/TestClassWithMultipleGroupFailures.java (+21/-0)
testng-core/src/test/java/test/skip/TestClassWithOnlyGlobalConfig.java (+10/-0)
testng-core/src/test/java/test/skip/TestClassWithOnlyTestMethods.java (+8/-0)
testng-core/src/test/java/test/skip/github1632/AfterListenerSkipSample.java (+27/-0)
testng-core/src/test/java/test/skip/github1632/BeforeListenerSkipSample.java (+29/-0)
testng-core/src/test/java/test/skip/github1632/IssueTest.java (+54/-0)
testng-core/src/test/java/test/skip/github1632/ListenerMarksMethodAsSkippedSample.java (+26/-0)
testng-core/src/test/java/test/skip/github1632/NoConfigAfterListenerSample.java (+23/-0)
testng-core/src/test/java/test/skip/github1632/NoConfigBeforeListenerSample.java (+25/-0)
testng-core/src/test/java/test/skip/github1632/SkipMonitoringListener.java (+35/-0)
testng-core/src/test/java/test/skip/github1632/SkipTest.java (+11/-0)
testng-core/src/test/java/test/skip/github1632/TestClassSample.java (+24/-0)
testng-core/src/test/java/test/skip/github1967/TestClassSample.java (+23/-0)
testng-core/src/test/java/test/skip/issue2674/ConfigAwareTestNG.java (+12/-0)
testng-core/src/test/java/test/skip/issue2674/TestClassSample.java (+22/-0)
testng-core/src/test/java/test/skipex/ConfigurationSkippedExceptionTest.java (+16/-0)
testng-core/src/test/java/test/skipex/SkipAndExpectedSampleTest.java (+11/-0)
testng-core/src/test/java/test/skipex/SkipAndExpectedTest.java (+23/-0)
testng-core/src/test/java/test/skipex/SkippedExceptionTest.java (+47/-0)
testng-core/src/test/java/test/skipex/TestSkippedExceptionTest.java (+23/-0)
testng-core/src/test/java/test/suites/github1533/Github1533Test.java (+46/-0)
testng-core/src/test/java/test/suites/github1533/SampleTestClassSample.java (+8/-0)
testng-core/src/test/java/test/suites/github1533/SuiteCounter.java (+29/-0)
testng-core/src/test/java/test/suites/github1850/DuplicateChildSuitesInitializationTest.java (+60/-0)
testng-core/src/test/java/test/suites/github1874/IssueTest.java (+27/-0)
testng-core/src/test/java/test/suites/github1874/TestClassSample.java (+11/-0)
testng-core/src/test/java/test/superclass/Base1.java (+16/-0)
testng-core/src/test/java/test/superclass/Base2.java (+16/-0)
testng-core/src/test/java/test/superclass/BaseSampleTest3.java (+10/-0)
testng-core/src/test/java/test/superclass/Child1Test.java (+12/-0)
testng-core/src/test/java/test/superclass/Child2Test.java (+12/-0)
testng-core/src/test/java/test/superclass/ChildSampleTest3.java (+16/-0)
testng-core/src/test/java/test/superclass/MainTest.java (+27/-0)
testng-core/src/test/java/test/superclass/Test3.java (+19/-0)
testng-core/src/test/java/test/test111/AbstractTest.java (+17/-0)
testng-core/src/test/java/test/test111/Test1.java (+11/-0)
testng-core/src/test/java/test/testnames/TestNamesFeature.java (+12/-0)
testng-core/src/test/java/test/testnames/TestNamesTest.java (+26/-0)
testng-core/src/test/java/test/testng106/FailingSuiteFixture.java (+13/-0)
testng-core/src/test/java/test/testng106/Test1.java (+12/-0)
testng-core/src/test/java/test/testng106/Test2.java (+18/-0)
testng-core/src/test/java/test/testng106/TestNG106.java (+26/-0)
testng-core/src/test/java/test/testng109/SkippedTestWithExpectedExceptionTest.java (+22/-0)
testng-core/src/test/java/test/testng1231/ListenerOrderTestSample.java (+8/-0)
testng-core/src/test/java/test/testng1231/TestExecutionListenerInvocationOrder.java (+62/-0)
testng-core/src/test/java/test/testng1232/ListenerTemplate.java (+72/-0)
testng-core/src/test/java/test/testng1232/TestClassContainer.java (+19/-0)
testng-core/src/test/java/test/testng1232/TestListenerFor1232.java (+71/-0)
testng-core/src/test/java/test/testng1232/TestListenerInstances.java (+55/-0)
testng-core/src/test/java/test/testng1396/ParallelByInstancesInterceptorTest.java (+107/-0)
testng-core/src/test/java/test/testng1396/SampleFor1396.java (+60/-0)
testng-core/src/test/java/test/testng1396/TestNG1396HighPriority.java (+12/-0)
testng-core/src/test/java/test/testng173/ClassA.java (+12/-0)
testng-core/src/test/java/test/testng173/ClassB.java (+14/-0)
testng-core/src/test/java/test/testng173/TestNG173Test.java (+66/-0)
testng-core/src/test/java/test/testng173/anotherpackage/ClassC.java (+15/-0)
testng-core/src/test/java/test/testng195/AfterMethodSampleTest.java (+26/-0)
testng-core/src/test/java/test/testng195/AfterMethodTest.java (+16/-0)
testng-core/src/test/java/test/testng249/B.java (+9/-0)
testng-core/src/test/java/test/testng249/Base.java (+8/-0)
testng-core/src/test/java/test/testng249/VerifyTest.java (+39/-0)
testng-core/src/test/java/test/testng285/BugBase.java (+24/-0)
testng-core/src/test/java/test/testng285/Derived.java (+16/-0)
testng-core/src/test/java/test/testng285/TestNG285Test.java (+20/-0)
testng-core/src/test/java/test/testng317/ClassA.java (+59/-0)
testng-core/src/test/java/test/testng317/ClassB.java (+44/-0)
testng-core/src/test/java/test/testng317/VerifyTest.java (+26/-0)
testng-core/src/test/java/test/testng37/NullParameterTest.java (+15/-0)
testng-core/src/test/java/test/testng37/testng-37.xml (+11/-0)
testng-core/src/test/java/test/testng387/FailedDPTest.java (+45/-0)
testng-core/src/test/java/test/testng387/TestNG387.java (+27/-0)
testng-core/src/test/java/test/testng56/ParallelTest.java (+43/-0)
testng-core/src/test/java/test/testng56/testng-56.xml (+9/-0)
testng-core/src/test/java/test/testng59/Test1.java (+20/-0)
testng-core/src/test/java/test/testng59/Test2.java (+20/-0)
testng-core/src/test/java/test/testng59/testng-59.xml (+18/-0)
testng-core/src/test/java/test/testng674/BeforeClassSkipExceptionTest.java (+106/-0)
testng-core/src/test/java/test/testng674/ReportingListenerFor674.java (+28/-0)
testng-core/src/test/java/test/testng674/TestClassSampleContainer.java (+113/-0)
testng-core/src/test/java/test/testng93/SingleTestTest.java (+22/-0)
testng-core/src/test/java/test/testng93/testng-93.xml (+18/-0)
testng-core/src/test/java/test/thread/B.java (+19/-0)
testng-core/src/test/java/test/thread/BaseSequentialSample.java (+24/-0)
testng-core/src/test/java/test/thread/BaseThreadTest.java (+81/-0)
testng-core/src/test/java/test/thread/DataProviderThreadPoolSizeSampleTest.java (+70/-0)
testng-core/src/test/java/test/thread/DataProviderThreadPoolSizeTest.java (+34/-0)
testng-core/src/test/java/test/thread/FactorySampleTest.java (+15/-0)
testng-core/src/test/java/test/thread/FactoryTest.java (+46/-0)
testng-core/src/test/java/test/thread/Github1636Sample.java (+27/-0)
testng-core/src/test/java/test/thread/Helper.java (+16/-0)
testng-core/src/test/java/test/thread/MultiThreadedDependentSampleTest.java (+122/-0)
testng-core/src/test/java/test/thread/MultiThreadedDependentTest.java (+81/-0)
testng-core/src/test/java/test/thread/ParallelSuiteTest.java (+199/-0)
testng-core/src/test/java/test/thread/ParallelTestTest.java (+178/-0)
testng-core/src/test/java/test/thread/ParallelWithFactorySampleTest.java (+33/-0)
testng-core/src/test/java/test/thread/PriorityInSingleThreadTest.java (+32/-0)
testng-core/src/test/java/test/thread/Sample1.java (+11/-0)
testng-core/src/test/java/test/thread/Sample2.java (+18/-0)
testng-core/src/test/java/test/thread/SequentialSample2Test.java (+19/-0)
testng-core/src/test/java/test/thread/SequentialSample3Test.java (+19/-0)
testng-core/src/test/java/test/thread/SequentialSampleTest.java (+19/-0)
testng-core/src/test/java/test/thread/SequentialTest.java (+99/-0)
testng-core/src/test/java/test/thread/SingleThreadForParallelMethodsTest.java (+23/-0)
testng-core/src/test/java/test/thread/SingleThreadedSample2Test.java (+22/-0)
testng-core/src/test/java/test/thread/SingleThreadedSample3Test.java (+22/-0)
testng-core/src/test/java/test/thread/SingleThreadedSampleTest.java (+22/-0)
testng-core/src/test/java/test/thread/SuiteThreadCountTest.java (+33/-0)
testng-core/src/test/java/test/thread/Test1Test.java (+18/-0)
testng-core/src/test/java/test/thread/Test2Test.java (+18/-0)
testng-core/src/test/java/test/thread/TestThreadCountTest.java (+38/-0)
testng-core/src/test/java/test/thread/ThreadPoolSampleBugTest.java (+27/-0)
testng-core/src/test/java/test/thread/ThreadPoolSizeBase.java (+17/-0)
testng-core/src/test/java/test/thread/ThreadPoolSizeSampleTest.java (+10/-0)
testng-core/src/test/java/test/thread/ThreadPoolSizeTest.java (+15/-0)
testng-core/src/test/java/test/thread/ThreadPoolSizeWithTimeOutTest.java (+32/-0)
testng-core/src/test/java/test/thread/ThreadTest.java (+20/-0)
testng-core/src/test/java/test/thread/TrueParallelSampleTest.java (+40/-0)
testng-core/src/test/java/test/thread/TrueParallelTest.java (+48/-0)
testng-core/src/test/java/test/thread/issue188/Issue188TestSample.java (+45/-0)
testng-core/src/test/java/test/thread/issue188/IssueTest.java (+61/-0)
testng-core/src/test/java/test/thread/issue2361/AnotherChildClassExample.java (+6/-0)
testng-core/src/test/java/test/thread/issue2361/BaseTestClassExample.java (+45/-0)
testng-core/src/test/java/test/thread/issue2361/ChildClassExample.java (+6/-0)
testng-core/src/test/java/test/thread/issue2361/FactorySample.java (+11/-0)
testng-core/src/test/java/test/thread/issue2361/IssueTest.java (+29/-0)
testng-core/src/test/java/test/thread/parallelization/BaseParallelizationTest.java (+1102/-0)
testng-core/src/test/java/test/thread/parallelization/ClassInstanceMethodKey.java (+32/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase1Scenario1.java (+218/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase1Scenario2.java (+801/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase2Scenario1.java (+478/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase2Scenario2.java (+802/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase3Scenario1.java (+256/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase3Scenario2.java (+645/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase4Scenario1.java (+1175/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase5Scenario1.java (+221/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase5Scenario2.java (+498/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase6Scenario1.java (+814/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase7Scenario1.java (+229/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase7Scenario2.java (+521/-0)
testng-core/src/test/java/test/thread/parallelization/ParallelByMethodsTestCase8Scenario1.java (+1028/-0)
testng-core/src/test/java/test/thread/parallelization/TestNgRunStateListener.java (+121/-0)
testng-core/src/test/java/test/thread/parallelization/TestNgRunStateTracker.java (+1049/-0)
testng-core/src/test/java/test/thread/parallelization/ThreadAffinityTest.java (+126/-0)
testng-core/src/test/java/test/thread/parallelization/issue1773/LogGatheringListener.java (+25/-0)
testng-core/src/test/java/test/thread/parallelization/issue1773/MethodDependenciesSample1.java (+23/-0)
testng-core/src/test/java/test/thread/parallelization/issue1773/MethodDependenciesSample2.java (+23/-0)
testng-core/src/test/java/test/thread/parallelization/issue1773/PriorityTestSample1.java (+28/-0)
testng-core/src/test/java/test/thread/parallelization/issue1773/PriorityTestSample2.java (+28/-0)
testng-core/src/test/java/test/thread/parallelization/issue2110/TestClass.java (+40/-0)
testng-core/src/test/java/test/thread/parallelization/issue2321/TestMultipleInstance.java (+30/-0)
testng-core/src/test/java/test/thread/parallelization/sample/FactoryForTestClassAFiveMethodsWithNoDepsTwoInstancesSample.java (+25/-0)
testng-core/src/test/java/test/thread/parallelization/sample/FactoryForTestClassBFourMethodsWithNoDepsFiveInstancesSample.java (+27/-0)
testng-core/src/test/java/test/thread/parallelization/sample/FactoryForTestClassCSixMethodsWithNoDepsThreeInstancesSample.java (+25/-0)
testng-core/src/test/java/test/thread/parallelization/sample/FactoryForTestClassDThreeMethodsWithNoDepsFourInstancesSample.java (+26/-0)
testng-core/src/test/java/test/thread/parallelization/sample/FactoryForTestClassFSixMethodsWithNoDepsSixInstancesSample.java (+28/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithDataProviderOnAllMethodsAndNoDepsSample.java (+165/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+166/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithFactoryUsingDataProviderAndNoDepsSample.java (+189/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassAFiveMethodsWithNoDepsSample.java (+139/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithDataProviderOnAllMethodsAndNoDepsSample.java (+140/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithFactoryUsingDataProviderAndNoDepsSample.java (+166/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassBFourMethodsWithNoDepsSample.java (+115/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassBSixMethodsWithDataProviderOnAllMethodsAndNoDepsSample.java (+189/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassBSixMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+190/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassCFiveMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+166/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java (+211/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassCSixMethodsWithNoDepsSample.java (+163/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithDataProviderOnAllMethodsAndNoDepsSample.java (+116/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+118/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithFactoryUsingDataProviderAndNoDepsSample.java (+143/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassDThreeMethodsWithNoDepsSample.java (+91/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassEFiveMethodsWithNoDepsSample.java (+139/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassEFourMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+142/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+190/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithFactoryUsingDataProviderAndNoDepsSample.java (+211/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassFSixMethodsWithNoDepsSample.java (+162/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassGFourMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+142/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassGThreeMethodsWithNoDepsSample.java (+91/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassHFiveMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+166/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassHFourMethodsWithNoDepsSample.java (+114/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassIFiveMethodsWithNoDepsSample.java (+139/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassIThreeMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+118/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassJFourMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+142/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassJFourMethodsWithNoDepsSample.java (+114/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassKFiveMethodsWithDataProviderOnSomeMethodsAndNoDepsSample.java (+166/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassKFiveMethodsWithNoDepsSample.java (+139/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassLThreeMethodsWithNoDepsSample.java (+91/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassMFourMethodsWithNoDepsSample.java (+114/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassNFiveMethodsWithNoDepsSample.java (+139/-0)
testng-core/src/test/java/test/thread/parallelization/sample/TestClassOSixMethodsWithNoDepsSample.java (+162/-0)
testng-core/src/test/java/test/thread/testng.xml (+14/-0)
testng-core/src/test/java/test/timeout/GitHub1314Sample.java (+26/-0)
testng-core/src/test/java/test/timeout/InvocationTimeOutSampleTest.java (+24/-0)
testng-core/src/test/java/test/timeout/TestTimeOutSampleTest.java (+15/-0)
testng-core/src/test/java/test/timeout/TimeOutFromXmlTest.java (+90/-0)
testng-core/src/test/java/test/timeout/TimeOutIntegrationTest.java (+42/-0)
testng-core/src/test/java/test/timeout/TimeOutSample2Test.java (+16/-0)
testng-core/src/test/java/test/timeout/TimeOutSampleTest.java (+24/-0)
testng-core/src/test/java/test/timeout/TimeOutTest.java (+108/-0)
testng-core/src/test/java/test/timeout/TimeOutWithParallelSample.java (+11/-0)
testng-core/src/test/java/test/timeout/github1493/TestClassSample.java (+11/-0)
testng-core/src/test/java/test/timeout/github2440/TimeoutTest.java (+21/-0)
testng-core/src/test/java/test/timeout/github2440/TimeoutWithNoExecutorTest.java (+29/-0)
testng-core/src/test/java/test/timeout/github2672/TimeoutStacktraceTest.java (+42/-0)
testng-core/src/test/java/test/timeout/github2672/TimeoutStacktraceTestSample.java (+14/-0)
testng-core/src/test/java/test/timeout/issue2009/TimeOutWithParallelSample.java (+10/-0)
testng-core/src/test/java/test/tmp/A.java (+33/-0)
testng-core/src/test/java/test/tmp/AA.java (+69/-0)
testng-core/src/test/java/test/tmp/AFactory.java (+10/-0)
testng-core/src/test/java/test/tmp/AnnotationTransformer.java (+61/-0)
testng-core/src/test/java/test/tmp/AssertEqualsTest.java (+65/-0)
testng-core/src/test/java/test/tmp/B.java (+18/-0)
testng-core/src/test/java/test/tmp/BListener.java (+22/-0)
testng-core/src/test/java/test/tmp/Base.java (+10/-0)
testng-core/src/test/java/test/tmp/BeforeGroupTest.java (+19/-0)
testng-core/src/test/java/test/tmp/C.java (+24/-0)
testng-core/src/test/java/test/tmp/ChildTest.java (+18/-0)
testng-core/src/test/java/test/tmp/ConcreteTest.java (+14/-0)
testng-core/src/test/java/test/tmp/DataDrivenTest.java (+38/-0)
testng-core/src/test/java/test/tmp/ExponentTest.java (+41/-0)
testng-core/src/test/java/test/tmp/Fixturable.java (+8/-0)
testng-core/src/test/java/test/tmp/IgnoreUntil.java (+16/-0)
testng-core/src/test/java/test/tmp/ParamTest.java (+22/-0)
testng-core/src/test/java/test/tmp/ParentTest.java (+17/-0)
testng-core/src/test/java/test/tmp/RegisterCommandTest.java (+23/-0)
testng-core/src/test/java/test/tmp/RetryAnalyzer.java (+13/-0)
testng-core/src/test/java/test/tmp/StaticInitializerTest.java (+19/-0)
testng-core/src/test/java/test/tmp/Sub.java (+33/-0)
testng-core/src/test/java/test/tmp/Test0.java (+23/-0)
testng-core/src/test/java/test/tmp/Test1.java (+11/-0)
testng-core/src/test/java/test/tmp/TestA.java (+37/-0)
testng-core/src/test/java/test/tmp/TestB.java (+35/-0)
testng-core/src/test/java/test/tmp/TestCaseFactory.java (+18/-0)
testng-core/src/test/java/test/tmp/TestFixture.java (+25/-0)
testng-core/src/test/java/test/tmp/TestNGBug.java (+24/-0)
testng-core/src/test/java/test/tmp/Test_TestListenerAppender.java (+20/-0)
testng-core/src/test/java/test/tmp/TimeBombTest.java (+33/-0)
testng-core/src/test/java/test/tmp/Tmp.java (+25/-0)
testng-core/src/test/java/test/tmp/Tn.java (+26/-0)
testng-core/src/test/java/test/tmp/b/TmpB.java (+10/-0)
testng-core/src/test/java/test/tmp/p1/ContainerTest.java (+19/-0)
testng-core/src/test/java/test/tmp/p2/ServiceTest.java (+12/-0)
testng-core/src/test/java/test/tmp/verify/Verify.java (+8/-0)
testng-core/src/test/java/test/tmp/verify/VerifyInterceptor.java (+68/-0)
testng-core/src/test/java/test/tmp/verify/VerifyTest.java (+22/-0)
testng-core/src/test/java/test/triangle/Base.java (+29/-0)
testng-core/src/test/java/test/triangle/CheckCount.java (+19/-0)
testng-core/src/test/java/test/triangle/Child1.java (+20/-0)
testng-core/src/test/java/test/triangle/Child2.java (+16/-0)
testng-core/src/test/java/test/triangle/CountCalls.java (+17/-0)
testng-core/src/test/java/test/uniquesuite/BaseAfter.java (+18/-0)
testng-core/src/test/java/test/uniquesuite/BaseBefore.java (+19/-0)
testng-core/src/test/java/test/uniquesuite/TestAfter.java (+28/-0)
testng-core/src/test/java/test/uniquesuite/TestAfter1.java (+9/-0)
testng-core/src/test/java/test/uniquesuite/TestAfter2.java (+9/-0)
testng-core/src/test/java/test/uniquesuite/TestBefore1.java (+12/-0)
testng-core/src/test/java/test/uniquesuite/TestBefore2.java (+12/-0)
testng-core/src/test/java/test/v6/A.java (+47/-0)
testng-core/src/test/java/test/v6/B.java (+35/-0)
testng-core/src/test/java/test/v6/C.java (+25/-0)
testng-core/src/test/java/test/verify/Verifier.java (+11/-0)
testng-core/src/test/java/test/verify/Verify.java (+11/-0)
testng-core/src/test/java/test/verify/Verify2SampleTest.java (+48/-0)
testng-core/src/test/java/test/verify/Verify3Base.java (+6/-0)
testng-core/src/test/java/test/verify/Verify3SampleTest.java (+11/-0)
testng-core/src/test/java/test/verify/VerifyMethodInterceptor.java (+40/-0)
testng-core/src/test/java/test/verify/VerifyNoListenersSampleTest.java (+31/-0)
testng-core/src/test/java/test/verify/VerifySampleTest.java (+38/-0)
testng-core/src/test/java/test/verify/VerifyTest.java (+46/-0)
testng-core/src/test/java/test/verify/VerifyTestListener.java (+32/-0)
testng-core/src/test/java/test/xml/TestNGContentHandlerTest.java (+44/-0)
testng-core/src/test/java/test/xml/XMLStringBufferTest.java (+37/-0)
testng-core/src/test/java/test/xml/XmlVerifyTest.java (+111/-0)
testng-core/src/test/java/test/xml/issue2231/IssueTest.java (+46/-0)
testng-core/src/test/java/test/xml/issue2501/TestClassSample.java (+9/-0)
testng-core/src/test/java/test/yaml/YamlTest.java (+96/-0)
testng-core/src/test/java/test_result/AfterListenerSample.java (+54/-0)
testng-core/src/test/java/test_result/BeforeListenerSample.java (+53/-0)
testng-core/src/test/java/test_result/GitHub1197Sample.java (+37/-0)
testng-core/src/test/java/test_result/OrderAbidingListener.java (+116/-0)
testng-core/src/test/java/test_result/ResultStatusTest.java (+66/-0)
testng-core/src/test/java/test_result/TestResultTest.java (+34/-0)
testng-core/src/test/java/test_result/issue1590/TestclassSample.java (+42/-0)
testng-core/src/test/java/test_result/issue2535/CalculatorTestSample.java (+38/-0)
testng-core/src/test/java/testhelper/CompiledCode.java (+31/-0)
testng-core/src/test/java/testhelper/OutputDirectoryPatch.java (+49/-0)
testng-core/src/test/java/testhelper/SimpleCompiler.java (+42/-0)
testng-core/src/test/java/testhelper/SourceCode.java (+43/-0)
testng-core/src/test/kotlin/org/testng/BasicSample.kt (+12/-0)
testng-core/src/test/kotlin/org/testng/BasicTest.kt (+16/-0)
testng-core/src/test/resources/1332.xml (+12/-0)
testng-core/src/test/resources/1636.xml (+9/-0)
testng-core/src/test/resources/188.xml (+9/-0)
testng-core/src/test/resources/2532.xml (+9/-0)
testng-core/src/test/resources/987.xml (+11/-0)
testng-core/src/test/resources/META-INF/services/org.testng.IModule (+1/-0)
testng-core/src/test/resources/META-INF/services/org.testng.ITestNGListener (+2/-0)
testng-core/src/test/resources/META-INF/services/org.testng.xml.ISuiteParser (+1/-0)
testng-core/src/test/resources/a.xml (+12/-0)
testng-core/src/test/resources/b.xml (+12/-0)
testng-core/src/test/resources/checksuitesinitialization/child-suite1.xml (+9/-0)
testng-core/src/test/resources/checksuitesinitialization/child-suite2.xml (+9/-0)
testng-core/src/test/resources/checksuitesinitialization/children/child-suite-3.xml (+10/-0)
testng-core/src/test/resources/checksuitesinitialization/children/child-suite-4.xml (+9/-0)
testng-core/src/test/resources/checksuitesinitialization/children/morechildren/child-suite-5.xml (+9/-0)
testng-core/src/test/resources/checksuitesinitialization/parent-suite-with-duplicate-child.xml (+11/-0)
testng-core/src/test/resources/checksuitesinitialization/parent-suite.xml (+9/-0)
testng-core/src/test/resources/create-serviceloader-jar.sh (+12/-0)
testng-core/src/test/resources/executionlistenersingletoncheck/child.xml (+12/-0)
testng-core/src/test/resources/executionlistenersingletoncheck/parent.xml (+15/-0)
testng-core/src/test/resources/groupinvocation/parent-suiteA.xml (+7/-0)
testng-core/src/test/resources/groupinvocation/parent-suiteB.xml (+7/-0)
testng-core/src/test/resources/groupinvocation/suiteA.xml (+9/-0)
testng-core/src/test/resources/groupinvocation/suiteB.xml (+9/-0)
testng-core/src/test/resources/hosts.properties (+2/-0)
testng-core/src/test/resources/jarfileutils/child.xml (+12/-0)
testng-core/src/test/resources/jarfileutils/child/child.xml (+12/-0)
testng-core/src/test/resources/jarfileutils/child/childofchild/childofchild.xml (+9/-0)
testng-core/src/test/resources/jarfileutils/childofchild/childofchild.xml (+9/-0)
testng-core/src/test/resources/jarfileutils/testng-tests.xml (+23/-0)
testng-core/src/test/resources/jenkins-junit.xsd (+119/-0)
testng-core/src/test/resources/junit-suite.xml (+11/-0)
testng-core/src/test/resources/listener-in-xml.xml (+18/-0)
testng-core/src/test/resources/methodinterceptors/multipleinterceptors/multiple-interceptors.xml (+16/-0)
testng-core/src/test/resources/methodselector-in-xml.xml (+15/-0)
testng-core/src/test/resources/package.xml (+31/-0)
testng-core/src/test/resources/parallel-suites/inherit-thread-count-child.yaml (+7/-0)
testng-core/src/test/resources/parallel-suites/inherit-thread-count-parent.yaml (+5/-0)
testng-core/src/test/resources/parallel-suites/simple-suite-parallel-0.xml (+15/-0)
testng-core/src/test/resources/parallel-suites/simple-suite-parallel-1.xml (+10/-0)
testng-core/src/test/resources/parallel-suites/simple-suite-parallel-2.xml (+10/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-0.xml (+16/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-1.xml (+10/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-2-1.xml (+10/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-2-2-1.xml (+10/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-2-2.xml (+14/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-2.xml (+15/-0)
testng-core/src/test/resources/parallel-suites/suite-parallel-3.xml (+10/-0)
testng-core/src/test/resources/param-inheritance/child-suite.xml (+9/-0)
testng-core/src/test/resources/param-inheritance/parent-suite.xml (+8/-0)
testng-core/src/test/resources/parametertest/1417.xml (+24/-0)
testng-core/src/test/resources/parametertest/child1-suite.xml (+13/-0)
testng-core/src/test/resources/parametertest/child2-suite.xml (+17/-0)
testng-core/src/test/resources/parametertest/child3-suite.xml (+13/-0)
testng-core/src/test/resources/parametertest/parent-suite.xml (+11/-0)
testng-core/src/test/resources/parent-module-suite.xml (+9/-0)
testng-core/src/test/resources/sanitycheck/test-a.xml (+8/-0)
testng-core/src/test/resources/sanitycheck/test-b.xml (+8/-0)
testng-core/src/test/resources/sanitycheck/test-s-1.xml (+14/-0)
testng-core/src/test/resources/sanitycheck/test-s-2.xml (+14/-0)
testng-core/src/test/resources/sanitycheck/test-s-3.xml (+14/-0)
testng-core/src/test/resources/sanitycheck/test-s-a.xml (+8/-0)
testng-core/src/test/resources/sanitycheck/test-s-b.xml (+8/-0)
testng-core/src/test/resources/sanitycheck/test1.xml (+21/-0)
testng-core/src/test/resources/sanitycheck/test2.xml (+14/-0)
testng-core/src/test/resources/sanitycheck/test3.xml (+14/-0)
testng-core/src/test/resources/simplelogger.properties (+6/-0)
testng-core/src/test/resources/suite1-1.xml (+13/-0)
testng-core/src/test/resources/suite1-2.xml (+10/-0)
testng-core/src/test/resources/suite1.xml (+18/-0)
testng-core/src/test/resources/test/listeners/github1284/github1284.xml (+18/-0)
testng-core/src/test/resources/test/listeners/github1284/github1284_nolistener.xml (+13/-0)
testng-core/src/test/resources/test/listeners/github1284/github1284_withchildlistener.xml (+17/-0)
testng-core/src/test/resources/test/listeners/github1284/github1284_withlistener.xml (+17/-0)
testng-core/src/test/resources/test/methodselectors/sampleTest.xml (+14/-0)
testng-core/src/test/resources/test/methodselectors/sampleTestExclusions.xml (+18/-0)
testng-core/src/test/resources/test/timeout/issue575.xml (+9/-0)
testng-core/src/test/resources/testnames/main-suite.xml (+22/-0)
testng-core/src/test/resources/testnames/upstream-suite.xml (+7/-0)
testng-core/src/test/resources/testng-all.xml (+99/-0)
testng-core/src/test/resources/testng-annconv.xml (+14/-0)
testng-core/src/test/resources/testng-ant.xml (+10/-0)
testng-core/src/test/resources/testng-configfailure.xml (+9/-0)
testng-core/src/test/resources/testng-methodselectors.xml (+9/-0)
testng-core/src/test/resources/testng-override.xml (+13/-0)
testng-core/src/test/resources/testng-package.xml (+19/-0)
testng-core/src/test/resources/testng-single.xml (+20/-0)
testng-core/src/test/resources/testng-single.yaml (+12/-0)
testng-core/src/test/resources/testng-single2.xml (+25/-0)
testng-core/src/test/resources/testng-single2.yaml (+48/-0)
testng-core/src/test/resources/testng.xml (+997/-0)
testng-core/src/test/resources/testng.yaml (+352/-0)
testng-core/src/test/resources/testng_convert.xml (+10/-0)
testng-core/src/test/resources/xml/badWithDoctype.xml (+5/-0)
testng-core/src/test/resources/xml/badWithoutDoctype.xml (+5/-0)
testng-core/src/test/resources/xml/github1533/child.xml (+9/-0)
testng-core/src/test/resources/xml/github1533/parent.xml (+7/-0)
testng-core/src/test/resources/xml/github2445/expected-failed-report.xml (+15/-0)
testng-core/src/test/resources/xml/github2445/test-suite.xml (+11/-0)
testng-core/src/test/resources/xml/goodWithDoctype.xml (+5/-0)
testng-core/src/test/resources/xml/goodWithoutDoctype.xml (+5/-0)
testng-core/src/test/resources/xml/issue1668.xml (+20/-0)
testng-core/src/test/resources/xml/issue1674.xml (+28/-0)
testng-core/src/test/resources/xml/issue174.xml (+21/-0)
testng-core/src/test/resources/xml/issue2501/2501.xml (+17/-0)
testng-core/src/test/resources/xml/issue2501/params.xml (+3/-0)
testng-core/src/test/resources/xml/issue2693.xml (+13/-0)
testng-core/src/test/resources/xml/issue435.xml (+23/-0)
testng-core/src/test/resources/xml/simple-suite-with-method-desc.xml (+13/-0)
testng-core/src/test/resources/yaml/1787.xml (+23/-0)
testng-core/src/test/resources/yaml/2078.xml (+15/-0)
testng-core/src/test/resources/yaml/2078.yaml (+12/-0)
testng-core/src/test/resources/yaml/a1.xml (+56/-0)
testng-core/src/test/resources/yaml/a1.yaml (+25/-0)
testng-core/src/test/resources/yaml/a2.xml (+80/-0)
testng-core/src/test/resources/yaml/a2.yaml (+49/-0)
testng-core/src/test/resources/yaml/a3-a.xml (+10/-0)
testng-core/src/test/resources/yaml/a3-a.yaml (+6/-0)
testng-core/src/test/resources/yaml/a3-b.xml (+10/-0)
testng-core/src/test/resources/yaml/a3-b.yaml (+6/-0)
testng-core/src/test/resources/yaml/a3.xml (+10/-0)
testng-core/src/test/resources/yaml/a3.yaml (+4/-0)
testng-core/src/test/resources/yaml/a4-a.yaml (+3/-0)
testng-core/src/test/resources/yaml/a4-b.yaml (+3/-0)
testng-core/src/test/resources/yaml/a4.xml (+10/-0)
testng-core/src/test/resources/yaml/a4.yaml (+4/-0)
testng-core/src/test/resources/yaml/suiteWithNonExistentTest.yaml (+5/-0)
testng-core/testng-core-build.gradle.kts (+59/-0)
testng-reflection-utils/src/main/java/org/testng/internal/reflect/ReflectionHelper.java (+115/-0)
testng-reflection-utils/testng-reflection-utils-build.gradle.kts (+7/-0)
testng-runner-api/src/main/java/org/testng/internal/Attributes.java (+32/-0)
testng-runner-api/src/main/java/org/testng/internal/ITestResultNotifier.java (+36/-0)
testng-runner-api/src/main/java/org/testng/internal/LiteWeightTestNGMethod.java (+540/-0)
testng-runner-api/src/main/java/org/testng/internal/TestResult.java (+474/-0)
testng-runner-api/src/main/java/org/testng/internal/XmlTestUtils.java (+29/-0)
testng-runner-api/src/main/java/org/testng/internal/invokers/IInvocationStatus.java (+11/-0)
testng-runner-api/testng-runner-api-build.gradle.kts (+7/-0)
testng-runner-junit4/testng-runner-junit4-build.gradle.kts (+8/-0)
testng-test-kit/src/main/java/testhelper/PerformanceUtils.java (+51/-0)
testng-test-kit/testng-test-kit-build.gradle.kts (+3/-0)
testng-test-osgi/LICENSE.pgjdbc (+23/-0)
testng-test-osgi/gradle.properties (+2/-0)
testng-test-osgi/src/test/java/org/testng/test/osgi/DefaultTestngOsgiOptions.java (+31/-0)
testng-test-osgi/src/test/java/org/testng/test/osgi/PlainOsgiTest.java (+39/-0)
testng-test-osgi/src/test/resources/exam.properties (+2/-0)
testng-test-osgi/src/test/resources/logback-test.xml (+14/-0)
testng-test-osgi/testng-test-osgi-build.gradle.kts (+86/-0)
testng/src/test/java/org/testng/test/VerifyShadedJarWorksTest.java (+15/-0)
testng/testng-build.gradle.kts (+99/-0)
versions.properties (+99/-0)
Reviewer Review Type Date Requested Status
William Wilson Pending
Vladimir Petko Pending
Review via email: mp+439765@code.launchpad.net

Description of the change

Please do not merge, this is a new package testng7 that is a requirement for a number of OpenJDK 20 tests to pass.
A new package is made in order to avoid:
 - breaking API changes[2].

PPA: ppa:vpa1977/openjdk-20-testng75 [1]

[1] https://launchpad.net/~vpa1977/+archive/ubuntu/openjdk-20-testng75
[2] https://abi-laboratory.pro/index.php?view=timeline&lang=java&l=testng

To post a comment you must log in.
~vpa1977/+git/testng7:main updated
f71412e... by Vladimir Petko

jquery is not used in 7.5, remove

f90f5d7... by Vladimir Petko

remove sources excluded by repack

a612f7e... by Vladimir Petko

update exclusion and copyright link

ab9ae44... by Vladimir Petko

add override for test jar files

07db379... by Vladimir Petko

update override comment

7f97dde... by Vladimir Petko

drop historical whitespaces

fc81289... by Vladimir Petko

add rules require root tag

eb3f126... by Vladimir Petko

add more overrides

8575236... by Vladimir Petko

remove old pom control file

Unmerged commits

8575236... by Vladimir Petko

remove old pom control file

eb3f126... by Vladimir Petko

add more overrides

fc81289... by Vladimir Petko

add rules require root tag

7f97dde... by Vladimir Petko

drop historical whitespaces

07db379... by Vladimir Petko

update override comment

ab9ae44... by Vladimir Petko

add override for test jar files

a612f7e... by Vladimir Petko

update exclusion and copyright link

f90f5d7... by Vladimir Petko

remove sources excluded by repack

f71412e... by Vladimir Petko

jquery is not used in 7.5, remove

5fc982b... by Vladimir Petko

Update upstream source from tag 'upstream/7.5'

Update to upstream version '7.5'
with Debian dir 51e135d5538c8681acba89f78832bc77d8f82cd8

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/.classpath b/.classpath
0deleted file mode 1006440deleted file mode 100644
index a47380d..0000000
--- a/.classpath
+++ /dev/null
@@ -1,28 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" output="target/classes" path="src/main/java">
4 <attributes>
5 <attribute name="optional" value="true"/>
6 <attribute name="maven.pomderived" value="true"/>
7 </attributes>
8 </classpathentry>
9 <classpathentry kind="src" path="src/generated/java"/>
10 <classpathentry kind="src" path="src/test/java"/>
11 <classpathentry kind="src" path="src/main/resources"/>
12 <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
13 <attributes>
14 <attribute name="maven.pomderived" value="true"/>
15 </attributes>
16 </classpathentry>
17 <classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
18 <attributes>
19 <attribute name="maven.pomderived" value="true"/>
20 </attributes>
21 </classpathentry>
22 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
23 <attributes>
24 <attribute name="maven.pomderived" value="true"/>
25 </attributes>
26 </classpathentry>
27 <classpathentry kind="output" path="target/classes"/>
28</classpath>
diff --git a/.classpath-linux b/.classpath-linux
29deleted file mode 1006440deleted file mode 100644
index d05023c..0000000
--- a/.classpath-linux
+++ /dev/null
@@ -1,11 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="src/main/java"/>
4 <classpathentry kind="src" path="src/test/java"/>
5 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/>
6 <classpathentry kind="lib" path="lib/ant-1.6.5.jar"/>
7 <classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
8 <classpathentry kind="lib" path="lib/guice-2.0.jar"/>
9 <classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
10 <classpathentry kind="output" path="z_build"/>
11</classpath>
diff --git a/.classpath-mac b/.classpath-mac
12deleted file mode 1006440deleted file mode 100644
index d05023c..0000000
--- a/.classpath-mac
+++ /dev/null
@@ -1,11 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="src/main/java"/>
4 <classpathentry kind="src" path="src/test/java"/>
5 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/>
6 <classpathentry kind="lib" path="lib/ant-1.6.5.jar"/>
7 <classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
8 <classpathentry kind="lib" path="lib/guice-2.0.jar"/>
9 <classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
10 <classpathentry kind="output" path="z_build"/>
11</classpath>
diff --git a/.editorconfig b/.editorconfig
12new file mode 1006440new file mode 100644
index 0000000..461ba5b
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,44 @@
1root = true
2
3[*]
4max_line_length = 100
5trim_trailing_whitespace = true
6insert_final_newline = true
7charset = utf-8
8indent_style = space
9
10[{*.sh,gradlew}]
11end_of_line = lf
12
13[{*.bat,*.cmd}]
14end_of_line = crlf
15
16[*.md]
17# Trailing space means "paragraph continues" in markdown
18trim_trailing_whitespace = false
19
20[*.java]
21indent_size = 2
22ij_continuation_indent_size = 4
23# Doc: https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0
24# $ means "static"
25ij_java_wrap_long_lines = true
26ij_java_wrap_comments = true
27ij_java_imports_layout = $*,|,*
28ij_java_use_single_class_imports = true
29# Below does not seem to work as of 2021.1.1 even though
30# https://youtrack.jetbrains.com/issue/IDEA-225733 is resolved
31wildcard_import_limit = 999
32ij_kotlin_name_count_to_use_star_import = 999
33ij_kotlin_name_count_to_use_star_import_for_members = 999
34ij_java_class_count_to_use_import_on_demand = 999
35ij_java_names_count_to_use_import_on_demand = 999
36
37[*.js]
38indent_size = 2
39
40[*.xml]
41indent_size = 2
42
43[{*.yml,*.yaml}]
44indent_size = 2
diff --git a/.gitignore b/.gitignore
0deleted file mode 10064445deleted file mode 100644
index cc89f26..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
1.ant-targets*
2.classpath
3.gitignore
4.gradle
5.idea
6.project
7.settings
8/_eclipse/
9/local.properties
10TESTNG-*
11build
12eclipse-build
13gradle.properties
14ivy*
15javadocs
16kobaltBuild
17lib
18maven-testng-plugin-1.2.jar
19nb-configuration.xml
20out
21src/generated
22src/test/java/test/ignore
23target
24test-output
25test-output-tests
26testng.iml
27z_build
28.kobalt
29.DS_Store
30
diff --git a/.project b/.project
31deleted file mode 1006440deleted file mode 100644
index 33d1108..0000000
--- a/.project
+++ /dev/null
@@ -1,24 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>testng</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.jdt.core.javabuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.m2e.core.maven2Builder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 </buildSpec>
19 <natures>
20 <nature>org.eclipse.pde.PluginNature</nature>
21 <nature>org.eclipse.m2e.core.maven2Nature</nature>
22 <nature>org.eclipse.jdt.core.javanature</nature>
23 </natures>
24</projectDescription>
diff --git a/.travis.yml b/.travis.yml
25deleted file mode 1006440deleted file mode 100644
index 2cfe765..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
1language: java
2jdk:
3 - oraclejdk8
4 - oraclejdk7
5 - openjdk7
6
7script:
8 - ./gradlew check --stacktrace --info
9after_success:
10 - ./travis.sh deploy
11 - ./travis.sh sonarqube
12
diff --git a/ANNOUNCEMENT.txt b/ANNOUNCEMENT.txt
index abb2222..0565cc3 100644
--- a/ANNOUNCEMENT.txt
+++ b/ANNOUNCEMENT.txt
@@ -1,7 +1,7 @@
1javalobby.org1javalobby.org
2testdriven.com2testdriven.com
3opensourcetesting.org3opensourcetesting.org
4http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=684https://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=68
5java.net5java.net
6comp.lang.java.programmer6comp.lang.java.programmer
77
@@ -15,11 +15,11 @@ to transparently distribute tests on many machines and collect their results.
1515
16Announcement:16Announcement:
1717
18http://beust.com/weblog/archives/000361.html18https://beust.com/weblog/archives/000361.html
1919
20Details on Distributed TestNG: 20Details on Distributed TestNG:
2121
22http://beust.com/weblog/archives/000362.html22https://beust.com/weblog/archives/000362.html
2323
2424
25==========25==========
@@ -28,11 +28,11 @@ The TestNG team is happy to announce the immediate availability of TestNG 4.0, w
2828
29The announcement, along with a few examples and summary of the new features, can be found here:29The announcement, along with a few examples and summary of the new features, can be found here:
3030
31 http://tinyurl.com/dxlbh31 https://tinyurl.com/dxlbh
3232
33-- 33--
34C�dric34C�dric
35http://testng.org35https://testng.org
3636
37================37================
3838
@@ -40,7 +40,7 @@ Announcing TestNG 2.3
4040
41The TestNG team is happy to announce the availability of TestNG 2.3.41The TestNG team is happy to announce the availability of TestNG 2.3.
4242
43The version is available at http://beust.com/testng as well as the new documentation, which has been considerably improved (highlighted code snippets, detailed DTD, ant task and description of all the new features).43The version is available at https://beust.com/testng as well as the new documentation, which has been considerably improved (highlighted code snippets, detailed DTD, ant task and description of all the new features).
4444
45What's new:45What's new:
4646
@@ -61,7 +61,7 @@ Try it and let us know what you think!
6161
62===62===
6363
64I am happy to announce the availability of TestNG 2.1 (http://beust.com/testng). 64I am happy to announce the availability of TestNG 2.1 (https://beust.com/testng).
6565
66TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as:66TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as:
6767
@@ -73,7 +73,7 @@ TestNG is a testing framework inspired from JUnit and NUnit but introducing some
7373
74Some of the new features in this version include:74Some of the new features in this version include:
7575
76 * invocationCount and successPercentage, which I described in a previous entry (http://beust.com/weblog/archives/000236.html), and which allow you to invoke a test method a certain number of times while allowing some of these invocations to fail. If the number of failures is under a certain threshold, the test is still considered a success.76 * invocationCount and successPercentage, which I described in a previous entry (https://beust.com/weblog/archives/000236.html), and which allow you to invoke a test method a certain number of times while allowing some of these invocations to fail. If the number of failures is under a certain threshold, the test is still considered a success.
77 77
78 * timeOut is now applicable to all test methods. Whether you are running your tests in parallel or not, you can specify a time-out for your test method and if it fails to complete within the given amount of time, TestNG will mark it as a failure.78 * timeOut is now applicable to all test methods. Whether you are running your tests in parallel or not, you can specify a time-out for your test method and if it fails to complete within the given amount of time, TestNG will mark it as a failure.
79 79
@@ -91,7 +91,7 @@ Announcing TestNG for Eclipse
9191
92The TestNG team is happy to announce the first release of the TestNG plug-in for Eclipse.92The TestNG team is happy to announce the first release of the TestNG plug-in for Eclipse.
9393
94http://beust.com/testng94https://beust.com/testng
9595
96This first release covers the basic functionalities of TestNG, among which:96This first release covers the basic functionalities of TestNG, among which:
9797
@@ -100,11 +100,11 @@ This first release covers the basic functionalities of TestNG, among which:
100100
101A more detailed overview can be found here:101A more detailed overview can be found here:
102102
103http://beust.com/weblog/archives/000261.html103https://beust.com/weblog/archives/000261.html
104104
105and the documentation and snapshots here:105and the documentation and snapshots here:
106106
107http://beust.com/testng/main.html#eclipse107https://beust.com/testng/main.html#eclipse
108108
109-- 109--
110Cedric110Cedric
diff --git a/CHANGES.txt b/CHANGES.txt
index fb5ca6d..17b5d25 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,465 @@
1Current1Current
2Fixed: GITHUB-2701: Bump gradle version to 7.3.3 to support java17 build (ZhangJian He)
3Fixed: GITHUB-2646: Streamline Logging Across TestNG (Krishnan Mahadevan)
4Fixed: GITHUB-2658: Inheritance + dependsOnMethods (Krishnan Mahadevan)
5Fixed: GITHUB-2664: Order for DependsOnGroups has changed after TestNg 7.4.0 (Krishnan Mahadevan)
6Fixed: GITHUB-2501: TestNG 7.4.0 throws an exception "sun.net.www.protocol.file.FileURLConnection cannot be cast to java.net.HttpURLConnection" when xml file contain "ENTITY SYSTEM" grammer (Krishnan Mahadevan)
7Fixed: GITHUB-2693: TestNG ignores 'dataproviderthreadcount' CLA (Krishnan Mahadevan)
8Fixed: GITHUB-2685: TestInvoker should clear Thread.interrupted flag before calling ITestListeners (Roman Morskyi)
9Fixed: GITHUB-2684: AfterGroups config annotation does not consider retries for tests (Roman Morskyi)
10Fixed: GITHUB-2689: Yaml parser: implement loadClasses flag (Dzmitry Sankouski)
11Fixed: GITHUB-2676: NPE is triggered when working with ITestObjectFactory (Krishnan Mahadevan)
12Fixed: GITHUB-2674: Run onTestSkipped for each value from data provider (Krishnan Mahadevan)
13Fixed: GITHUB-2672: Log real stacktrace when test times out. (cdalexndr)
14Fixed: GITHUB-2669: A failed retry with ITestContext will lose the ITestContext. (Nan Liang)
15Fixed: GITHUB-2643: assertEquals(Set,Set) now ignores ordering as it did before. (Elis Edlund)
16Fixed: GITHUB-2653: Assert methods requires casting since TestNg 7.0 for mixed boxed and unboxed primitives in assertEquals.
17Fixed: GITHUB-2229: Restore @BeforeGroups and @AfterGroups Annotations functionality (Krishnan Mahadevan)
18Fixed: GITHUB-2563: Skip test if its data provider provides no data (Krishnan Mahadevan)
19Fixed: GITHUB-2535: TestResult.getEndMillis() returns 0 for skipped configuration - after upgrading testng to 7.0 + (Krishnan Mahadevan)
20Fixed: GITHUB-2638: "[WARN] Ignoring duplicate listener" appears when running .xml suite with <listeners> and <suite-files> (Krishnan Mahadevan)
21Fixed: GITHUB-1297: Passed configuration methods appear in testng-failed.xml, when failure was after passed test (Dzmitry Sankouski)
22New: Decouple configuration unit tests from main suite (Dzmitry Sankouski).
23Fixed: GITHUB-2536: Problems with Nested Test Classes (Krishnan Mahadevan)
24Fixed: GITHUB-2558:Make IExecutionListener, ITestListener, IInvokedMethodListener, IConfigurationListener, ISuiteListener finish method with reverse order (dianny)
25Fixed: GITHUB-2532: Apply commandline switches for suites in jar files (Dzmitry Sankouski).
26Fixed: GITHUB-2558: Make IExecutionListener, ITestListener, IInvokedMethodListener, IConfigurationListener, ISuiteListener execute in the order of insertion (Krishnan Mahadevan)
27Fixed: GITHUB-2611: Config Failures not included in testng-failed.xml when its part of a different test class (Krishnan Mahadevan)
28Fixed: GITHUB-2613: Ignored Tests are not retrieved for a mixed test class (test with enabled, disabled and ignored test method) (Krishnan Mahadevan)
29Fixed: GITHUB-849: Performance improvement by fixing hashCode (testn & Vladimir Sitnikov)
30Fixed: GITHUB-2570: Use Guice injector for instantiate IRetryAnalyzer (Krishnan Mahadevan)
31Fix: use proper instances for beforeClass callback when different instances collide on hash codes
32Fixed: Fix parallel and configfailurepolicy parsing in tr_TR locale
33Fixed: Wrong results from GuiceBasedObjectDispenser when there's Object#hashCode collision
34Changed: GITHUB-2564: Source code is split into several modules for better modularity in the future (for now only a combined jar is released as it was before)
35Added: GITHUB-2564: Added license files as META-INF/LICENSE.txt within the released jar
36Test: GITHUB-2564: Added pax-exam-based OSGi test to verify the manifest
37Changed: GITHUB-2564: Migrated the build to Gradle 7.0.2
38Fixed: GITHUB-2576: Guice 5.0 drops no-aop variant, so TestNG should probably upgrade and avoid no-aop dependency (Nan Liang)
39Fixed: GITHUB-2566: Reporter#getOutput(ITestResult tr) uses Map.get(tr.hashCode()) which might result in surprising results (Krishnan Mahadevan)
40Fixed: GITHUB-2565: Dataprovider only supporting a raw type for Iterator return type (Krishnan Mahadevan)
41Fixed: GITHUB-2557: Flaky test: ThreadAffinityTest#testThreadAffinity (Krishnan Mahadevan)
42Fixed: GITHUB-2567: MethodHelper#CANONICAL_NAME_CACHE is never reset, so it could result in a memory leak (Krishnan Mahadevan)
43Fixed: GITHUB-2540: assertEquals(Collection) need check order (Stuart Marks & Julien Herr)
44Fixed: GITHUB-2360: Groovy 3 internal generated methods are detected as test methods (Ian Springer)
45Fixed: GITHUB-2522: TestNG 7.4.0 Can not skip test through listener (Nan Liang)
46Fixed: GITHUB-2529: Link to testng.xml in CONTRIBUTING.md file was dead
47Fixed: GITHUB-2521: The method has a separate string with 'invocation-number' parameters for each failure (does not group) in 'testng-failed.xml' file for DataProvider + Factory (Pavel Sakharchuk)
48Fixed: GITHUB-2426: New feature TestNG - getFactoryMethodParamsInfo on ConfigurationMethod (Krishnan Mahadevan)
49Fixed: GITHUB-2517: Factory data-provider parameters not displayed in 'testng-failed.xml' file (Pavel Sakharchuk)
50Fixed: GITHUB-279: Guice dependency injection into listeners and reporters (Krishnan Mahadevan)
51Fixed: GITHUB-2504: Data provider data cannot be populated to onTestStart hook when BeforeMethod is failed (Krishnan Mahadevan)
52Fixed: GITHUB-2489: Hierarchical base- and test-class @AfterClass methods out of order using groups (Krishnan Mahadevan)
53Fixed: GITHUB-2493: Avoid NPE from TextReporter execution when a dataprovider method provides null (baflQA)
54Fixed: GITHUB-2483: Asymmetric not equals (cdalexndr)
55Fixed: GITHUB-2486: assertSame/assertNotSame broken after GITHUB-2296 (Vitalii Diravka)
56Fixed: GITHUB-2490: assertNotEquals returns fast when argument is null, not calling equals(Object) (Anindya Roy)
57Fixed: GITHUB-2500: Mention in assertEqualsNoOrder doc that arrays are not compared deeply (Marcono1234)
58Fixed: GITHUB-2544: TestNG Retry Fails on complex data-provider arguments (Anindya Roy)
59
607.4.0
61New : GITHUB-2459: Support configurable start time - emailable report (Barry Evans)
62Fixed: GITHUB-2467: XmlTest does not copy the xmlClasses during clone (C.V.Aditya)
63Fixed: GITHUB-2469: Parameters added in XmlTest during AlterSuiteListener not available in SuiteListener (C.V.Aditya)
64Fixed: GITHUB-2296: Fix for assertEquals not working for sets as order is not guaranteed. (Prashant Maroti)
65Fixed: GITHUB-2465: Fix bux where Strings.join returns empty String
66Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Julien Herr & Krishnan Mahadevan)
67New : GITHUB-2456: Add onDataProviderFailure listener (Krishnan Mahadevan)
68Fixed: GITHUB-2445: NPE in FailedReporter.java With Tests Created in Factory (Arham Jain)
69Fixed: GITHUB-2428: Configuration methods have the same test class instance when @Factory is being used (Nan Liang)
70Fixed: GITHUB-2440: Fixed an issue when case timeout returned an incorrect exception and effect the next other test case (Yao Ma)
71New: GITHUB-2407: Adds "overrideIncludedMethods" to the global config as a command-line argument, which excludes explicitly included test methods if they belong to any excluded groups (Nikhil Suri)
72Fixed: GITHUB-2432: Rework MethodInheritance.fixMethodInheritance to "soft" dependencies (Krishnan Mahadevan)
73Fixed: GITHUB-2429: Seggregate Dependency Injection out as a clear implementation (Krishnan Mahadevan)
74Fixed: GITHUB-2435: getParameterIndex() always return 0 in test listener
75Fixed: GITHUB-2406: TestNG 7.3.0 transitive vulnerability CVE-2020-11022 and CVE-2020-11023 due to JQuery 3.4.1 (Krishnan Mahadevan)
76Fixed: GITHUB-2405: Regression: Using TestNG via Maven breaks when optional Guice dependency is unavailable (Krishnan Mahadevan)
77Fixed: GITHUB-2427: Guice module (suite parent-module and test module) configure() method is called multiple times (Jacek Centkowski)
78Fixed: GITHUB-2419: TestNG JUnit reports are not valid if system output contains XML tags (Lorenzo Orsatti)
79Fixed: GITHUB-188: suite parallel="methods" does not work when there are multiple <test> tags in the testng.xml (Krishnan Mahadevan)
80Fixed: GITHUB-346: When a method is annotated with both BeforeGroups and AfterGroups only AfterGroup is executed (Krishnan Mahadevan)
81Fixed: GITHUB-2403: Suite.xml files attempt to make web request when suite references standard TestNG DTD using HTTP (Krishnan Mahadevan)
82New: GITHUB-2385: Make @Listeners can work for implemented interfaces and Inherited class (Nan Liang)
83Fixed: GITHUB-2053: MethodHelper.collectAndOrderMethods() Hangs when Parallel Instance and dependsOnGroups (Krishnan Mahadevan)
84Fixed: GITHUB-2400: BeforeClass/Method (and AfterClass/Method) configuration methods that override default methods are invoked multiple times (Krishnan Mahadevan)
85Fixed: GITHUB-2396: @Ignore on method level doesn't work as expected (Krishnan Mahadevan)
86Fixed: GITHUB-2382: TestNG version should be specified in MANIFEST.MF (Krishnan Mahadevan)
87Fixed: GITHUB-2096: 7.0.0-beta6 memory issues (regression) (Krishnan Mahadevan)
88Fixed: GITHUB-2355: TestNG creates multiple Guice Module Instances (Krishnan Mahadevan)
89Fixed: GITHUB-2374: Add file name to the warning message (Krishnan Mahadevan)
90Fixed: GITHUB-2321: -Dtestng.thread.affinity=true do not work when running multiple instance of test in parallel (Nan Liang)
91Fixed: GITHUB-2363: JS error when switching theme (Krishnan Mahadevan)
92Fixed: GITHUB-2361: No way to enforce @Test(singleThreaded = true) when test defined in base class (Krishnan Mahadevan)
93Fixed: GITHUB-2343: Injectors are not reused when they share the same set of modules (Krishnan Mahadevan)
94Fixed: GITHUB-2346: ITestResult attributes are null when retrieved by Listener onTestStart if test fails at BeforeMethod (Krishnan Mahadevan)
95Fixed: GITHUB-2357: TestNG 7.3.0 transitive dependencies
96
977.3.0
98Fixed: GITHUB-2328: Add ability to get test method for which configuration method was called (Krishnan Mahadevan)
99Fixed: GITHUB-2327: Parameters not present on skipped Test (Eric Kubenka)
100Fixed: GITHUB-2232: Null Pointer Exception in ConfigInvoker.setMethodInvocationFailure (Krishnan Mahadevan)
101Fixed: GITHUB-2312: IAnnotationTransformer called multiple time Discrepancy between 6.x and 7.x (Krishnan Mahadevan)
102New: GITHUB-2315: TextReporter console output does not nicely print native array data parameters (James Sassano)
103Fixed: GITHUB-2301: Add support for object-based reporter configurations (Scott Babcock)
104New: Deprecate org.testng.ReporterConfig (Julien Herr)
105Fixed: GITHUB-2300: Vulnerable Dependency: Please upgrade JCommander to 1.75 or above (Krishnan Mahadevan)
106Fixed: GITHUB-2182: Removed exception catching as valid behaviour
107Fixed: GITHUB-2273: Use SPI to load Guice modules (Bartosz Popiela)
108Fixed: GITHUB-2280: Prevent Retry from happening endlessly (Paweł Nadolski)
109Fixed: GITHUB-553: Better error message when dealing with classes having both Constructor and Factory methods (Krishnan Mahadevan)
110Fixed: GITHUB-2267: RetryAnalyzer is not set properly and consistent when using dataprovider (Eric Kubenka)
111Fixed: GITHUB-2266: Support Test retries via Callbacks (Krishnan Mahadevan)
112Fixed: GITHUB-2209: @Before and @After are not executed as expected when a combination of class and method level grouping is applied (Krishnan Mahadevan)
113Fixed: GITHUB-2259: Missing configuration for ServiceLoader Listeners (Krishnan Mahadevan)
114Fixed: GITHUB-2257: Facilitate retry of configuration methods via call backs (Krishnan Mahadevan)
115Fixed: GITHUB-2223: testng 7.1.0 java.lang.ClassNotFoundException: com.google.inject.Stage (Krishnan Mahadevan)
116Fixed: GITHUB-217: Configure TestNG to fail when all tests are skipped (Krishnan Mahadevan)
117Fixed: GITHUB-2255: Ensure test method parameters are visible in BeforeMethod config method (Krishnan Mahadevan)
118Fixed: GITHUB-2251: NullPointerException at test with timeOut (Krishnan Mahadevan)
119Fixed: GITHUB-2249: Not abstract super-classes mess up test run order (Sergii Kim)
120Fixed: GITHUB-2195: NPE Using groups and @Before/@AfterMethod with alwaysRun and dependsOnMethods (Tomas & Julien Herr)
121Fixed: GITHUB-2238: Parameter values should be overridable from JVM arguments (Krishnan Mahadevan)
122Fixed: GITHUB-2231: Incorrect hierarchy in testng.xml file created programmatically and failed to run. (Krishnan Mahadevan)
123Fixed: GITHUB-2235: expectedExceptions mismatch because of wrapping (Krishnan Mahadevan)
124Fixed: GITHUB-2220: ITestListener's methods get called multiple times for one test, when @Listeners annotation is used in multiple test classes (Krishnan Mahadevan)
125Fixed: GITHUB-2211: assertEquals for Map sometimes does not use provided message (Krishnan Mahadevan)
126Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Krishnan Mahadevan)
127Fixed: GITHUB-2207: Allow dependency injector factory to be configured via args (dmikhievich)
128Fixed: GITHUB-2193: Ignore local url for DTD security check (Li.Zhao & Julien Herr)
129Fixed: GITHUB-1968: Upgrade to Gradle 6.0
130
1317.1.0
132New : GITHUB-2199: Allow users to provide their own Injector for Dependency Injection (Krishnan Mahadevan)
133Fixed: GITHUB-2180: Write scenario details for Retried tests (Devendra Raju K)
134Fixed: GITHUB-2124: JUnit Report should contain the output of org.testng.Reporter (Krishnan Mahadevan)
135Fixed: GITHUB-2171: Ability to embed attachments and make them available on TestNG XML report (Krishnan Mahadevan)
136Fixed: GITHUB-2152: Multiple Test Groups Causing @BeforeMethod and @AfterMethod to be called multiple times for a single test (Krishnan Mahadevan)
137Fixed: GITHUB-2172: Suite summary report table issue with EmailableReporter2.java (Devendra Raju K)
138Fixed: GITHUB-2148: TestNG - configfailurepolicy=“continue” is not working for retried test (Krishnan Mahadevan)
139Fixed: GITHUB-2163: Test is executed infinite number of times when the data provider returns a new object (Krishnan Mahadevan)
140Fixed: GITHUB-2157: NullPointerException occurs when a Retried test has an exception in DataProvider (Krishnan Mahadevan)
141Fixed: GITHUB-2150: Upgraded jQuery from 1.7.1 to 3.4.1 to resolve reported prototype pollution vulnerability
142Fixed: GITHUB-2149: Handle NoClassDefFoundError when classloader fails to load a class
143New: GITHUB-2111: Provide an interceptor for Data Provider (Krishnan Mahadevan)
144Fixed: GITHUB-1709: @Ignore doesn't work when used on child class, and parent has multiple @Test methods (Krishnan Mahadevan)
145New: GITHUB-2118: Default assertion message (Jiong Fu)
146Fixed: GITHUB-2080: Wrong text for assertTrue (Jiong Fu)
147Fixed: GITHUB-2078: Xml to Yaml does not capture the dependency definition in generated Yaml File (Jiong Fu)
148
1497.0.0
150Fixed: GITHUB-2137: Issue with Priority with too low values (Krishnan Mahadevan)
151Fixed: GITHUB-2138: Factory calls are not intercepted by IAnnotationTransformer (Krishnan Mahadevan)
152Fixed: GITHUB-2121: SoftAssert: allow custom message (dr29bart)
153Fixed: GITHUB-2110: NPE is thrown when running with Thread affinity (Krishnan Mahadevan)
154Fixed: GITHUB-2069: JUnit TestSuite not handled correctly in Reports (Krishnan Mahadevan)
155Fixed: GITHUB-2075: Thread interrupt flag persists between test methods (Krishnan Mahadevan)
156Fixed: GITHUB-2074: Thread Interrupted when using expectedException (Krishnan Mahadevan)
157Fixed: GITHUB-2802: some methods' javadoc in ISuiteListener and ITestListener is misleading (Yehui Wang)
158Fixed: GITHUB-2061: java.util.ConcurrentModificationException after registration of SuiteListener at the runtime (Krishnan Mahadevan)
159Fixed: GITHUB-2055: It's not possible to register a new ITestListener at the runtime (Krishnan Mahadevan)
160Fixed: GITHUB-1035: @BeforeClass not executed in parallel when parallel="instances" (Krishnan Mahadevan)
161Fixed: GITHUB-2043: IConfigurationListener is not executed and IDataProviderListener is not added to the list of the listeners if a new listener is added at the runtime (Krishnan Mahadevan)
162Fixed: GITHUB-1835: Configurable ThreadPoolExecutor (Krishnan Mahadevan)
163Fixed: GITHUB-1691: Support reading data provider information from Class level @Test annotation (Krishnan Mahadevan)
164Fixed: GITHUB-326: When group-by-instances is set to true the instances created by @Factory does not run in parallel (Krishnan Mahadevan)
165Fixed: GITHUB-1930: Running testng-failed.xml correctly runs failed test in child class but incorrectly runs all tests in base class (Krishnan Mahadevan)
166Fixed: GITHUB-1987: Retrieve the data provider method's reference from the test method (Krishnan Mahadevan)
167Fixed: GITHUB-1976: Add a proper message when types are missing during annotation parsing (Krishnan Mahadevan)
168Fixed: GITHUB-2000: ThreadPoolExecutor ConcurrentModificationException (Krishnan Mahadevan)
169Fixed: GITHUB-2022: Suite.xml files make web request when suite uses DTD over HTTPS (Krishnan Mahadevan)
170Fixed: GITHUB-2017: Don't use child injectors for Guice tests (Joe Barnett)
171New: GITHUB-2003: Add to @Test interface fields IDs and issues (Krishnan Mahadevan)
172Fixed: GITHUB-2009: Test Timeout not respected in parallel="methods" mode (Krishnan Mahadevan)
173Fixed: GITHUB-2008: Preserve parameters in each class and not all of the test parameters
174Fixed: GITHUB-1981: Fixes NPE in Assert.assertEquals when an array contains null (Maneesh MS)
175New: Upgrade to gradle5
176New: Added a method in Assertion class to allow downstream TestNG consumers to override the error message (Ryan Laseter)
177Fixed: GITHUB-165: @AfterGroups is not executed when group member fails or is skipped (Krishnan Mahadevan)
178Fixed: GITHUB-118: @BeforeGroups only called if group is specified explicitly (Krishnan Mahadevan)
179Fixed: GITHUB-182: Inherited test methods do not get expected group behavior (Krishnan Mahadevan)
180Fixed: GITHUB-1988: Add Automatic-Module-Name to MANIFEST.MF (Krishnan Mahadevan)
181Fixed: GITHUB-1985: Custom "IMethodSelector" implementation doesn't filter methods properly (Krishnan Mahadevan)
182Fixed: GITHUB-993: Handle null test names from ITest implementation (Krishnan Mahadevan)
183Fixed: GITHUB-1942: assertDeepEquals takes long time to evaluate size mismatch (Kumaran Bharathan)
184Fixed: GITHUB-1967: IInvokedMethod ITestResult status set as -1 for test methods skipped due to config failure (Krishnan Mahadevan)
185Fixed: GITHUB-1952: Provide a TestNGListener that can be invoked when a test fails due to a timeout (Krishnan Mahadevan)
186Fixed: GITHUB-1953: TestNG throws a misleading error when @Factory method returns empty array. (Krishnan Mahadevan)
187Fixed: GITHUB-1946: Retry analyzer does not work properly when coupled with a data provider (Krishnan Mahadevan)
188Fixed: GITHUB-1924: Testclass instantiation fails when both no-arg constructor and factory method present (Krishnan Mahadevan)
189Fixed: GITHUB-1935: Wrong text for assertEquals (Krishnan Mahadevan)
190Fixed: GITHUB-1931: [NPE] Reporter org.testng.reporters.jq.Main failed (Krishnan Mahadevan, Oleg Shaburov)
191New: Remove raw type warnings in ConversionUtils
192Fixed: GITHUB-1480: Parallel=methods not working when tests have different priorities set (Micah Lapping-Carr)
193Fixed: GITHUB-1041: Factory data-provider parameters not displayed in test-result (Krishnan Mahadevan)
194Fixed: GITHUB-1901: The overall reported Test time for suite containing parallel tests should be max(tests_times) (Krishnan Mahadevan)
195Fixed: GITHUB-1893: Streamline invocation of "init" method within TestResult to be private (Krishnan Mahadevan)
196Fixed: GITHUB-1892: Configurable InvokedMethodListener (Krishnan Mahadevan)
197Fixed: GITHUB-435: Apply <packages> at suite level to all tests (Siegmar Alber)
198Fixed: GITHUB-1870: Fix Ambiguous behavior of IInvokedMethodListener by clarifying javadocs(Krishnan Mahadevan)
199Fixed: GITHUB-1878: Provide visibility into the actual method (config/test) that caused a downstream test to be skipped (Krishnan Mahadevan)
200Fixed: GITHUB-1883: Establish Listener invocation order as tests for documentation purposes (Krishnan Mahadevan)
201Fixed: TestNG doesn't use the searchable loaders for JUnit tests (Igor Ignatev)
202Fixed: GITHUB-1880: @AfterGroups(alwaysRun = true) is not called if there is an exception in @BeforeGroups (Krishnan Mahadevan)
203Fixed: GITHUB-1874: Prevent circular dependency error when suite includes different methods from same class (Krishnan Mahadevan)
204Fixed: GITHUB-1863: IMethodInterceptor will be invoked twice when listener implements both ITestListener and IMethodInterceptor via eclipse execution way.(Bin Wu)
205Fixed: GITHUB-1865: testngXmlPathInJar- cannot be cleared when vm terminate(Yehui Wang)
206Fixed: GITHUB-1850: Parser returns a wrong structure when parent suite has duplicate child suites (Chao Qin)
207Fixed: GITHUB-1803: Added new methods for comparing float and double arrays with delta (Atul Agrawal)
208Fixed: GITHUB-1661: Fixed Assert logic for two dimensional arrays (Atul Agrawal)
209Fixed: GITHUB-1734: Added unit tests for NaN, Max, Min, Positive and Negative infinity (Atul Agrawal)
210Fixed: GITHUB-1740: Bumped up artifact version of dependencies for java 8 support (Atul Agrawal)
211Fixed: GITHUB-1834: Ensure group dependency defined via suite xml is considered (Krishnan Mahadevan)
212New : Expose Graph Visualisation representation for users to build real-time debugging tools (Krishnan Mahadevan)
213Fixed: GITHUB-574: String cannot be cast to Integer if log property is set in maven pom.xml (Krishnan Mahadevan)
214Fixed: GITHUB-1402: TestNG reporting - Quickly identify Retry-d Tests (Krishnan Mahadevan)
215Fixed: GITHUB-1697: Need ability to mark "failed but up for retry" tests differently from "skipped" tests (Krishnan Mahadevan)
216Fixed: GITHUB-1810: Nullpointer exception when running TestNG tests from CMD (Krishnan Mahadevan)
217Fixed: GITHUB-1590: Started configuration method has wrong status and end time during execution (Krishnan Mahadevan)
218Fixed: GITHUB-298: Avoid Javascript errors in function name when suite name has special characters (Krishnan Mahadevan)
219Fixed: GITHUB-1048: Fix validation errors in TestNG CSS to adhere to CSS level 3 + SVG (Krishnan Mahadevan)
220Fixed: GITHUB-341: TestNG does not respect "-parallel classes" when running with a jar file (Krishnan Mahadevan)
221Fixed: GITHUB-1790: IAnnotationTransformer transform method is not called for all test classes annotated with @Test (Krishnan Mahadevan)
222Fixed: GITHUB-1787: Method level parameters are missing when using Yaml generation utilities (Krishnan Mahadevan)
223New : TestNG now guarantees thread-affinity for methods that use either preserve-order (or) dependsOnMethods (Krishnan Mahadevan)
224Fixed: GITHUB-1773: Parallel="classes" executes methods of test class in different threads (Krishnan Mahadevan)
225Fixed: GITHUB-1185: DependsOnMethods made parallel class use several threads (Krishnan Mahadevan)
226Fixed: GITHUB-1173: Parallel="classes" executes methods of test class in different threads (Krishnan Mahadevan)
227Fixed: GITHUB-1066: Regression is in priority. It broke parallel mode (Krishnan Mahadevan)
228Fixed: GITHUB-1050: Parallel classes runs methods from one class in different threads, interleaves two classes in one thread (Krishnan Mahadevan)
229Fixed: GITHUB-89: parallel="classes" is not forcing test methods from the same testClass to be run in the same thread as it is suposed to (Krishnan Mahadevan)
230Fixed: GITHUB-1719: successPercentage does not work correctly for tests with dataProvider (Krishnan Mahadevan)
231Fixed: GITHUB-1241: Streamline Retry Analyzer usage when same test is run multiple times (Krishnan Mahadevan)
232Fixed: GITHUB-1777: ITestListener.onTestStart() not called after fail or skip from @BeforeMethod (Krishnan Mahadevan)
233Fixed: GITHUB-1778: SoftAssert#fail swallows actual root cause (Krishnan Mahadevan)
234Fixed: GITHUB-1665: Failed test after rerun would impact next test case result (Yehui Wang)
235Fixed: GITHUB-1770: Factory annotation does not work with Parameters annotation on method constructor (Krishnan Mahadevan)
236Fixed: GITHUB-1767: Prevent NPE when XmlTest accessed without a proper XmlSuite (Krishnan Mahadevan)
237Fixed: GITHUB-1766: Testng generates a lot of temp folders like testngXmlPathInJar- (Andrey)
238Fixed: GITHUB-1759: core interfaces refactoring to support default methods (Sergey Korol)
239Fixed: GITHUB-1753: TestResult for an SKIP test lose attributes contributed by @BeforeMethod's or @AfterMethod's (Krishnan Mahadevan)
240Fixed: GITHUB-1756: ITest .getTestName() doesn't return the actual test name for skipped methods (Krishnan Mahadevan)
241Fixed: GITHUB-1602: beforeInvocation method don't get called for skipped tests (Krishnan Mahadevan)
242Fixed: GITHUB-549 and GITHUB-780: Introduce onlyForGroups attribute for @BeforeMethod and @AfterMethod (Sergei Tachenov)
243Fixed: GITHUB-1745: Support native injection for @Factory methods (Krishnan Mahadevan)
244Fixed: GITHUB-1746: Make InvokedMethodNameListener thread-safe, fixing occasional build failures (Sergei Tachenov)
245Fixed: GITHUB-1538: Dependent methods don't get invoked when a failed test method is retried via a RetryAnalyser (Krishnan Mahadevan)
246Fixed: GITHUB-426: firstTimeOnly ignored for threadPoolSize > 1 (Krishnan Mahadevan)
247Fixed: GITHUB-466: JUnitReportReporter always converts the system time into GMT (Krishnan Mahadevan)
248Fixed: GITHUB-1723: Standardize timezone reference in XML reports (Krishnan Mahadevan)
249Fixed: GITHUB-489: Incorrect timezone info in <test-method> element of testng-results.xml (Krishnan Mahadevan)
250Fixed: GITHUB-1735: IExecutionListener.onStart() running twice when used as annotation (Krishnan Mahadevan)
251New : Removed deprecated methods across TestNG (Krishnan Mahadevan)
252Fixed: GITHUB-1726: Allow user-defined method interceptors to have the last say in method re-ordering (Krishnan Mahadevan)
253Fixed: GITHUB-564: Support using @Optional on @Test method parameters to use null values (Krishnan Mahadevan)
254New : Upgrade TestNG to start needing at-least JDK8 (Krishnan Mahadevan)
255Fixed: GITHUB-1637: Remove dependency on a pre-created jar for running unit tests for JarFileUtils (Krishnan Mahadevan)
256Fixed: GITHUB-1710: Inefficient DynamicGraph causes hang with only 100 tests. (Steve Prentice)
257Fixed: GITHUB-1716: Potential NPE in jq.Main reporter (Krishnan Mahadevan)
258Fixed: GITHUB-1709: @Ignore doesn't work when used on child class, and parent has @Test methods (Krishnan Mahadevan)
259Fixed: GITHUB-1706: Retrying of methods fail when test method involves native injection (Krishnan Mahadevan)
260New : Removed deprecated attributes from annotations (Julien Herr)
261New : Support all JSR-223 compatible script engine
262Fixed: GITHUB-1827: TestNG does not throw an error when a test class does not have a proper constructor (Julien Herr & Krishnan Mahadevan)
263Fixed: Annotated default methods of indirectly implemented interfaces should still be called (Ilya Korobitsyn)
264New : GITHUB-2105: Include assertEquals(Map, Map) into Assert class
265
2666.14.3
267Fixed: GITHUB-1077: TestNG cannot handle load (Aheiss)
268Fixed: GITHUB-1081: group-by-instances with test dependencies causes instantiation of tests to exponentially slow (Aheiss)
269Fixed: GITHUB-1700: Test ignored if @BeforeMethod in base class fails for another test class (Krishnan Mahadevan)
270Fixed: GITHUB-1694: @BeforeGroups executed multiple times when tests run in parallel, once if not parallel (Krishnan Mahadevan)
271Fixed: GITHUB-1688: @Ignore annotation on base class doesn't ignore tests in child classes (Krishnan Mahadevan)
272Fixed: GITHUB-1687: NullPointerException is thrown when beanshell evaluates to null (Krishnan Mahadevan)
273
2746.14.2
275Fixed: GITHUB-1674: beanshell methodselector applied at suite level is ignored (Krishnan Mahadevan)
276Fixed: GITHUB-1668: "Invalid Method Selector" exception triggered when using suite level beanshell methodselectors (Krishnan Mahadevan)
277Fixed: GITHUB-1659: New line characters are removed from stack traces in testng-results.xml (Krishnan Mahadevan)
278Fixed: GITHUB-1503: Consider adding a -n (no execute) option (Krishnan Mahadevan)
279Fixed: GITHUB-1648: Depends on method is not respected on the sequential run on second test that extends same base testClass (Krishnan Mahadevan)
280Fixed: GITHUB-1636: Parallel test run is not working in 6.13.1 (Krishnan Mahadevan)
281New : GITHUB-1634: Make "-xmlpathinjar" support <suite-files> (Yehui Wang)
282New : GITHUB-1634: Make "-testnames" find tests from Multi-level parent-child suites (Yehui Wang)
283Fixed: GITHUB-1641: The time for test-method is 8 hours ahead of the the time for suite/class in testng-result xml file (Krishnan Mahadevan)
284Fixed: GITHUB-1649: @Test annotated methods cannot inject java.lang.reflect.Method (Krishnan Mahadevan)
285Fixed: GITHUB-1625: Null fields in parallel method tests (Krishnan Mahadevan)
286Fixed: GITHUB-1605: Research the usefulness of the JVM argument "experimental" (Krishnan Mahadevan)
287New : GITHUB-1631: data provider class name injection into Factory meta-data (Sergey Korol)
288
2896.13.1
290No functional changes. Released with newer version JCommander (1.72.0)
291
2926.13
293Fixed: GITHUB-1619: ConcurrentHashMap doesn't secure insertion order.(Yehui Wang)
294Fixed: GITHUB-1616: Test cases with priority and dependsOnGroups dependencies, execution order is chaos. (Yehui Wang)
295Fixed: GITHUB-1613: The constructor removed from TestRunner would stop Eclipse working.(Yehui Wang)
296Fixed: GITHUB-1600: Updated in afterInvocation() testResult.status is not used in willRetry condition (Krishnan Mahadevan)
297Fixed: GITHUB-1598: Injected types parameter and optional parameters cannot be used together. (Yehui Wang)
298Fixed: GITHUB-1594: Cannot filter by "testnames" when suite xml is a suite of suites (Krishnan Mahadevan)
299Fixed: GITHUB-1584: Can't run tests from IDEA (Krishnan Mahadevan)
300Fixed: GITHUB-1589: TestNGAntTask should be consistently using the Ant Log API for writing log messages (Krishnan Mahadevan)
301Fixed: GITHUB-1587: TestNG can not guarantee the ExecutionListener Instance as singleton(Yehui Wang)
302Fixed: GITHUB-217: exception in DataProvider doesn't fail test run (Krishnan Mahadevan)
303Fixed: GITHUB-987: Parameters threadCount and parallel doesn't work with maven (Krishnan Mahadevan)
304Fixed: GITHUB-1472: Optimize DynamicGraph.getUnfinishedNodes (Krishnan Mahadevan & Nathan Reynolds)
305Fixed: GITHUB-1566: Invalid XML characters in Params in testng-results.xml (Krishnan Mahadevan)
306Fixed: GITHUB-1554: @Parameters and parameter injection not wroking when used on the same method (Krishnan Mahadevan)
307Fixed: GITHUB-990: NullPointerExceptions after a superclass configuration method fails with configfailurepolicy="continue" (Krishnan Mahadevan)
308Fixed: GITHUB-461 : Annotate annotations with @Documented (Krishnan Mahadevan)
309Fixed: GITHUB-778 : XmlSuite toXml() does NOT add the suite time-out property (Krishnan Mahadevan)
310Fixed: GITHUB-1029: Issue with getting XmlTest from test method (Krishnan Mahadevan)
311Fixed: GITHUB-212: Enable support for providing a URI as suite file location (Krishnan Mahadevan)
312Fixed: GITHUB-161 : Provide a way to customize SAXParserFactory implementation (Krishnan Mahadevan)
313Fixed: GITHUB-1455: Configure XML output of XmlSuite (Krishnan Mahadevan)
314Fixed: GITHUB-1465: Failure policy CONTINUE handling is broken for tests that are skipped in @BeforeMethod method (Krishnan Mahadevan)
315Fixed: GITHUB-1533: Duplicate child suites get added when working with parent/child suite scenario (Krishnan Mahadevan)
316Fixed: GITHUB-949: dependsOnMethods with alwaysRun = true and inheritance fails to find method (Krishnan Mahadevan)
317Fixed: GITHUB-1519: Possibility to retry a test until it FAILED (Krishnan Mahadevan)
318Fixed: GITHUB-980: TestNG run inherited method twice (Krishnan Mahadevan)
319Fixed: GITHUB-1409: Regression: on expectedExceptionsMessageRegExp expected and actual messages are not printed (Krishnan Mahadevan)
320Fixed: GITHUB-1517: TestNG exits with a zero when there are configuration failures (Krishnan Mahadevan)
321New : GITHUB-1490: Add a listener for data provider interception (Krishnan Mahadevan)
322Fixed: GITHUB-1456: Remove/Warn support of constructor with String param (Krishnan Mahadevan)
323Fixed: GITHUB-1509: Improve error message when data provider returns a null value (Krishnan Mahadevan)
324Fixed: GITHUB-1507: TestNG runs all methods when filtering via <include> fails (Krishnan Mahadevan)
325Fixed: GITHUB-1493: Wrong exception msg when timeout on test (Krishnan Mahadevan)
326Fixed: GITHUB-328: Attempt to fix unnecessary execution of @Factory-ctors (@beverage & Julien Herr)
327Fixed: GITHUB-1384: Huge performance issue between 6.5.2 and 6.11 (Denis Bazhenov)
328New: Remove Serializable (Julien Herr)
329Fixed: GITHUB-1496: If method contains "$", run only one method, all methods will be run (@JF-Rabbit & Julien Herr)
330Fixed: GITHUB-1220: Recognize annotations on default methods in implemented interface
331New: GITHUB-861: Add @Ignore annotation which disables all tests in a class or a package (Julien Herr)
332
3336.12
334Fixed: GITHUB-1484: Remove irrelevant "targets" for TestNG annotations (Krishnan Mahadevan)
335Fixed: GITHUB-1405: Skip considering main() method when @Test used at class level (Krishnan Mahadevan)
336Fixed: GITHUB-799: @Factory with dataProvider changes order of iterations (Krishnan Mahadevan & Julien Herr)
337New: Enhance XML Reporter to be able to customize the file name (Krishnan Mahadevan)
338Fixed: GITHUB-1417: Class param injection is not working with @BeforeClass (Krishnan Mahadevan)
339Fixed: GITHUB-1440: Improve error message when wrong params on configuration methods (Krishnan Mahadevan)
340Fixed: GITHUB-1433: Missing encoding for emailable reports (Shaburov Oleg)
341Fixed: GITHUB-1430: Cannot load class from file XXX when using with ant and classfileset (Olivier Mourez)
342Fixed: GITHUB-1394: Optimize ClassHelper.getAvailableMethods() to exclude Object class(Nathan Reynolds & Krishnan Mahadevan)
343Fixed: GITHUB-1396: Order established by IMethodInterceptor not honored when running with parallel='instances' (Ryan Scott)
344Fixed: GITHUB-1287: Parallel (methods) execution with dependsOn running in unexpected order (Kevyn Reinholt)
345Fixed: GITHUB-1362: Ensure AfterGroups methods get executed when involving Method Interceptors (Krishnan Mahadevan)
346Fixed: GITHUB-765: Skip invocation of bridged methods (Krishnan Mahadevan)
347New: Enhance TestNGAntTask to be customizable (Denys Kurylenko)
348New: Make EmailableReporter2 W3C Compliant[XHTML 1.1] (Chris Rankin)
349Fixed: GITHUB-1336: (parallel=‘classes’) not working when coupled with priority (Krishnan Mahadevan)
350Fixed: GITHUB-1365: Be able to override default XML parser (@ChristiKh & Julien Herr)
351Fixed: GITHUB-1360: TestNG does not distinguish between methods of different priorities (Krishnan Mahadevan)
352Fixed: GITHUB-1144: Add Class and Constructor as legal native dependency injection (Guillaume Juillot)
353Fixed: GITHUB-1380: Circular dependencies may fail in parallel (Julien Herr)
354Fixed: GITHUB-1400: TestNG, Multiple duplicate listener warnings on implementing multiple listener interfaces (@bipo1980 & Nick Tan)
355Fixed: GITHUB-1426: @AfterMethod(alwaysRun = true) is not getting called if we have exception in @BeforeMethod (@dipak-pawar)
356Fixed: GITHUB-128: Using Object[] and Method as parameters for a test in a certain order yields an IllegalArgumentException, citing a type mismatch (@leef590 & Julien Herr,Krishnan Mahadevan)
357Fixed: GITHUB-1393: Revert commit 50d534a to allow fail a test from onTestStart method
358Fixed: GITHUB-1461: TestNG not getting garbage collected (@kiru)
359
3606.11
3612017/02/27
362Fixed: GITHUB-1351: FailurePolicy failing with YAML (Steven Zaluk & Julien Herr)
363New: The name of all TestNG threads follow "TestNG-<thread type>-<number>" pattern (Julien Herr)
364Fixed: GITHUB-1339: Alter ClassHelper to use Maps instead of Lists for extracting methods (Krishnan Mahadevan)
365Fixed: GITHUB-1338: @BeforeGroups method is run on a wrong instance (Pavel Vetokhin & Julien Herr)
366Fixed: GITHUB-1332: Make EmailableReport name configurable (Krishnan Mahadevan)
367Fixed: GITHUB-1297: testng-failed.xml includes setup and tearDown (before and after annotations) of passed tests
368(Krishnan Mahadevan)
369Fixed: GITHUB-1319: ITestResult#getInstance() returns null in IConfigurationListener implementation (Krishnan Mahadevan)
370New: Skipped methods are not supposed to be executed (Julien Herr)
371Fixed: GITHUB-1197: Ability to dynamically set the status and exception of a test via ITestResult (Anthony Nguyen)
372Fixed: GITHUB-1302: When 'parallel' is set to 'classes', ConcurrentModificationException can be thrown(Jianhua Li)
373Fixed: GITHUB-772: Severe thread contention while running large test with parallel methods (Shaburov Oleg)
374Fixed: GITHUB-1307: TestNGException when using an anonymous class in Factory (Mike Cowan)
375Fixed: GITHUB-1298: ITestResult injection is failing in BeforeMethod method (Krishnan Mahadevan)
376Fixed: GITHUB-1293: Beanshell based execution does not work any more (Krishnan Mahadevan)
377Fixed: GITHUB-1262: Testcases out of order in XML file in junitreport folder when using testng (Krishnan Mahadevan)
378Fixed: GITHUB-116 : BaseTestMethod does respect general contract of Comparable (Testo Nakada)
379Fixed: GITHUB-1265: JUnit Reporter includes redundant ignored methods (Krishnan Mahadevan)
380Fixed: GITHUB-1266: JUnit Reporter produces a wrong number of total test methods (Krishnan Mahadevan)
381Fixed: GITHUB-1257: Group parameter not applying on included <suite-files>
382Fixed: GITHUB-1284: Listeners on the child suites are not applied (Vimalraj Selvam)
383New: GITHUB-1313: Add Java9 as test environment on Travis (Julien Herr)
384Fixed: GITHUB-1296: Configuration listeners run multiple times (@mikimrozowski & Julien Herr)
385Fixed: GITHUB-1300: Add deep assertions to assert on array values (array reference by default) (Jordan Zimmerman & Julien Herr)
386
3876.10
3882016/11/28
389Fixed: GITHUB-551: Failed configuration method always has 0 execution time (dr29bart)
390Fixed: GITHUB-1250: Testng-failed.xml is getting test level parameters into suite level parameters (Krishnan Mahadevan)
391Fixed: GITHUB-1046: Provide a mechanism to customize a test method name for reporting (Krishnan Mahadevan)
392Fixed: GITHUB-1211: Include disabled/ ignored test methods in JUnit reports (Krishnan Mahadevan)
393Fixed: GITHUB-1213: Include "ignored" test count in testng-results.xml (Krishnan Mahadevan)
394Fixed: GITHUB-674: Enrich Test method skips due to configuration failures with throwable data (Krishnan Mahadevan)
395Fixed: GITHUB-1240: Enrich the test results showing mechanism in Travis CI (Krishnan Mahadevan)
396Fixed: GITHUB-1232: Prevent TestNG from adding duplicate instances of the same listener (Krishnan Mahadevan)
397Fixed: GITHUB-1170: Fixing the test DataProviderTest.shouldNotThrowConcurrentModification (Krishnan Mahadevan)
398Fixed: GITHUB-1231: Make IExecutionListener implementation be the last reporter call before JVM exit(Krishnan Mahadevan)
399Fixed: GITHUB-1227: Prevent multiple instances of same Reporter from being injected into TestNG (Krishnan Mahadevan)
400Fixed: GITHUB-1165: Better message to user when param injection is not good (Krishnan Mahadevan)
401Fixed: GITHUB-1228: Control stacktrace levels in XmlReports via a JVM configuration (Krishnan Mahadevan)
402Fixed: GITHUB-1203: Add flush to BufferedWriter; fixes incomplete XML reports (Nathan Bruning)
403Fixed: GITHUB-1181: Fix MethodMatcherException: Data provider mismatch (Krishnan Mahadevan)
404Fixed: GITHUB-1107: TestNG does not report/print/log throwables in data providers (Krishnan Mahadevan)
405Fixed: GITHUB-1186: NullPointerException in JUnit reporter when used with Spock (Ian Robertson & Julien Herr)
406Fixed: GITHUB-1180: NullPointerException on getting excluded/included groups (Krishnan Mahadevan)
407Fixed: GITHUB-1064: Incorrect logging of parallel mode of a test
408Fixed: GITHUB-1178: Halt execution when invalid testname is provided. (Krishnan Mahadevan)
409Fixed: GITHUB-1139: DataProvider could support Object[] as a valid return type (Julien Herr)
410Fixed: GITHUB-1182: Cannot run multiple @Factory-annotated methods in the same class (Ian Donovan & Julien Herr)
411New: Hierarchy on order features (from less important to more important): groupByInstance, preserveOrder, priority, dependsOnGroups, dependsOnMethods
412Fixed: GITHUB-1156: test execution dependant upon class name order and fails with TestNGException: No free nodes found (@t-weil & Julien Herr)
413Fixed: GITHUB-1221: ConcurrentModificationException in TextReporter (Nick Tan)
414Fixed: testng-eclipse/issues/298: IConfigurationListener was not loaded when running Test in Eclipse Plugin (@jmcgrail & Nick Tan)
415New: Resources for test reports (header, images) now live in a sub directory org/testng to remove conflicts with other similar files in the class loader.
416
4176.9.13.6
4182016/09/23
419
4206.9.13.5 (Bad release)
4212016/09/23
422
4236.9.13.4 (Bad release: Wrong internal version)
4242016/09/22
425
4266.9.13.3 (Ok, but too many direct dependencies)
4272016/09/22
428
4296.9.13.2 (Bad release: Wrong internal version)
4302016/09/20
431
4326.9.13.1 (Bad release: fat jar)
4332016/09/19
434
4356.9.13 (Bad release: JDK8 target only)
4362016/09/16
437
438New: code improvement in order to calculate key for dependency map. Dependency map will use methodQualifiedName as key provided by ITestNGMethod (Chirag Jayswal)
439Fixed: GITHUB-1105: Test skipped instead failed if incorrect enum value (Liza Ivanova & Julien Herr)
440Fixed: GITHUB-1111: XMLReporter crashes if a test parameter is exactly "]]>" (Łukasz Rekucki & Julien Herr)
441Fixed: GITHUB-1108 @BeforeGroups called twice (Krishnan Mahadevan)
442Fixed: GITHUB-1112 XmlInclude.getDescription returns null always (Krishnan Mahadevan)
443Fixed: GITHUB-1090 Inconsistent handling "preserve-order" on suite/test level (Michal Domagala & Julien Herr)
444Fixed: GITHUB-1085 Remove Guava dependency (Erik C. Thauvin & Julien Herr)
445Fixed: GITHUB-1084 Using deprecated addListener methods should not register many times (Anna Kozlova & Julien Herr)
446Fixed: GITHUB-447 Copy test parameters instead of storing a reference (Huagang Li & Julien Herr)
447Fixed: GITHUB-174: NPE when parsing xml where <suite> has <groups> (Peter Stout & Julien Herr)
448Fixed: GITHUB-918: NullPointerException on loading XmlSuites programmatically (@ispitkovskyi & Julien Herr)
449Fixed: GITHUB-689: <groups> at <suite> level not applied to <suite-files> (@kunal546 & Julien Herr)
450Fixed: GITHUB-740: More than one execution even when success with DataProvider and IRetryAnalyzer (Sergio Sacristán)
451Fixed: GITHUB-877: Retries don't work correctly with DataProvider tests (Simonas Tvirbutas)
452Fixed: GITHUB-1103: Add ...junit.ArrayAsserts.assertArrayEquals(boolean[], boolean[]) (Jonathan Halterman & Julien Herr)
453Fixed: GITHUB-1122: Use the default value for preserve-order (Guillaume Guillot & Julien Herr)
454Fixed: GITHUB-1022: Non static methods from external data providers are not working without @Guice (Sourav Chandra & Julien Herr)
455Fixed: GITHUB-1130: IClassListener should only be instantiated once (Guillaume Guillot & Julien Herr)
456Fixed: GITHUB-1131: IObjectFactory not being called for factory test instances with constructor-injected data provider (Scott McClure & Julien Herr)
457New: GITHUB-1083: Factory supports indices (Julien Herr)
458Fixed: GITHUB-148: 'Run Failed Test' doesn't run the proper tests after 2nd rerun when DataProvider is used (@akracheva & Julien Herr)
459
4606.9.12
4612016/06/21
462
2Fixed: GITHUB-1017 Reporter.log is ignored in skipped test listener (Scott Kirkpatrick)463Fixed: GITHUB-1017 Reporter.log is ignored in skipped test listener (Scott Kirkpatrick)
3New: Minimal code changes to allow TestNG to work for OpenJDK tests, which should be run with only the java.base module present.464New: Minimal code changes to allow TestNG to work for OpenJDK tests, which should be run with only the java.base module present.
4Fixed: GITHUB-1047 IClassListener didn't work (Julien Herr)465Fixed: GITHUB-1047 IClassListener didn't work (Julien Herr)
@@ -153,9 +614,9 @@ Added: Allow injection of java.lang.reflect.Constructor and org.testng.ITestNGMe
153Fixed: Assertions in the Assertions class were not failing properly.614Fixed: Assertions in the Assertions class were not failing properly.
154Fixed: GITHUB-337: ConfigurationMethod#m_instance set to Boolean.FALSE due to incorrect constructor call in clone() + auto-boxing (davidely)615Fixed: GITHUB-337: ConfigurationMethod#m_instance set to Boolean.FALSE due to incorrect constructor call in clone() + auto-boxing (davidely)
155Fixed: Fix NPE for dependency methods/groups (Krishnan Mahadevan)616Fixed: Fix NPE for dependency methods/groups (Krishnan Mahadevan)
156Fixed: preserve-order bug (found by VladSarrokhin). 617Fixed: preserve-order bug (found by VladSarrokhin).
157Fixed: GITHUB-300: OutOfMemoryException from reporters when there are a lot of tests618Fixed: GITHUB-300: OutOfMemoryException from reporters when there are a lot of tests
158Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified 619Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified
159Fixed: GITHUB-107: Allow enum values without converting them to uppercase.620Fixed: GITHUB-107: Allow enum values without converting them to uppercase.
160Fixed: @Guice with no modules specified is now supported621Fixed: @Guice with no modules specified is now supported
161Fixed: Reporter.log() invoked from listeners were being discarded622Fixed: Reporter.log() invoked from listeners were being discarded
@@ -172,7 +633,7 @@ Added: Big performance improvement when generating the reports (Frank Pavageau)
172Added: <dependencies> allows you to specify group dependencies in testng.xml633Added: <dependencies> allows you to specify group dependencies in testng.xml
173Added: Blow up early if trying to include/exclude an unknown method634Added: Blow up early if trying to include/exclude an unknown method
174Added: <parameters> can now be specified under <include> (Storm Qi)635Added: <parameters> can now be specified under <include> (Storm Qi)
175Added: GITHUB-243: Add Reporter Output per Test in XMLReporter (dunse) 636Added: GITHUB-243: Add Reporter Output per Test in XMLReporter (dunse)
176Fixed: Better HTML escaping of the stack traces637Fixed: Better HTML escaping of the stack traces
177Fixed: The failed assertions now use [] as delimiters instead of <> (better for the HTML reports)638Fixed: The failed assertions now use [] as delimiters instead of <> (better for the HTML reports)
178Fixed: GITHUB-237: Wrong time format in XML reporter639Fixed: GITHUB-237: Wrong time format in XML reporter
@@ -357,7 +818,7 @@ Eclipse:
357Added: New quick fix "Add static import org.testng.AssertJUnit.assertXXX"818Added: New quick fix "Add static import org.testng.AssertJUnit.assertXXX"
358Added: New workspace wide setting: excluded stack traces, to provide shorter stack traces in the view819Added: New workspace wide setting: excluded stack traces, to provide shorter stack traces in the view
359Added: New "Clear results" icon in the tool bar820Added: New "Clear results" icon in the tool bar
360Added: When the search filter is modified, don't update the tree live if it is too big 821Added: When the search filter is modified, don't update the tree live if it is too big
361Added: Two new @Test refactorings (pull to class level, push to method level)822Added: Two new @Test refactorings (pull to class level, push to method level)
362Added: JUnit conversion: @Ignore823Added: JUnit conversion: @Ignore
363Added: JUnit conversion: assertArrayEquals()824Added: JUnit conversion: assertArrayEquals()
@@ -501,10 +962,10 @@ Added: -testnames (command line) and testnames (ant)
501Added: New ant task tag: propertyset (Todd Wells)962Added: New ant task tag: propertyset (Todd Wells)
502Added: ITestNGListenerFactory963Added: ITestNGListenerFactory
503Added: Passing command line properties via the ant task and doc update (Todd Wells)964Added: Passing command line properties via the ant task and doc update (Todd Wells)
504Added: Hierarchical XmlSuites (Nalin Makar) 965Added: Hierarchical XmlSuites (Nalin Makar)
505Added: Reporter#clear()966Added: Reporter#clear()
506Fixed: NullPointerException when a suite produces no results (Cefn Hoile)967Fixed: NullPointerException when a suite produces no results (Cefn Hoile)
507Fixed: Identical configuration methods were not always invoked in the correct order in superclasses (Nalin Makar) 968Fixed: Identical configuration methods were not always invoked in the correct order in superclasses (Nalin Makar)
508Fixed: @DataProvider(parallel = true) was passing incorrect parameters with injection969Fixed: @DataProvider(parallel = true) was passing incorrect parameters with injection
509Fixed: Replaced @Test(sequential) with @Test(singleThreaded)970Fixed: Replaced @Test(sequential) with @Test(singleThreaded)
510Fixed: If inherited configuration methods had defined deps, they could be invoked in incorrect order (Nalin Makar)971Fixed: If inherited configuration methods had defined deps, they could be invoked in incorrect order (Nalin Makar)
@@ -521,9 +982,9 @@ Fixed: Issue78 NPE with non-public class. Now throws TestNG exception
521Fixed: NPE with @Optional null parameters (Yves Dessertine)982Fixed: NPE with @Optional null parameters (Yves Dessertine)
522Fixed: TESTNG-387 TestNG not rerunning test method with the right data set from Data Provider (Francois Reynaud)983Fixed: TESTNG-387 TestNG not rerunning test method with the right data set from Data Provider (Francois Reynaud)
523Fixed: Show correct number of pass/failed numbers for tests using @DataProvider984Fixed: Show correct number of pass/failed numbers for tests using @DataProvider
524Fixed: Return correct method status and exception (if any) in InvokedMethodListener.afterInvocation() 985Fixed: Return correct method status and exception (if any) in InvokedMethodListener.afterInvocation()
525Fixed: Trivial fixes: TESTNG-241 (log message at Info), Issue2 (throw SAXException and not NPE for invalid testng xml) 986Fixed: Trivial fixes: TESTNG-241 (log message at Info), Issue2 (throw SAXException and not NPE for invalid testng xml)
526Fixed: Configuration methods couldn't depend on an abstract method (Nalin Makar) 987Fixed: Configuration methods couldn't depend on an abstract method (Nalin Makar)
527Fixed: TestNG#setTestClasses was not resetting m_suites988Fixed: TestNG#setTestClasses was not resetting m_suites
528Fixed: Exceptions thrown by IInvokedMethodListeners were not caught (Nalin Makar)989Fixed: Exceptions thrown by IInvokedMethodListeners were not caught (Nalin Makar)
529Fixed: @Listeners now works on base classes as well990Fixed: @Listeners now works on base classes as well
@@ -567,7 +1028,7 @@ Eclipse:
567Added: New file wizard: can now create a class with annotations, including @DataProvider1028Added: New file wizard: can now create a class with annotations, including @DataProvider
568Added: You can now select multiple XML suites to be run in the launch dialog1029Added: You can now select multiple XML suites to be run in the launch dialog
569Fixed: @Test(groups = <constant>) was taking name of the constant instead of its value.1030Fixed: @Test(groups = <constant>) was taking name of the constant instead of its value.
570Fixed: http://jira.codehaus.org/browse/GRECLIPSE-476 NPE with Groovy Tests (Andrew Eisenberg)1031Fixed: https://jira.codehaus.org/browse/GRECLIPSE-476 NPE with Groovy Tests (Andrew Eisenberg)
571Fixed: The custom XML file is now created in the temp directory instead of inside the project1032Fixed: The custom XML file is now created in the temp directory instead of inside the project
572Fixed: In the launch dialog, now display an error if trying to pick groups when no project is selected1033Fixed: In the launch dialog, now display an error if trying to pick groups when no project is selected
573Fixed: Was not setting the parallel attribute correctly on the temporary XML file1034Fixed: Was not setting the parallel attribute correctly on the temporary XML file
@@ -638,8 +1099,8 @@ Fixed: Quick fixes no longer introduce deprecated annotations (Greg Turnquist)
6385.910995.9
6392009/04/0911002009/04/09
6401101
641Added: New ant task boolean flag: delegateCommandSystemProperties (Justin) 1102Added: New ant task boolean flag: delegateCommandSystemProperties (Justin)
642Added: skipfailedinvocations under <suite> in testng-1.0.dtd (Gael Marziou / Stevo Slavic) 1103Added: skipfailedinvocations under <suite> in testng-1.0.dtd (Gael Marziou / Stevo Slavic)
643Added: -testrunfactory on the command line and in the ant task (Vitalyi Pamajonkov)1104Added: -testrunfactory on the command line and in the ant task (Vitalyi Pamajonkov)
644Added: TESTNG-298: parallel="classes", which allows entire classes to be run in the same thread1105Added: TESTNG-298: parallel="classes", which allows entire classes to be run in the same thread
645Added: @BeforeMethod can now declare Object[] as a parameter, which will be filled by the parameters of the test method1106Added: @BeforeMethod can now declare Object[] as a parameter, which will be filled by the parameters of the test method
@@ -732,10 +1193,10 @@ Added: ISuite now gives access to the current XmlSuite
732Fixed: TESTNG-139 dependsOnMethods gets confused when dependency is "protected"1193Fixed: TESTNG-139 dependsOnMethods gets confused when dependency is "protected"
733Fixed: TESTNG-141 junit attribute set to false in testng-failed.xml when it should be true1194Fixed: TESTNG-141 junit attribute set to false in testng-failed.xml when it should be true
734Fixed: TESTNG-142 Exceptions in DataProvider are not reported as failed test1195Fixed: TESTNG-142 Exceptions in DataProvider are not reported as failed test
735Added: Improved behavior for @Before/@AfterClass when using @Factory 1196Added: Improved behavior for @Before/@AfterClass when using @Factory
736(http://forums.opensymphony.com/thread.jspa?threadID=6594&messageID=122294#122294)1197(https://forums.opensymphony.com/thread.jspa?threadID=6594&messageID=122294#122294)
737Added: Support for concurrent execution for invocationCount=1 threadPoolSize>1 and @DataProvider1198Added: Support for concurrent execution for invocationCount=1 threadPoolSize>1 and @DataProvider
738(http://forums.opensymphony.com/thread.jspa?threadID=64738&tstart=0)1199(https://forums.opensymphony.com/thread.jspa?threadID=64738&tstart=0)
739Added: New TestNG specific XML report, generated by default in 'xml' subdirectory of test-output1200Added: New TestNG specific XML report, generated by default in 'xml' subdirectory of test-output
740Added: support in strprotocol for passing the ITest.getTestName() information1201Added: support in strprotocol for passing the ITest.getTestName() information
741Fixed: TESTNG-152 If DataProvider is not found, the exception message should tell exactly what happened1202Fixed: TESTNG-152 If DataProvider is not found, the exception message should tell exactly what happened
@@ -768,7 +1229,7 @@ Added: Method selectors receive a Context and can stop the chain with setStopped
768Fixed: XmlMethodSelector was always run first regardless of its priority1229Fixed: XmlMethodSelector was always run first regardless of its priority
769Added: @BeforeGroups/@AfterGroups can live in classes without @Test methods1230Added: @BeforeGroups/@AfterGroups can live in classes without @Test methods
770Added: DataProvider can now take an ITestContext parameter1231Added: DataProvider can now take an ITestContext parameter
771Fixed: Wasn't parsing <selector-class-name> correctly 1232Fixed: Wasn't parsing <selector-class-name> correctly
772Fixed: Annotation Transformers now work on class-level annotations1233Fixed: Annotation Transformers now work on class-level annotations
773Fixed: Some class-level @Test attributes were not always honored1234Fixed: Some class-level @Test attributes were not always honored
774Added: Clean separation between @Test invocation events and @Configuration invocation events1235Added: Clean separation between @Test invocation events and @Configuration invocation events
@@ -805,7 +1266,7 @@ Eclipse plug-in
805Fixed: groups with multi-attribute javadoc annotations1266Fixed: groups with multi-attribute javadoc annotations
806Fixed: consistent behavior for dependsOnMethods1267Fixed: consistent behavior for dependsOnMethods
807Fixed: consistent behavior for tests with dependsOnGroups (a warning is emitted)1268Fixed: consistent behavior for tests with dependsOnGroups (a warning is emitted)
808Fixed: consistent merge of configuration arguments when an existing launch configuration exists 1269Fixed: consistent merge of configuration arguments when an existing launch configuration exists
809===========================================================================1270===========================================================================
8105.312715.3
8112006/10/3012722006/10/30
@@ -855,7 +1316,7 @@ Fixed: Throw proper exception when a DataProvider declares parameters
855Added: completely revamped JUnit support (should run all kind of JUnit tests)1316Added: completely revamped JUnit support (should run all kind of JUnit tests)
856Fixed: TESTNG-40 (Bug in testng-failed.xml generation)1317Fixed: TESTNG-40 (Bug in testng-failed.xml generation)
857Fixed: TESTNG-106 (Failed "@BeforeSuite" method just skipps the last test in xml-file)1318Fixed: TESTNG-106 (Failed "@BeforeSuite" method just skipps the last test in xml-file)
858Fixed: Success on 0 tests (http://forums.opensymphony.com/thread.jspa?threadID=41213)1319Fixed: Success on 0 tests (https://forums.opensymphony.com/thread.jspa?threadID=41213)
8591320
860Eclipse plug-in1321Eclipse plug-in
861Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable1322Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable
@@ -867,7 +1328,7 @@ Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable
867Added: @Test(sequential = true)1328Added: @Test(sequential = true)
868Fixed: TESTNG-102 (Incorrect ordering of @BeforeMethod calls when a dependency is specified)1329Fixed: TESTNG-102 (Incorrect ordering of @BeforeMethod calls when a dependency is specified)
869Fixed: TESTNG-101 (HTML output contains nested <P> tags and a missing <tr> tag)1330Fixed: TESTNG-101 (HTML output contains nested <P> tags and a missing <tr> tag)
870Added: support for specifying test-only classpath (http://forums.opensymphony.com/thread.jspa?messageID=78048&tstart=0)1331Added: support for specifying test-only classpath (https://forums.opensymphony.com/thread.jspa?messageID=78048&tstart=0)
871Fixed: TESTNG-93 (method selectors filtering @BeforeMethod)1332Fixed: TESTNG-93 (method selectors filtering @BeforeMethod)
872Fixed: TESTNG-81 (Assert.assertFalse() displays wrong expected, actual value)1333Fixed: TESTNG-81 (Assert.assertFalse() displays wrong expected, actual value)
873Fixed: TESTNG-59 (multiple method selectors usage results in no tests run)1334Fixed: TESTNG-59 (multiple method selectors usage results in no tests run)
@@ -909,7 +1370,7 @@ Added: Can now specify listener classes
9095.0.113705.0.1
9101371
911Fixed: reports generated by SuiteHTMLReporter do not work with JDK1.41372Fixed: reports generated by SuiteHTMLReporter do not work with JDK1.4
912 1373
913===========================================================================1374===========================================================================
9141375
9155.013765.0
@@ -921,9 +1382,9 @@ Added: Link to testng.xml in the reports
921Added: New structure for reports, suites go in their individual directory1382Added: New structure for reports, suites go in their individual directory
922Added: @Test(suiteName) and @Test(testName)1383Added: @Test(suiteName) and @Test(testName)
923Added: The stack traces in reports do not include TestNG frames (system property testng.exception)1384Added: The stack traces in reports do not include TestNG frames (system property testng.exception)
924 (see: http://groups.google.com/group/testng-dev/browse_thread/thread/9f4d46ade10b0fda)1385 (see: https://groups.google.com/group/testng-dev/browse_thread/thread/9f4d46ade10b0fda)
925Fixed: Exit with error when no methods are run1386Fixed: Exit with error when no methods are run
926 (see: http://groups.google.com/group/testng-dev/browse_thread/thread/3c26e8a5658f22ac)1387 (see: https://groups.google.com/group/testng-dev/browse_thread/thread/3c26e8a5658f22ac)
927Added: List of methods in alphabetical order1388Added: List of methods in alphabetical order
928Fixed: Class-scoped annotations were not recognized when inherited1389Fixed: Class-scoped annotations were not recognized when inherited
929Added: Deprecated @Configuration and introduced @BeforeSuite/Test/Class/TestMethod1390Added: Deprecated @Configuration and introduced @BeforeSuite/Test/Class/TestMethod
@@ -951,14 +1412,14 @@ Added: if patch-testng-sourcedir.properties is found in the classpath
951Added: Maven 2 plug-in1412Added: Maven 2 plug-in
952Fixed: Message formattings in TestNG assertion utility class1413Fixed: Message formattings in TestNG assertion utility class
953Fixed: @Factory methods were counted as @Test as well1414Fixed: @Factory methods were counted as @Test as well
954 http://jira.opensymphony.com/browse/TESTNG-511415 https://jira.opensymphony.com/browse/TESTNG-51
955Fixed: All DataProvider parameters were shown in the HTML report1416Fixed: All DataProvider parameters were shown in the HTML report
956Fixed: Bug in testng-failed.xml generation1417Fixed: Bug in testng-failed.xml generation
957Fixed: <packages> bug when using a jar file to load the test classes1418Fixed: <packages> bug when using a jar file to load the test classes
958Added: alwaysRun for before @Configuration methods1419Added: alwaysRun for before @Configuration methods
959 http://jira.opensymphony.com/browse/TESTNG-351420 https://jira.opensymphony.com/browse/TESTNG-35
960Fixed: groupless @Configurations were not invoked if a method depends on a group1421Fixed: groupless @Configurations were not invoked if a method depends on a group
961 http://jira.opensymphony.com/browse/TESTNG-451422 https://jira.opensymphony.com/browse/TESTNG-45
962Added: beforeGroups/afterGroups to @Configuration1423Added: beforeGroups/afterGroups to @Configuration
9631424
964Eclipse plugin:1425Eclipse plugin:
@@ -994,8 +1455,8 @@ Fixed: TESTNG-24: 'Run as testng test' does not appear of the Test annotation do
994Fixed: TESTNG-18: Eclipse plugin ignores Factory annotation1455Fixed: TESTNG-18: Eclipse plugin ignores Factory annotation
995Fixed: TESTNG-21: Show differences when double clicking assertion exceptions1456Fixed: TESTNG-21: Show differences when double clicking assertion exceptions
996Added: UI allows setting orientation (even more space)1457Added: UI allows setting orientation (even more space)
997 http://forums.opensymphony.com/thread.jspa?threadID=17225&messageID=33805#338051458 https://forums.opensymphony.com/thread.jspa?threadID=17225&messageID=33805#33805
998 1459
999===========================================================================1460===========================================================================
10001461
10014.514624.5
@@ -1098,8 +1559,8 @@ Fixed: dependsOnGroups wasn't working on regular expressions
1098Fixed: Bug in <package> when directories contain spaces in their names1559Fixed: Bug in <package> when directories contain spaces in their names
1099Fixed: Introduced a JDK5 dependency in the JDK1.4 build (getEnclosingClass())1560Fixed: Introduced a JDK5 dependency in the JDK1.4 build (getEnclosingClass())
1100Fixed: Output directory in ant task was not honored if it didn't exist1561Fixed: Output directory in ant task was not honored if it didn't exist
1101Fixed: Problem with timeout according to 1562Fixed: Problem with timeout according to
1102 http://forums.opensymphony.com/thread.jspa?threadID=67071563 https://forums.opensymphony.com/thread.jspa?threadID=6707
11031564
1104Eclipse plug-in:1565Eclipse plug-in:
11051566
@@ -1108,7 +1569,7 @@ Fixed: Bug in QuickFix implementation
1108Added: Quick Fix for JUnit conversion (Annotations and JavaDoc)1569Added: Quick Fix for JUnit conversion (Annotations and JavaDoc)
1109Fixed: Methods Run as TestNG test1570Fixed: Methods Run as TestNG test
1110Added: Package level Run as TestNG test1571Added: Package level Run as TestNG test
1111Fixed: Resources from the linked directories are using a wrong path when 1572Fixed: Resources from the linked directories are using a wrong path when
1112 passed to command line TestNG1573 passed to command line TestNG
11131574
1114IDEA plug-in:1575IDEA plug-in:
@@ -1173,7 +1634,7 @@ Fixed: TestNGException thrown when TestNG conditions are not fulfilled
11731634
1174Documentation:1635Documentation:
1175- New assert classes1636- New assert classes
1176- New ways to launch 1637- New ways to launch
1177- JUnitConverter documentation1638- JUnitConverter documentation
1178- new beforeSuite/afterSuite1639- new beforeSuite/afterSuite
11791640
@@ -1255,7 +1716,7 @@ Added: <fileset> to <testng>
12551716
12561.017171.0
12572004/04/2817182004/04/28
1258http://beust.com/weblog/2004/04/28/1719https://beust.com/weblog/2004/04/28/
12591720
1260Fixed: Updated to the new DTD1721Fixed: Updated to the new DTD
1261Fixed: Suite table of contents displays failures first1722Fixed: Suite table of contents displays failures first
diff --git a/CHECKLIST b/CHECKLIST
1262deleted file mode 1006441723deleted file mode 100644
index e9488f1..0000000
--- a/CHECKLIST
+++ /dev/null
@@ -1,10 +0,0 @@
1Check list for releases:
2
3pom.xml
4pom-test.xml
5Version.java
6build.properties
7
8doc/index.html
9doc/documentation-main.html
10doc/maven.html
diff --git a/FILES b/FILES
11deleted file mode 1006440deleted file mode 100644
index 482af74..0000000
--- a/FILES
+++ /dev/null
@@ -1,11 +0,0 @@
1build.properties
2build.xml
3lib/DTDDoc.jar
4examples/build.xml
5examples/testng.properties
6examples/testng.xml
7examples/src/
8maven-testng-plugin-1.1.jar
9CHANGES.txt
10LICENSE.txt
11README
diff --git a/LICENSE.txt b/LICENSE.txt
index 261eeb9..20e4bd8 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
1 Apache License1 Apache License
2 Version 2.0, January 20042 Version 2.0, January 2004
3 http://www.apache.org/licenses/3 https://www.apache.org/licenses/
44
5 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION5 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
66
@@ -192,7 +192,7 @@
192 you may not use this file except in compliance with the License.192 you may not use this file except in compliance with the License.
193 You may obtain a copy of the License at193 You may obtain a copy of the License at
194194
195 http://www.apache.org/licenses/LICENSE-2.0195 https://www.apache.org/licenses/LICENSE-2.0
196196
197 Unless required by applicable law or agreed to in writing, software197 Unless required by applicable law or agreed to in writing, software
198 distributed under the License is distributed on an "AS IS" BASIS,198 distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/NOTES b/NOTES
199deleted file mode 100644199deleted file mode 100644
index 07c2aa1..0000000
--- a/NOTES
+++ /dev/null
@@ -1,38 +0,0 @@
1=====
2Maven
3=====
4
5If you ran the full dist build, it should have generated a file on your hard drive called
6"testng-5.12-bundle.jar".
7
8Testing:
9
10-> Update <version>5.12</version> in bundle-pom.xml to the correct version
11 mvn install:install-file -DpomFile=bundle-pom.xml -Dfile=testng-5.12.1.jar
12 cd /tmp
13 svn co http://svn.apache.org/repos/asf/maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-simple/
14 cd testng-simple
15-> Update <testNgVersion> in pom.xml to the correct version
16-> Remove <classifier> in pom.xml if it's still there
17 mvn -DtestNgVersion=5.12.1 -Dsurefire.version=2.5 clean test
18-> Send bundle to Brett Porter <brett.porter@gmail.com>
19
20=======
21Eclipse
22=======
23
24I ended up doing the launch configuration, and just for information, here are the parameters:
25
26Run Configuration / Eclipse application.
27
28Check "Run an application" in "Program to run", and select org.eclipse.equinox.p2.metadata.generator.EclipseGenerator
29
30The program arguments are (replace the update site directory appropriately):
31
32Linux:
33-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator -updateSite /usr/local/cbeust/java/testng-eclipse-update-site -site file:/usr/local/cbeust/java/testng-eclipse-update-site/site.xml -metadataRepository file:/usr/local/cbeust/java/testng-eclipse-update-site/ -artifactRepository file:/usr/local/cbeust/java/testng-eclipse-update-site -artifactRepositoryName "Ganymede Artifacts" -compress -append -reusePack200Files -noDefaultIUs -vmargs -Xmx256m
34
35Mac
36-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator -updateSite /Users/cbeust/java/testng-eclipse-update-site -site file:/Users/cbeust/java/testng-eclipse-update-site/site.xml -metadataRepository file:/Users/cbeust/java/testng-eclipse-update-site/ -artifactRepository file:/Users/cbeust/java/testng-eclipse-update-site -artifactRepositoryName "Ganymede Artifacts" -compress -append -reusePack200Files -noDefaultIUs -vmargs -Xmx256m
37
38This will generate the site in ~/java/testng-eclipse-update-site
diff --git a/README b/README
39deleted file mode 1006440deleted file mode 100644
index ae34ca2..0000000
--- a/README
+++ /dev/null
@@ -1,12 +0,0 @@
1[![Build Status](https://travis-ci.org/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
2
3Welcome to TestNG 6.8beta
4
5Please note that even though the .zip distribution contains the TestNG sources,
6you will not be able to build the software with them because we decided
7not to include the external jar files in order to keep the size down.
8
9If you want to build TestNG, please sync to the GitHub repository at https://github.com/cbeust/testng.
10
11--
12The TestNG team
diff --git a/README-publish b/README-publish
13deleted file mode 1006440deleted file mode 100644
index 621ed43..0000000
--- a/README-publish
+++ /dev/null
@@ -1,9 +0,0 @@
1To publish:
2
3- ./gradlew bintrayUpload will upload the release to JCenter. It will fail if the version is a SNAPSHOT
4- ./gradlew uploadArchives will upload
5 - the snapshot to https://oss.sonatype.org/content/repositories/snapshots
6 - the release to https://oss.sonatype.org/service/local/staging/deploy/maven2
7For a release, you then need to go to https://oss.sonatype.org/index.html#stagingRepositories to manually close and release the distribution.
8
9Note that `./gradlew uploadArchives` is run by Travis after each new push to deploy the latest HEAD to the snapshot directory. As such, the version number of `build.gradle` in the git repo should always be -SNAPSHOT.
diff --git a/README.build b/README.build
10deleted file mode 1006440deleted file mode 100644
index 8b10e0d..0000000
--- a/README.build
+++ /dev/null
@@ -1,7 +0,0 @@
1You need to install ivy in order to build.
2
3You can either download it from the ivy site or more simply,
4copy ivy-2.1.0.jar included in the root directory to ~/.ant/lib.
5
6After this, "ant" will build the distribution and run the tests.
7
diff --git a/README.dev b/README.dev
8deleted file mode 1006440deleted file mode 100644
index c74f7e5..0000000
--- a/README.dev
+++ /dev/null
@@ -1,36 +0,0 @@
1New installation:
2
3Install GPG at http://www.gpgtools.org/gpgmail/index.html
4Generate new key with gpg --gen-key
5build-with-maven
6gpg --list-keys
7Send the public key:
8 gpg --keyserver hkp://pool.sks-keyservers.net --send-keys <public_key>
9 or wwwkeys.at.pgp.net
10
11
12 instructions at https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
13
14
15Configure ~/.m2/settings.xml with Nexus user/password:
16
17 <settings>
18 <servers>
19 <server>
20 <id>sonatype-nexus-snapshots</id>
21 <username>***</username>
22 <password>***</password>
23 </server>
24 <server>
25 <id>sonatype-nexus-staging</id>
26 <username>***</username>
27 <password>***</password>
28 </server>
29 </servers>
30 </settings>
31
32Snaphot deploy:
33mvn -Dgpg.passphrase= -Dgpg.keyname=<public_key> deploy
34
35Staging deploy:
36mvn -Dgpg.passphrase= -Dgpg.keyname=<public_key> release:clean release:prepare release:perform
diff --git a/README.md b/README.md
index 53879e4..1168afb 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,49 @@
1[![Build Status](http://img.shields.io/travis/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
2[![Java9 EA Build Status](https://img.shields.io/jenkins/s/https/adopt-openjdk.ci.cloudbees.com/TestNG.svg?label="Java9 EA")](https://adopt-openjdk.ci.cloudbees.com/job/TestNG)
3[![Java9 Jigsaw EA Build Status](https://img.shields.io/jenkins/s/https/adopt-openjdk.ci.cloudbees.com/TestNG-Jigsaw.svg?label="Java9 Jigsaw")](https://adopt-openjdk.ci.cloudbees.com/job/TestNG-Jigsaw)
4[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/cbeust/testng?svg=true)](https://ci.appveyor.com/project/cbeust/testng)
5[![Dependency Status](https://www.versioneye.com/user/projects/553a031c4e5d2e9408000059/badge.svg)](https://www.versioneye.com/user/projects/553a031c4e5d2e9408000059)
6[![Reference Status](https://www.versioneye.com/java/org.testng:testng/reference_badge.svg)](https://www.versioneye.com/java/org.testng:testng/references)
7[![Maven Central](https://img.shields.io/maven-central/v/org.testng/testng.svg)](https://maven-badges.herokuapp.com/maven-central/org.testng/testng)1[![Maven Central](https://img.shields.io/maven-central/v/org.testng/testng.svg)](https://maven-badges.herokuapp.com/maven-central/org.testng/testng)
8[![License](https://img.shields.io/github/license/cbeust/testng.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)2[![License](https://img.shields.io/github/license/cbeust/testng.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
9[![Sonarqube tech debt](https://img.shields.io/sonar/http/nemo.sonarqube.org/org.testng:testng/tech_debt.svg?label=Sonarqube%20tech%20debt)](http://nemo.sonarqube.org/dashboard/index?id=org.testng:testng)3[![Sonarqube tech debt](https://img.shields.io/sonar/https/sonarqube.com/org.testng:testng/tech_debt.svg?label=Sonarqube%20tech%20debt)](https://sonarqube.com/dashboard/index?id=org.testng:testng)
4[![Sonarqube Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=org.testng%3Atestng&metric=alert_status)](https://sonarcloud.io/dashboard?id=org.testng%3Atestng)
105
11Documentation available at [TestNG's main web site](http://testng.org).6Documentation available at [TestNG's main web site](https://testng.org).
7
8### Release Notes
9
10* [7.4.0](https://groups.google.com/g/testng-users/c/dwSJ04qeu8k)
11* [7.3.0](https://groups.google.com/forum/#!topic/testng-users/a81uaZvtEZI)
12* [7.1.0](https://groups.google.com/forum/#!topic/testng-users/84bYPJ1rjno)
13* [7.0.0](https://groups.google.com/forum/#!topic/testng-users/HKujuefBhXA)
14
15### Need help?
16Before opening a new issue, did you ask your question on
17* [Google group](https://groups.google.com/group/testng-users)
18* [StackOverflow](https://stackoverflow.com/questions/tagged/testng)
19
20If you posted on both sites, please provide the link to the other question to avoid duplicating the answer.
21
22### Are you sure it is a TestNG bug?
23Before posting the issue, try to reproduce the issue in [a shell window](https://testng.org/doc/documentation-main.html#running-testng).
24
25If the problem does not exist with the shell, first check if the issue exists on the bugtracker of the runner, and open an issue there first:
26* Eclipse: https://github.com/cbeust/testng-eclipse/issues
27* IntelliJ: [https://youtrack.jetbrains.com/issues](https://youtrack.jetbrains.com/issues?q=Subsystem:%20%7BJava.%20Tests.%20TestNG%7D)
28* Maven: https://issues.apache.org/jira/browse/SUREFIRE
29* Gradle: https://issues.gradle.org/projects/GRADLE
30
31### Which version are you using?
32Always make sure your issue is happening on the latest TestNG version. Bug reports occurring on older versions will not be looked at quickly.
33
34### Have you considered sending a pull request instead of filing an issue?
35The best way to report a bug is to provide the TestNG team with a full test case reproducing the issue.
36Maybe you can write a runnable test case (check the `src/test/` folder for examples) and propose it in a pull request
37Don't worry if the CI fails because it is the expected behavior.
38This pull request will be a perfect start to find the fix :)
39
40### How to create a pull request?
41Refer our [Contributing](.github/CONTRIBUTING.md) section for detailed set of steps.
42
43### We encourage pull requests that:
44
45 * Add new features to TestNG (or)
46 * Fix bugs in TestNG
47
48 If your pull request involves fixing SonarQube issues then we would suggest that you please discuss this with the
49 [TestNG-dev](https://groups.google.com/forum/#!forum/testng-dev) before you spend time working on it.
diff --git a/TESTNG-5.11beta b/TESTNG-5.11beta
12deleted file mode 10064450deleted file mode 100644
index e69de29..0000000
--- a/TESTNG-5.11beta
+++ /dev/null
diff --git a/TODO.txt b/TODO.txt
13deleted file mode 10064451deleted file mode 100644
index 1013ce5..0000000
--- a/TODO.txt
+++ /dev/null
@@ -1,160 +0,0 @@
1 TODO for TestNG
2
3* Pass the XmlTest in @Before/@After methods
4* Allow a testng.xml file to be passed when -testjar is used
5* Add onStart to IConfigurationListener (create a new interface, actually)
6* Add timeout to @Before/@After
7* Pass parameters from ant
8* Make it possible to specify groups on command line and classes in testng.xml
9(and any combinations thereof: command line, ant, testng.xml)
10* DataProvider index in testng.xml
11* Create a servlet for remote driving
12* Add time-outs at the testng.xml. Also: test and suite time-outs? http://tinyurl.com/kbwxq
13* Add working dir to the ant task
14* Add a servlet so TestNG can be invoked from a web browser
15* Make it possible to add listeners from the Eclipse plug-in
16
17Doc:
18
19* Document the fact that @Test methods with return values are ignored.
20
21===========================================================================
22Older TODO's:
23
24* Show enabled=false methods in the reports, as well as methods
25in groups that were not run
26* Multi-threading for invocationCount and maybe for <test> too
27* Annotation to specify that a method should be called concurrently by n threads
28(on second thought, we should do that for an entire group)
29* more thread ideas: http://www.theserverside.com/news/thread.tss?thread_id=38922
30* package support for command line and ant
31* Parameters for classes (to be passed as parameters to constructors)
32* testng-dist.zip should contain a top-level directory
33* For dependent methods, if the user is trying to run an incomplete graph
34(A depends on B but B is being excluded from the run), what to do? Ignore
35the exclusion on B and run it anyway, or abort with an exception explaining
36what's happening?)
37* Make timeOut() work with milliseconds (but keep seconds for backward
38compatibility)
39* Improve the plug-in API so people can add listeners without having to
40modify TestRunner
41* Use factories for the programmatic API.
42* Add dynamic generation of tests
43* Make Javadoc comments over methods appear in the final report
44
45Documentation:
46* IHookable
47* List<IReporter>
48
49
50DONE
51
52* Retry patch
53* If a method with invocationCount fails, don't run the others
54* Allow multiple listeners in ant task
55* Add working dir to the ant task
56* Introduce "test" and "suite" parameters to @Test at the class level to
57avoid having to use testng.xml
58* Remove TestNG stack traces from the report
59* When 0 tests were run, exit with an error http://tinyurl.com/ftng6
60* Show all the extra output for all methods in a single
61dedicated page
62* report API
63* Show parameters used to invoke a specific test
64* show skipped groups/methods in HTML report
65* beforeTestGroups
66* <testng classfileset> doesn't add to classpath
67* threadPoolSize
68* Parameter logging
69* JavaDoc for org.testng.TestNG
70* org.testng.Reporter in the HTML report (screenshot ready)
71* Document @Parameters only works for @Test (should mention @Factory and @Configuration)
72* Document: <testng classfileset> doesn't add to classpath
73* Document org.testng.Reporter in the HTML report (screenshot ready)
74* Document parameter logging
75* JavaDoc for org.testng.TestNG
76* Document threadPoolSize
77* Make sure it can run several times in the same JVM
78* Implement invocationCount and successPercentage
79* Support multiple testng.xml (TestNG allows it but not the reporters
80yet)
81* The HTML reporter collapses all the suites into one report, we should
82create one HTML report per suite
83* testng-failed.xml should contain the parameters of testng.xml (if any)
84* Create a testng-failed.xml that includes dependent methods
85* Generic reported with compare(ITestResult, ITestResult) for
86easier reporter for "slowest method first" or generate testng-failed.xml
87* Iterator factories
88* configuration methods don't respect inheritance
89- build.xml should issue a clear error message if trying to build with JDK1.4
90- Implement <tasdkdef resource="testnganttasks"> so we can define
91ant tasks for TestNG and JUnitConverter automatically
92- Write documentation to declare ant task in section 3.2.8
93- Documentation for alwaysRun
94- Allow to specify packages or prefix in the <classes> tag:
95 <classes prefix="com.beust.testng"><class name="A"><class name="B"> />
96- New assert classes
97- New ways to launch
98- JUnitConverter documentation
99- new beforeSuite/afterSuite
100
101* in testng-failures.xml include the beforeSuite/afterSuite methods (very tricky)
102* Provide log.properties configuration (not using log any more)
103* Make @ExpectedExceptions fail if no exception is thrown
104* Make timeOut() work in non-parallel mode (the default mode needs to become
105parallel=true thread-count=1
106* The exception thrown when a test passes with a @ExpectedExceptions is not
107available via the TestNG API: ITestResult.getThrowable().
108* Add assert API for arrays and collections (undecided yet: partial asserting)
109* dependsOnMethods
110Allow to specify <groups> at the <suite> level
111Make TestNG run on class files and not just on testng.xml
112Make TestNG run on a jar file that has a testng.xml file in its root or just on all
113 the classes inside that jar file.
114
115Implement parameter passing of tests: define a property in the properties
116file and pass it to the test method:
117
118@Test(params = { "${fn}", "${ln}" }
119public void testNames(String firstName, String lastName) {
120}
121
122Run groups of groups
123List all tests that will be run, or show methods per group
124HTML generation
125Make test and class methods discoverable
126 JUnit adapter
127Multiple ExpectedException
128Inheritance
129Test listeners
130Group regexps for launching
131
132====
133
134A new comment has been posted on your blog Otaku, Cedric's weblog, on entry
135#149 (The poor shape of Unit Testing).
136http://beust.com/weblog/archives/000149.html
137
138IP Address: 68.72.49.189
139Name: Curt Cox
140Email Address: curtcox@gmail.com
141URL:
142
143Comments:
144
145For whatever its worth, here are my problems with JUnit. I've largely developed work-arounds.
146
1471. Interface-based testing is awkward.
1482. Only fast-fail tests are supported.
1493. The design is brittle, poorly documented, and thus hard to extend.
150
151How should interface-based testing be handled in TestNG? A nice feature would be bundled tests for interfaces in the java* namespace that are automatically applied. In other words:
152- all classes will fail a (supressible) test if they violate the contract for equals() and hashCode()
153- classes that implement Comparable will fail a test if they fail to implement Comparable
154- and likewise for java.io.Serializable, java.util.Map, java.util.List, etc...
155
156When I say all tests are fast-fail in JUnit, what I mean is that the first failed assertion in a method causes the test to exit. While this is usually desirable, a more conversational style of tests can sometimes be much easier to read and write. Such a conversational test doesn't generate a simple failure, but rather a score. The score could be either x of y passed or x percent passed. The important part is that the first failure doesn't terminate the test.
157
158As I said, I've largely developed work-arounds for doing these in JUnit, but developing tools for conversational tests that play nice with the various JUnit runners was a real challenge. The exact contract that Eclipse expects of JUnit tests turns out to be different than what either of the bundled runners or the Ant task expect. Anyone who considers either the JUnit code or interfaces well-documented has a much different concept of well-documented than I do.
159
160
diff --git a/ant/README.template b/ant/README.template
161deleted file mode 1006440deleted file mode 100644
index fe25c22..0000000
--- a/ant/README.template
+++ /dev/null
@@ -1,12 +0,0 @@
1[![Build Status](https://travis-ci.org/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
2
3Welcome to TestNG ${version}
4
5Please note that even though the .zip distribution contains the TestNG sources,
6you will not be able to build the software with them because we decided
7not to include the external jar files in order to keep the size down.
8
9If you want to build TestNG, please sync to the GitHub repository at https://github.com/cbeust/testng.
10
11--
12The TestNG team
diff --git a/ant/build-ant.xml b/ant/build-ant.xml
13deleted file mode 1006440deleted file mode 100644
index 4502117..0000000
--- a/ant/build-ant.xml
+++ /dev/null
@@ -1,74 +0,0 @@
1<project name="testng" default="all" basedir=".">
2
3 <property file="build.properties"/>
4 <property name="this.directory" value="${test.dir}" />
5 <property name="test-output" value="${this.directory}/test-output" />
6
7 <taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${testng.jar}" />
8
9 <target name="all">
10 <echo>This dir: ${this.directory}</echo>
11 <delete failonerror="false" dir="${this.directory}/build" />
12 <mkdir dir="${this.directory}/build" />
13
14 <javac classpath="${testng.jar}"
15 destdir="${this.directory}/build" srcdir="${this.directory}" includes="test/ant/*.java" />
16
17<!--
18 <testng classpath="build;../../testng-5.2beta-jdk15.jar"
19 outputdir="test-output"
20 dumpcommand="true">
21 <xmlfileset dir="." includes="testng.xml"/>
22 </testng>
23-->
24 <delete failonerror="false">
25 <fileset dir="${test-output}" includes="**"/></delete>
26
27 <testng classpath="${this.directory}/build;${testng.jar}"
28 outputdir="${test-output}"
29 parallel="methods"
30 threadcount="5"
31 listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
32 haltonfailure="true"
33 >
34 <classfileset dir="${this.directory}/build">
35 <include name="test/ant/NoPackageTest.class" />
36 <include name="test/ant/MultipleThreadTest.class" />
37 </classfileset>
38 </testng>
39
40 <available file="${test-output}/Ant suite/Ant test.xml"
41 type="file" property="test.exists"/>
42 <fail unless="test.exists"
43 message="The appropriately named output should have been created"/>
44
45 <testng classpath="${this.directory}/build;${testng.jar}"
46 outputdir="${test-output}"
47 listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
48 haltonfailure="true"
49 suitename="Test Ant Suite"
50 testname="Test Ant Test"
51 >
52 <classfileset dir="${this.directory}/build">
53 <include name="test/ant/DontOverrideSuiteNameTest.class" />
54 </classfileset>
55 </testng>
56
57 <available file="${test-output}/Test Ant Suite/Test Ant Test.xml"
58 type="file" property="test2.exists"/>
59 <fail unless="test2.exists" message="The appropriately named output should have been created"/>
60
61 <!-- Ensure standard tests get run -->
62 <testng classpath="${this.directory}/build;${testng.jar}"
63 outputdir="${test-output}"
64 listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
65 haltonfailure="true"
66 >
67 <xmlfileset file="${test.resources.dir}/testng-ant.xml"/>
68 </testng>
69 <available file="${test-output}/Suitename from xml/TestName.xml"
70 type="file" property="test3.exists"/>
71 <fail unless="test3.exists" message="The appropriately named output should have been created"/>
72
73 </target>
74</project>
diff --git a/ant/build-tests.xml b/ant/build-tests.xml
75deleted file mode 1006440deleted file mode 100644
index 4f51c47..0000000
--- a/ant/build-tests.xml
+++ /dev/null
@@ -1,187 +0,0 @@
1<project name="testng" default="all" basedir=".">
2
3 <property file="build.properties"/>
4
5 <property name="report.dir" value="${test.output.dir}"/>
6 <property name="junit.report.dir" value="${report.dir}/test-tmp"/>
7 <property name="testng.report.dir" value="${report.dir}"/>
8
9 <target name="all" depends="prepare,compile,run,reports,done"/>
10
11 <!-- ==================================================================== -->
12 <!-- Compile -->
13 <!-- ==================================================================== -->
14 <path id="compile.cp">
15 <pathelement location="${testng.jar}" />
16 <fileset dir="${lib.dir}" includes="${guice2.jar}" />
17 <fileset dir="${lib.dir}" includes="${junit.jar}" />
18 <fileset dir="${lib.dir}" includes="aopalliance-1.0.jar" />
19 </path>
20
21 <target name="env:info">
22 <echo>
23BASEDIR =${basedir}
24TEST.DIR =${test.dir}
25TEST.BUILD.DIR =${test.build.dir}
26REPORT.DIR =${report.dir}
27JUNIT.REPORT.DIR =${junit.report.dir}
28TESTNG.REPORT.DIR=${testng.report.dir}
29 </echo>
30 </target>
31
32 <target name="compile" depends="prepare">
33 <echo message=" -- Compiling tests --"/>
34
35 <property name="build.compiler" value="modern"/>
36 <javac debug="true"
37 source="1.7"
38 classpathref="compile.cp"
39 srcdir="${test.dir}"
40 destdir="${test.build.dir}"
41 />
42
43 </target>
44
45 <target name="prepare">
46 <tstamp/>
47 <mkdir dir="${test.build.dir}"/>
48 <mkdir dir="${junit.report.dir}"/>
49 <mkdir dir="${testng.report.dir}"/>
50
51 <taskdef name="testng"
52 classname="org.testng.TestNGAntTask"
53 classpath="${build.dir}"/>
54 </target>
55
56<!--
57 <property name="cobertura.dir" value="../cobertura-1.9.4.1" />
58
59 <path id="cobertura.classpath">
60 <fileset dir="${cobertura.dir}">
61 <include name="cobertura.jar" />
62 <include name="lib/**/*.jar" />
63 </fileset>
64 </path>
65-->
66
67 <!-- ==================================================================== -->
68 <!-- Run -->
69 <!-- ==================================================================== -->
70
71 <path id="run.cp">
72<!--
73 <path location="target/instrumented-classes" />
74 <path refid="cobertura.classpath" />
75-->
76 <path refid="compile.cp"/>
77 <pathelement location="${test.build.dir}"/>
78 </path>
79
80 <target name="run" description="Run tests" depends="compile,copy-resources">
81 <echo message=" -- Running tests --"/>
82 <echo message=" -- ${testng.jar} --" />
83 <testng classpathref="run.cp"
84 outputdir="${testng.report.dir}">
85 <xmlfileset dir="${test.resources.dir}" includes="testng.xml"/>
86 <jvmarg value="-Dtest.resources.dir=${test.resources.dir}" />
87 <jvmarg value="-Dsun.io.serialization.extendedDebugInfo=true" />
88 </testng>
89 </target>
90
91 <target name="copy-resources" description="Copies resources.">
92 <copy verbose="false"
93 file="${src.resources.dir}/testngtasks"
94 todir="${build.dir}" />
95 <copy todir="${build.dir}">
96 <fileset dir="${src.resources.dir}">
97 <exclude name="**/.*" />
98 <exclude name="**/CVS/*" />
99 </fileset>
100 </copy>
101 </target>
102
103 <target name="run:single" description="Run 1 property file named with the ant property test" depends="compile">
104 <echo message=" -- testng-tests-run1 --"/>
105
106 <testng outputdir="${testng.report.dir}"
107 classpathref="run.cp"
108 useDefaultListeners="true"
109 outputDir="${testng.report.dir}">
110 <xmlfileset dir="${test.resources.dir}" includes="testng-single.xml"/>
111 </testng>
112
113 <echo>Report created in open ${testng.report.dir}/index.html</echo>
114 </target>
115
116 <target name="run:antprop" description="Run a test to see if ant system propertes are passed correctly" depends="compile">
117 <echo message=" -- testng-tests-run-antprop --"/>
118 <property name="syspropset1" value="value 1"/>
119 <property name="syspropset2" value="value 2"/>
120 <propertyset id="propset1">
121 <propertyref name="syspropset1"/>
122 <propertyref name="syspropset2"/>
123 </propertyset>
124
125 <testng outputdir="${testng.report.dir}"
126 classpathref="run.cp">
127 <xmlfileset dir="${test.resources.dir}" includes="testng-single3.xml"/>
128 <propertyset refid="propset1"/>
129 <sysproperty key="sysprop1" value="value 3"/>
130 </testng>
131 </target>
132
133 <!-- ==================================================================== -->
134 <!-- Run specific configuration -->
135 <!-- ==================================================================== -->
136 <target name="run:conf"
137 if="testng.conf"
138 depends="clean:reports,compile"
139 description="Run specified tests">
140 <echo message=" -- testng-tests-run --"/>
141 <echo message="using: ${testng.conf}.xml"/>
142
143 <testng classpathref="run.cp"
144 outputDir="${testng.report.dir}">
145 <xmlfileset dir="${test.resources.dir}" includes="${testng.conf}.xml"/>
146 </testng>
147
148 <antcall target="clean.tmp"/>
149 </target>
150
151
152 <!-- ==================================================================== -->
153 <!-- Reports -->
154 <!-- ==================================================================== -->
155
156 <target name="reports">
157 <junitreport todir="${junit.report.dir}">
158 <fileset dir="${testng.report.dir}">
159 <include name="*.xml"/>
160 <exclude name="testng-failed.xml"/>
161 <exclude name="testng-results.xml" />
162 </fileset>
163 <report format="noframes" todir="${junit.report.dir}"/>
164 </junitreport>
165 </target>
166
167
168 <target name="clean.tmp">
169 <delete dir="${test.output.dir}"/>
170 </target>
171
172 <target name="clean:reports">
173 <delete dir="${report.dir}"/>
174 <delete dir="${junit.report.dir}"/>
175 </target>
176
177 <target name="clean" depends="clean.tmp,clean:reports">
178 <echo message=" -- test clean --"/>
179
180 <delete dir="${test.build.dir}"/>
181 </target>
182
183 <target name="done">
184 <echo>Reports can be found in: open ${testng.report.dir}/index.html</echo>
185 </target>
186
187</project>
diff --git a/ant/build.properties b/ant/build.properties
188deleted file mode 1006440deleted file mode 100644
index f4309d8..0000000
--- a/ant/build.properties
+++ /dev/null
@@ -1,76 +0,0 @@
1#
2# TestNG distribution
3#
4testng.basename=testng
5testng.version=6.8.14-SNAPSHOT
6testng.fullname=${testng.basename}-${testng.version}
7
8#
9# Global directories
10#
11root.dir=${basedir}
12build.3rdparty.dir=${root.dir}/build3rdparty
13build.maven-bundle.dir=${build.dir}/maven-bundle
14target=${root.dir}/target
15lib.dir=${basedir}/lib
16lib-supplied.dir=${basedir}/lib-supplied
17src.dir=${basedir}/src/main/java
18src.resources.dir=${basedir}/src/main/resources
19build.dir=${target}/classes
20test.dir=${basedir}/src/test/java
21test.build.dir=${target}/test-classes
22test.output.dir=${target}/test-output
23test.resources.dir=${basedir}/src/test/resources
24example.dir=${basedir}/examples
25
26#
27# Jar files
28#
29beanshell.jar=bsh-2.0b4.jar
30guice2.jar=guice-2.0.jar
31junit.jar=junit-4.10.jar
32ant.jar=ant-1.7.0.jar
33jcommander.jar=jcommander-1.27.jar
34yaml.jar=snakeyaml-1.12.jar
35
36all.jar.files=${beanshell.jar},${junit.jar},${ant.jar},${jcommander.jar},${yaml.jar},${guice2.jar}
37
38#
39# Names of distributions
40#
41testng.jar=${target}/${testng.fullname}.jar
42testng.dist.jar=${testng.fullname}-dist.jar
43sources.testng.jar=${testng.fullname}-sources.jar
44testng.junit.jar=${testng.fullname}-junit.jar
45testng.nobsh.noguice.jar=${testng.fullname}-nobsh-noguice.jar
46testng.bsh.noguice.jar=${testng.fullname}-bsh-noguice.jar
47testng.nobsh.guice.jar=${testng.fullname}-nobsh-guice.jar
48testng.ibiblio.jar=${testng.fullname}-bundle.jar
49testng.zip=${target}/${testng.fullname}.zip
50testng.maven-bundle=${target}/${testng.fullname}-bundle.jar
51testng.javadoc.zip=${testng.fullname}-javadoc.zip
52
53other.jars.dir=${target}/other-jars
54
55#
56# Test locations
57#
58test.location.msg=Test results can be found in\n\
59test/test-output/index.html
60
61#
62# Eclipse plug-in
63#
64testng-eclipse.dir=../testng-eclipse
65
66#
67# Maven plug-in version
68# Note, this version number is appended to the resulting plug-in jar
69#
70testng-maven.version=1.2
71
72#
73# JDK 1.4 for sanity checking before a distribution
74#
75java14.home=jdk-1.5.0_04
76#java14.home=c:/java/jdk-1.4.2_08
diff --git a/ant/build.xml b/ant/build.xml
77deleted file mode 1006440deleted file mode 100644
index a1e4bba..0000000
--- a/ant/build.xml
+++ /dev/null
@@ -1,467 +0,0 @@
1<project name="testng" default="dev" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
2
3 <!-- ====================================================================== -->
4 <!-- TestNG build file -->
5 <!-- Created cbeust, April 26th, 2004 -->
6 <!-- ====================================================================== -->
7
8 <property file="build.properties" />
9 <property name="optimize" value="false" />
10
11 <!-- ====================================================================== -->
12 <!-- PREPARE -->
13 <!-- ====================================================================== -->
14 <target name="prepare" depends="retrieve-dependencies"
15 description="Performs all preparations required to build.">
16 <tstamp />
17 <mkdir dir="${build.dir}" />
18 <mkdir dir="${other.jars.dir}" />
19 </target>
20
21 <!-- ====================================================================== -->
22 <!-- DUMP -->
23 <!-- ====================================================================== -->
24 <target name="dump" description="Dumps all properties." depends="prepare">
25 <echoproperties />
26 </target>
27
28 <!-- ====================================================================== -->
29 <!-- VALIDATE -->
30 <!-- ====================================================================== -->
31
32 <target name="validate" description="Validates the build environment.">
33 <!-- java greater than 1.6 required to build -->
34 <condition property="requiredJavaVersion">
35 <or>
36 <equals arg1="${ant.java.version}" arg2="1.9" />
37 <equals arg1="${ant.java.version}" arg2="1.8" />
38 <equals arg1="${ant.java.version}" arg2="1.7" />
39 </or>
40 </condition>
41 <fail unless="requiredJavaVersion"
42 message="Java version 1.7 required." />
43 <!-- validate ant version too ... -->
44 </target>
45
46 <!-- ==================================================================== -->
47 <!-- COPY-RESOURCES -->
48 <!-- ==================================================================== -->
49
50 <target name="copy-resources" description="Copies resources.">
51 <copy verbose="false"
52 file="${src.resources.dir}/testngtasks"
53 todir="${build.dir}" />
54 <copy todir="${build.dir}">
55 <fileset dir="${src.resources.dir}">
56 <exclude name="**/.*" />
57 <exclude name="**/CVS/*" />
58 </fileset>
59 </copy>
60 </target>
61
62
63 <target name="dev"
64 depends="prepare,validate,copy-resources,build,tests" />
65
66 <target name="all"
67 depends="prepare,validate,copy-resources,build,dist,tests,test-ant,javadocs,dist" />
68
69 <target name="build" depends="prepare,compile,testng-jar-all" />
70
71 <target name="testng-jar-all">
72 <antcall target="create-jar">
73 <param name="jar.file" value="${testng.jar}" />
74 </antcall>
75 <jar jarfile="${testng.jar}" update="true">
76 <zipfileset src="${lib.dir}/${beanshell.jar}" />
77 <zipfileset src="${lib.dir}/${jcommander.jar}" />
78 <zipfileset src="${lib.dir}/${yaml.jar}" />
79 </jar>
80
81 </target>
82
83 <target name="single">
84 <ant antfile="build-tests.xml" target="run:single"/>
85 </target>
86
87 <!-- ==================================================================== -->
88 <!-- Compile -->
89 <!-- ==================================================================== -->
90
91 <path id="compile2.cp">
92 <fileset dir="${lib.dir}" includes="${all.jar.files}" />
93 </path>
94
95 <target name="compile"
96 depends="prepare,copy-resources"
97 description="Compiles sources">
98 <echo message=" -- Compiling sources --" />
99
100 <echo>Src:${src.dir}</echo>
101 <javac classpathref="compile2.cp"
102 verbose="false"
103 target="1.7"
104 debug="true"
105 optimize="${optimize}"
106 destdir="${build.dir}">
107 <src path="${src.dir}" />
108 </javac>
109 </target>
110
111 <target name="compile:all" depends="compile" />
112
113 <target name="examples">
114 <ant inheritall="no" antfile="examples/build.xml" />
115 </target>
116
117 <target name="tests" depends="build" description="runs all JDK5 tests with JDK5 distro">
118 <ant inheritall="no" antfile="build-tests.xml" />
119 </target>
120
121 <target name="test-ant" depends="build">
122 <echo message=" -- Testing ant testng task functionality --" />
123 <ant inheritall="no" antfile="build-ant.xml" />
124 </target>
125
126 <!-- ==================================================================== -->
127 <!-- Documentation -->
128 <!-- ==================================================================== -->
129
130 <target name="javadocs" depends="build,javadocs-current" />
131
132 <target name="doclava">
133 <javadoc
134 docletpath="3rdparty/doclava-1.0.3.jar"
135 bootclasspath="${javahome}/jre/lib/rt.jar"
136 classpath="${testng.jar}:lib/${ant.jar}:lib/${guice2.jar}:lib/aopalliance-1.0.jar"
137 maxmemory="2048M"
138 additionalparam="-quiet"
139 verbose="false"
140 destdir="javadocs"
141 >
142 <fileset dir="${src.dir}" defaultexcludes="yes">
143 <include name="org/testng/*.java" />
144 </fileset>
145 <fileset dir="${src.dir}" defaultexcludes="yes">
146 <include name="org/testng/xml/Xml*.java" />
147 </fileset>
148 <fileset dir="${src.dir}" defaultexcludes="yes">
149 <include name="org/testng/annotations/**" />
150 </fileset>
151 <doclet name="com.google.doclava.Doclava">
152 <param name="-stubs" value="build/stubs" />
153 <param name="-hdf"/>
154 <param name="project.name" value="TestNG" />
155 <!-- versioning -->
156 <param name="-since"/>
157 <param name="doclava/previous.xml"/>
158 <param name="v1" />
159 <param name="-apiversion" value="v2"/>
160 <!-- federation -->
161 <param name="-federate" />
162 <param name="JDK"/>
163 <param name="http://download.oracle.com/javase/6/docs/api/index.html?"/>
164 <param name="-federationxml"/><param name="JDK"/>
165 <param name="http://doclava.googlecode.com/svn/static/api/openjdk-6.xml"/>
166 </doclet>
167 </javadoc>
168 </target>
169
170 <target name="javadocs-current">
171 <javadoc additionalparam="-quiet" destdir="javadocs" source="1.7" windowtitle="TestNG"
172 classpath="${testng.jar}" classpathref="compile2.cp" verbose="false">
173 <fileset dir="${src.dir}" defaultexcludes="yes">
174 <include name="org/testng/*.java" />
175 </fileset>
176 <fileset dir="${src.dir}" defaultexcludes="yes">
177 <include name="org/testng/xml/Xml*.java" />
178 </fileset>
179 <fileset dir="${src.dir}" defaultexcludes="yes">
180 <include name="org/testng/annotations/**" />
181 </fileset>
182 </javadoc>
183 </target>
184
185 <!-- ==================================================================== -->
186 <!-- Distribution -->
187 <!-- ==================================================================== -->
188
189 <target name="dist" depends="build,all-jar-flavors,dist-all-zip,eclipse" />
190
191 <target name="all-jar-flavors" depends="dist-junit,dist-nobsh-guice,dist-bsh-noguice,dist-nobsh-noguice,dist-testng-dist,dist-testng-javadoc" />
192
193 <target name="dist-junit">
194 <antcall target="create-jar">
195 <param name="jar.file" value="${other.jars.dir}/${testng.junit.jar}" />
196 </antcall>
197 <jar jarfile="${other.jars.dir}/${testng.junit.jar}" update="true">
198 <zipfileset src="${lib.dir}/${beanshell.jar}" />
199 <zipfileset src="${lib.dir}/${jcommander.jar}" />
200 <zipfileset src="${lib.dir}/${junit.jar}" />
201 <zipfileset src="${lib.dir}/${yaml.jar}" />
202 </jar>
203 </target>
204
205 <target name="dist-nobsh-guice">
206 <antcall target="create-jar">
207 <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.guice.jar}" />
208 </antcall>
209 <jar jarfile="${other.jars.dir}/${testng.nobsh.guice.jar}" update="true">
210 <zipfileset src="${lib.dir}/${guice2.jar}" />
211 <zipfileset src="${lib.dir}/${jcommander.jar}" />
212 <zipfileset src="${lib.dir}/${junit.jar}" />
213 </jar>
214 </target>
215
216 <target name="dist-bsh-noguice">
217 <antcall target="create-jar">
218 <param name="jar.file" value="${other.jars.dir}/${testng.bsh.noguice.jar}" />
219 </antcall>
220 <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
221 <zipfileset src="${lib.dir}/${beanshell.jar}" />
222 <zipfileset src="${lib.dir}/${jcommander.jar}" />
223 <zipfileset src="${lib.dir}/${junit.jar}" />
224 </jar>
225 </target>
226
227 <target name="dist-nobsh-noguice">
228 <antcall target="create-jar">
229 <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.noguice.jar}" />
230 </antcall>
231 <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
232 <zipfileset src="${lib.dir}/${jcommander.jar}" />
233 <zipfileset src="${lib.dir}/${junit.jar}" />
234 </jar>
235 </target>
236
237 <target name="dist-testng-dist">
238 <antcall target="create-jar">
239 <param name="jar.file" value="${other.jars.dir}/${testng.dist.jar}" />
240 </antcall>
241 <jar jarfile="${other.jars.dir}/${testng.dist.jar}" update="true">
242 <zipfileset src="${lib.dir}/${jcommander.jar}" />
243 </jar>
244 </target>
245
246 <target name="dist-testng-javadoc" depends="javadocs">
247 <zip destfile="${other.jars.dir}/${testng.javadoc.zip}">
248 <fileset dir="javadocs"/>
249 </zip>
250 </target>
251
252 <target name="create-jar" description="Create a jar file with the Testng classes and nothing else"
253 depends="compile">
254 <delete file="${jar.file}" />
255 <jar destfile="${jar.file}" >
256 <manifest>
257 <attribute name="Main-Class" value="org.testng.TestNG" />
258 <attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
259 </manifest>
260 <fileset dir="${build.dir}" />
261 <fileset file="TESTNG-${testng.version}" />
262 </jar>
263 </target>
264
265 <target name="dist-all-zip" depends="dist-prepare,javadocs">
266 <property name="zip.dir" value="testng-${testng.version}" />
267 <echo>Adding ${testng.fullname}</echo>
268 <zip zipfile="${testng.zip}">
269 <zipfileset prefix="${zip.dir}" dir="${target}">
270 <include name="${testng.fullname}.jar" />
271 </zipfileset>
272 <zipfileset prefix="${zip.dir}" dir="${basedir}" includesfile="FILES" />
273 <zipfileset dir="${other.jars.dir}" prefix="${zip.dir}/other-jars"/>
274 <zipfileset dir="javadocs" prefix="${zip.dir}/javadocs" />
275 <zipfileset dir="src" prefix="${zip.dir}/src" />
276 <zipfileset dir="spring" prefix="${zip.dir}/spring" />
277 <zipfileset dir="doc" prefix="${zip.dir}/doc" />
278 <zipfileset dir="${src.resources.dir}"
279 prefix="${zip.dir}/resources"
280 includes="**/*.css"/>
281 </zip>
282 </target>
283
284<!--
285 <target name="dist-maven-bundle" depends="dist-all-zip">
286 <mkdir dir="${build.maven-bundle.dir}" />
287 <copy file="bundle-pom.xml" tofile="${build.maven-bundle.dir}/pom.xml" overwrite="true">
288 <filterchain>
289 <expandproperties/>
290 </filterchain>
291 </copy>
292 <jar destfile="${build.maven-bundle.dir}/${sources.testng.jar}">
293 <fileset dir="${src.dir}" />
294 </jar>
295
296 <exec executable="gpg">
297 <arg value="- -yes" />
298 <arg value="-ab" />
299 <arg value="${testng.jar}" />
300 </exec>
301
302 <exec executable="gpg">
303 <arg value="- -yes" />
304 <arg value="-ab" />
305 <arg value="${build.maven-bundle.dir}/pom.xml" />
306 </exec>
307
308 <exec executable="gpg">
309 <arg value="- -yes" />
310 <arg value="-ab" />
311 <arg value="${build.maven-bundle.dir}/${sources.testng.jar}" />
312 </exec>
313
314 <jar destfile="${testng.maven-bundle}">
315 <fileset file="${build.maven-bundle.dir}/pom.xml" />
316 <fileset file="${build.maven-bundle.dir}/${sources.testng.jar}" />
317 <fileset file="${build.maven-bundle.dir}/*asc" />
318 <fileset file="${testng.jar}" />
319 <fileset file="${testng.jar}.asc" />
320 </jar>
321 </target>
322-->
323
324 <target name="dist-prepare" depends="update-readme">
325 <delete file="{other.jars.dir}/${testng.nobsh.jar}" />
326 <mkdir dir="${other.jars.dir}" />
327 </target>
328
329 <target name="update-readme">
330 <copy file="README.template" tofile="README.md" />
331 <replace file="README.md" token="${version}" value="${testng.version}" />
332 <touch file="TESTNG-${testng.version}" />
333 </target>
334
335 <target name="eclipse" description="Used by Cedric to build distributions">
336 <property name="jdk15.jar"
337 value="${testng-eclipse.dir}/lib/testng.jar" />
338
339 <delete file="${jdk15.jar}" />
340 <copy file="${testng.jar}" tofile="${jdk15.jar}" />
341
342 <!-- sources -->
343 <property name="sources" value="${testng-eclipse.dir}/lib/testng-sources.jar"/>
344 <echo>Sources: ${sources}</echo>
345 <jar destfile="${sources}" basedir="src/main/java/" />
346 </target>
347
348 <target name="ftp">
349 <!--
350 <ftp action="put"
351 server="beust.com"
352 remotedir="w/testng/test-output"
353 userid="${userid}"
354 password="${password}">
355 <fileset dir="c:\weblogic\dev\sandbox\cbeust\testng\test\test-output">
356 <include name="index.html" />
357 <include name="main.html" />
358 <include name="toc.html" />
359 <include name="*egression*" />
360 </fileset>
361 </ftp>
362 -->
363 <ftp action="put"
364 server="beust.com"
365 remotedir="w/testng"
366 userid="${userid}"
367 password="${password}">
368 <fileset dir="${root.dir}">
369 <include name="${testng.zip}" />
370 <include name="javadocs/**" />
371 <include name="testng-1.0.dtd" />
372 </fileset>
373 <fileset dir="${root.dir}/doc">
374 <include name="*.html" />
375 </fileset>
376 </ftp>
377
378 </target>
379
380 <target name="ftp2">
381 <ftp action="put"
382 server="beust.com"
383 remotedir="w/testng"
384 userid="${userid}"
385 password="${password}">
386 <fileset dir="${root.dir}/test">
387 <include name="test-output/*" />
388 </fileset>
389 <fileset dir="${root.dir}/test">
390 <include name="test-report/*" />
391 </fileset>
392 </ftp>
393 </target>
394
395 <target name="clean">
396 <delete dir="${build.dir}" />
397 <delete dir="${target}" />
398 <delete dir="${build.maven-bundle.dir}" />
399 <delete failonerror="false">
400 <fileset dir="." includes="testng*.jar,*.zip" />
401 </delete>
402 <delete dir="test-output" failonerror="false" />
403 <delete dir="test-output-tests" failonerror="false" />
404 <ant antfile="build-tests.xml" target="clean" />
405 <ant dir="examples" target="clean" />
406 </target>
407
408 <!-- ==================================================================== -->
409 <!-- Maven1/2 Distribution -->
410 <!-- ==================================================================== -->
411
412<!--
413 <target name="maven-plugin">
414 <jar destfile="maven-testng-plugin-${testng-maven.version}.jar"
415 basedir="./maven/" />
416 </target>
417-->
418
419 <!-- ==================================================================== -->
420 <!-- Ivy -->
421 <!-- ==================================================================== -->
422
423 <target name="retrieve-dependencies" description="Retrieve dependencies with ivy">
424 <ivy:retrieve log="quiet" />
425 </target>
426
427 <target name="publish">
428 <ivy:resolve />
429 <mkdir dir="dist/jars" />
430 <copy file="${testng.jar}" todir="dist/jars" />
431 <ivy:publish organisation="org.testng" resolver="local" overwrite="true"/>
432 </target>
433
434 <target name="pom">
435 <ivy:makepom ivyfile="ivy.xml" pomfile="ivy-pom.xml" />
436 </target>
437
438 <!-- ==================================================================== -->
439 <!-- Code coverage -->
440 <!-- ==================================================================== -->
441
442<!--
443 <property name="cobertura.dir" value="../cobertura-1.9.4.1" />
444
445 <path id="cobertura.classpath">
446 <fileset dir="${cobertura.dir}">
447 <include name="cobertura.jar" />
448 <include name="lib/**/*.jar" />
449 </fileset>
450 </path>
451
452 <taskdef classpathref="cobertura.classpath" resource="tasks.properties" />
453
454 <target name="coverage:create">
455 <cobertura-instrument classpath="cobertura-1.9.4.1/lib/*" todir="target/instrumented-classes">
456 <fileset dir="${build.dir}">
457 <include name="**/*.class" />
458 </fileset>
459 </cobertura-instrument>
460 </target>
461
462 <target name="coverage">
463 <cobertura-report srcdir="${src.dir}" destdir="target/coverage-report"/>
464 </target>
465-->
466
467</project>
diff --git a/ant/ivy.xml b/ant/ivy.xml
468deleted file mode 1006440deleted file mode 100644
index c6a5a97..0000000
--- a/ant/ivy.xml
+++ /dev/null
@@ -1,13 +0,0 @@
1<ivy-module version="2.0">
2 <info organisation="org.testng" module="testng" revision="6.5beta"/>
3
4 <dependencies>
5 <dependency org="org.apache.ant" name="ant" rev="1.7.0" />
6 <dependency org="junit" name="junit" rev="4.10" />
7 <dependency org="org.beanshell" name="bsh" rev="2.0b4" />
8 <dependency org="com.google.inject" name="guice" rev="2.0" />
9 <dependency org="org.yaml" name="snakeyaml" rev="1.15" />
10 <dependency org="com.beust" name="jcommander" rev="1.48" />
11 </dependencies>
12</ivy-module>
13
diff --git a/ant/old/build-dogfood.xml b/ant/old/build-dogfood.xml
14deleted file mode 1006440deleted file mode 100644
index 0e39867..0000000
--- a/ant/old/build-dogfood.xml
+++ /dev/null
@@ -1,30 +0,0 @@
1<project name="testng" default="run" basedir=".">
2 <property name="testng.home" value="${basedir}/../" />
3 <property name="lib.dir" value="${testng.home}/3rdparty"/>
4 <property file="../build.properties"/>
5
6 <path id="run.cp">
7 <pathelement location="../z_build" />
8 <fileset dir="${lib.dir}">
9 <include name="junit.jar"/>
10 <include name="${beanshell.jar}"/>
11 <include name="${qdox.jar}"/>
12 </fileset>
13 <pathelement location="${java.home}/../lib/tools.jar"/>
14 </path>
15
16 <target name="run" description="Run tests" >
17 <echo>Defining task from ${basedir}/../${jdk15.testng.jar}</echo>
18 <taskdef name="testng"
19 classname="org.testng.TestNGAntTask"
20 classpath="${basedir}/../${jdk15.testng.jar}" />
21
22 <testng classpathref="run.cp"
23 dumpcommand="true" verbose="9" outputdir="test-outputs" haltonfailure="true">
24 <xmlfileset dir="${basedir}">
25 <include name="testng-single.xml" />
26 </xmlfileset>
27 </testng>
28 </target>
29
30</project>
diff --git a/ant/old/build-sample.xml b/ant/old/build-sample.xml
31deleted file mode 1006440deleted file mode 100644
index 3ffea58..0000000
--- a/ant/old/build-sample.xml
+++ /dev/null
@@ -1,30 +0,0 @@
1<project name="testng" default="run" basedir=".">
2
3 <property name="testng.home" value="c:/java/testng" />
4 <property name="lib.dir" value="${testng.home}/lib"/>
5 <property name="testng.jar" value="${testng.home}/testng-2.5-jdk15.jar" />
6
7 <path id="run.cp">
8 <!--
9 <path refid="compile.cp"/>
10-->
11 <pathelement location="build" />
12 <pathelement location="${lib.dir}/qdox-1.5.jar"/>
13 <pathelement location="${java.home}/../lib/tools.jar"/>
14 </path>
15
16 <target name="run" description="Run tests" >
17 <echo>Defining task from ${testng.jar}</echo>
18 <taskdef name="testng"
19 classname="org.testng.TestNGAntTask"
20 classpath="${testng.jar}" />
21
22 <testng classpathref="run.cp"
23 dumpcommand="true" verbose="9" outputdir="test-outputs">
24 <classfileset dir="build">
25 <include name="**/justin/*Test*.class" />
26 </classfileset>
27 </testng>
28 </target>
29
30</project>
diff --git a/appveyor.yml b/appveyor.yml
31deleted file mode 1006440deleted file mode 100644
index 3212f2d..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,25 +0,0 @@
1version: "{branch} {build}"
2skip_tags: true
3clone_depth: 10
4
5build:
6 verbosity: detailed
7
8build_script:
9 - gradlew.bat assemble --info --no-daemon
10
11test_script:
12 - gradlew.bat test --info --no-daemon
13
14environment:
15 matrix:
16 - JAVA_HOME: C:\Program Files\Java\jdk1.7.0
17 - JAVA_HOME: C:\Program Files\Java\jdk1.8.0
18 - JAVA_HOME: C:\Program Files (x86)\Java\jdk1.7.0
19 - JAVA_HOME: C:\Program Files (x86)\Java\jdk1.8.0
20
21matrix:
22 fast_finish: true
23
24cache:
25 - C:\Users\appveyor\.gradle
26\ No newline at end of file0\ No newline at end of file
diff --git a/build-logic/basics/build.gradle.kts b/build-logic/basics/build.gradle.kts
27new file mode 1006441new file mode 100644
index 0000000..bc0172f
--- /dev/null
+++ b/build-logic/basics/build.gradle.kts
@@ -0,0 +1,3 @@
1plugins {
2 `kotlin-dsl`
3}
diff --git a/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts b/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts
0new file mode 1006444new file mode 100644
index 0000000..1e4717f
--- /dev/null
+++ b/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts
@@ -0,0 +1,10 @@
1// Can't use settings plugin: https://github.com/gradle/gradle/issues/17295
2// dependencyResolutionManagement {
3// repositories {
4// mavenCentral()
5// }
6//}
7
8repositories {
9 mavenCentral()
10}
diff --git a/build-logic/basics/src/main/kotlin/testng.reproducible-builds.gradle.kts b/build-logic/basics/src/main/kotlin/testng.reproducible-builds.gradle.kts
0new file mode 10064411new file mode 100644
index 0000000..cab1514
--- /dev/null
+++ b/build-logic/basics/src/main/kotlin/testng.reproducible-builds.gradle.kts
@@ -0,0 +1,7 @@
1tasks.withType<AbstractArchiveTask>().configureEach {
2 // Ensure builds are reproducible
3 isPreserveFileTimestamps = false
4 isReproducibleFileOrder = true
5 dirMode = "775".toInt(8)
6 fileMode = "664".toInt(8)
7}
diff --git a/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts b/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts
0new file mode 1006448new file mode 100644
index 0000000..09eb6c9
--- /dev/null
+++ b/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts
@@ -0,0 +1,5 @@
1if (project != rootProject) {
2 // The root project takes its version from /gradle.properties -> testng.version
3 // All the rest projects take the version from the root
4 version = rootProject.version
5}
diff --git a/build-logic/code-quality/build.gradle.kts b/build-logic/code-quality/build.gradle.kts
0new file mode 1006446new file mode 100644
index 0000000..3955765
--- /dev/null
+++ b/build-logic/code-quality/build.gradle.kts
@@ -0,0 +1,12 @@
1plugins {
2 `kotlin-dsl`
3}
4
5repositories {
6 gradlePluginPortal()
7}
8
9dependencies {
10 implementation("org.sonarqube:org.sonarqube.gradle.plugin:2.8")
11 implementation("com.github.autostyle:autostyle-plugin-gradle:3.1")
12}
diff --git a/build-logic/code-quality/src/main/kotlin/testng.sonarqube.gradle.kts b/build-logic/code-quality/src/main/kotlin/testng.sonarqube.gradle.kts
0new file mode 10064413new file mode 100644
index 0000000..7551b01
--- /dev/null
+++ b/build-logic/code-quality/src/main/kotlin/testng.sonarqube.gradle.kts
@@ -0,0 +1,12 @@
1plugins {
2 id("org.sonarqube")
3}
4
5sonarqube {
6 properties {
7 property("sonar.host.url", "https://sonarcloud.io/")
8 property("sonar.organization", "testng-team")
9 property("sonar.github.repository", "cbeust/testng")
10 property("sonar.github.login", "testng-bot")
11 }
12}
diff --git a/build-logic/code-quality/src/main/kotlin/testng.style.gradle.kts b/build-logic/code-quality/src/main/kotlin/testng.style.gradle.kts
0new file mode 10064413new file mode 100644
index 0000000..709e849
--- /dev/null
+++ b/build-logic/code-quality/src/main/kotlin/testng.style.gradle.kts
@@ -0,0 +1,13 @@
1plugins {
2 id("com.github.autostyle")
3}
4
5autostyle {
6 java {
7 importOrder()
8 removeUnusedImports()
9 trimTrailingWhitespace()
10 endWithNewline()
11 googleJavaFormat()
12 }
13}
diff --git a/build-logic/code-quality/src/main/kotlin/testng.testing.gradle.kts b/build-logic/code-quality/src/main/kotlin/testng.testing.gradle.kts
0new file mode 10064414new file mode 100644
index 0000000..ff097f5
--- /dev/null
+++ b/build-logic/code-quality/src/main/kotlin/testng.testing.gradle.kts
@@ -0,0 +1,40 @@
1import org.gradle.api.tasks.testing.Test
2
3plugins {
4 `java-library`
5}
6
7dependencies {
8 testImplementation("org.assertj:assertj-core:_")
9}
10
11tasks.withType<Test>().configureEach {
12 useTestNG()
13 providers.gradleProperty("testng.test.extra.jvmargs")
14 .forUseAtConfigurationTime()
15 .orNull?.toString()?.trim()
16 ?.takeIf { it.isNotEmpty() }
17 ?.let {
18 // TODO: support quoted arguments
19 jvmArgs(it.split(Regex("\\s+")))
20 }
21 systemProperty("test.resources.dir", "build/resources/test")
22 fun passProperty(name: String, default: String? = null) {
23 val value = System.getProperty(name) ?: default
24 value?.let { systemProperty(name, it) }
25 }
26 // Default verbose is 0, however, it can be adjusted vi -Dtestng.default.verbose=2
27 passProperty("testng.default.verbose", "0")
28 // Allow running tests in a custom locale with -Duser.language=...
29 passProperty("user.language")
30 passProperty("user.country")
31
32 @Suppress("unchecked_cast")
33 val props = System.getProperties().propertyNames() as `java.util`.Enumeration<String>
34 // Pass testng.* properties to the test JVM
35 for (e in props) {
36 if (e.startsWith("testng.")) {
37 passProperty(e)
38 }
39 }
40}
diff --git a/build-logic/jvm/build.gradle.kts b/build-logic/jvm/build.gradle.kts
0new file mode 10064441new file mode 100644
index 0000000..5323a4e
--- /dev/null
+++ b/build-logic/jvm/build.gradle.kts
@@ -0,0 +1,14 @@
1plugins {
2 `kotlin-dsl`
3}
4
5repositories {
6 gradlePluginPortal()
7}
8
9dependencies {
10 implementation(project(":basics"))
11 implementation(project(":code-quality"))
12 implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.74")
13 implementation("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.5.10")
14}
diff --git a/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt b/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt
0new file mode 10064415new file mode 100644
index 0000000..2b3df5b
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt
@@ -0,0 +1,16 @@
1package buildlogic
2
3import org.apache.tools.ant.filters.FixCrLfFilter
4import org.gradle.api.file.CopySpec
5import org.gradle.kotlin.dsl.filter
6
7fun CopySpec.filterEolSimple(eol: String) {
8 filteringCharset = "UTF-8"
9 filter(
10 FixCrLfFilter::class, mapOf(
11 "eol" to FixCrLfFilter.CrLf.newInstance(eol),
12 "fixlast" to true,
13 "ctrlz" to FixCrLfFilter.AddAsisRemove.newInstance("asis")
14 )
15 )
16}
diff --git a/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts
0new file mode 10064417new file mode 100644
index 0000000..8ccc1a1
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts
@@ -0,0 +1,64 @@
1import buildlogic.filterEolSimple
2
3plugins {
4 `java-library`
5 id("testng.java")
6 id("testng.testing")
7}
8
9tasks.withType<Javadoc>().configureEach {
10 excludes.add("org/testng/internal/**")
11}
12
13tasks.withType<JavaCompile>().configureEach {
14 inputs.property("java.version", System.getProperty("java.version"))
15 inputs.property("java.vm.version", System.getProperty("java.vm.version"))
16 options.apply {
17 encoding = "UTF-8"
18 compilerArgs.add("-Xlint:deprecation")
19 compilerArgs.add("-Werror")
20 }
21}
22
23tasks.withType<Jar>().configureEach {
24 into("META-INF") {
25 filterEolSimple("crlf")
26 from("$rootDir/LICENSE.txt")
27 from("$rootDir/NOTICE")
28 duplicatesStrategy = DuplicatesStrategy.EXCLUDE
29 }
30 manifest {
31 // providers.gradleProperty does not work
32 // see https://github.com/gradle/gradle/issues/14972
33 val name = rootProject.findProperty("project.name")
34 val vendor = rootProject.findProperty("project.vendor.name")
35 attributes(mapOf(
36 "Specification-Title" to name,
37 "Specification-Version" to project.version,
38 "Specification-Vendor" to vendor,
39 "Implementation-Title" to name,
40 "Implementation-Version" to project.version,
41 "Implementation-Vendor" to vendor,
42 "Implementation-Vendor-Id" to rootProject.findProperty("project.vendor.id"),
43 "Implementation-Url" to rootProject.findProperty("project.url"),
44 ))
45 }
46}
47
48@Suppress("unused")
49val transitiveSourcesElements by configurations.creating {
50 description = "Share sources folder with other projects for aggregation (e.g. sources, javadocs, etc)"
51 isVisible = false
52 isCanBeResolved = false
53 isCanBeConsumed = true
54 extendsFrom(configurations.implementation.get())
55 attributes {
56 attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
57 attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
58 attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("source-folders"))
59 }
60 // afterEvaluate is to allow creation of the new source sets
61 afterEvaluate {
62 sourceSets.main.get().java.srcDirs.forEach { outgoing.artifact(it) }
63 }
64}
diff --git a/build-logic/jvm/src/main/kotlin/testng.java-platform.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.java-platform.gradle.kts
0new file mode 10064465new file mode 100644
index 0000000..7b0fb95
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/testng.java-platform.gradle.kts
@@ -0,0 +1,4 @@
1plugins {
2 id("testng.java")
3 `java-platform`
4}
diff --git a/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts
0new file mode 1006445new file mode 100644
index 0000000..85e0d6d
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts
@@ -0,0 +1,28 @@
1plugins {
2 `java-base`
3 id("testng.versioning")
4 id("testng.style")
5 id("testng.repositories")
6 // Improves Gradle Test logging
7 // See https://github.com/vlsi/vlsi-release-plugins/tree/master/plugins/gradle-extensions-plugin
8 id("com.github.vlsi.gradle-extensions")
9}
10
11java {
12 sourceCompatibility = JavaVersion.VERSION_1_8
13 targetCompatibility = JavaVersion.VERSION_1_8
14}
15
16tasks.withType<JavaCompile>().configureEach {
17 inputs.property("java.version", System.getProperty("java.version"))
18 inputs.property("java.vendor", System.getProperty("java.vendor"))
19 inputs.property("java.vm.version", System.getProperty("java.vm.version"))
20 inputs.property("java.vm.vendor", System.getProperty("java.vm.vendor"))
21}
22
23tasks.withType<Test>().configureEach {
24 inputs.property("java.version", System.getProperty("java.version"))
25 inputs.property("java.vendor", System.getProperty("java.vendor"))
26 inputs.property("java.vm.version", System.getProperty("java.vm.version"))
27 inputs.property("java.vm.vendor", System.getProperty("java.vm.vendor"))
28}
diff --git a/build-logic/jvm/src/main/kotlin/testng.kotlin-library.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.kotlin-library.gradle.kts
0new file mode 10064429new file mode 100644
index 0000000..e4ad87d
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/testng.kotlin-library.gradle.kts
@@ -0,0 +1,17 @@
1import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2
3plugins {
4 id("testng.java-library")
5 kotlin("jvm")
6}
7
8dependencies {
9 testImplementation(platform("org.jetbrains.kotlin:kotlin-bom:1.5.10"))
10 testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
11}
12
13tasks.withType<KotlinCompile>().configureEach {
14 kotlinOptions {
15 jvmTarget = "1.8"
16 }
17}
diff --git a/build-logic/publishing/build.gradle.kts b/build-logic/publishing/build.gradle.kts
0new file mode 10064418new file mode 100644
index 0000000..5bc085b
--- /dev/null
+++ b/build-logic/publishing/build.gradle.kts
@@ -0,0 +1,14 @@
1plugins {
2 `kotlin-dsl`
3}
4
5repositories {
6 gradlePluginPortal()
7}
8
9dependencies {
10 implementation(project(":jvm"))
11 implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.74")
12 implementation("com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:7.0.0")
13 implementation("org.jetbrains.kotlin:kotlin-gradle-plugin")
14}
diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt
0new file mode 10064415new file mode 100644
index 0000000..e677b36
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt
@@ -0,0 +1,19 @@
1package buildlogic
2
3import org.gradle.api.artifacts.Configuration
4import org.gradle.api.attributes.Category
5import org.gradle.api.attributes.Usage
6import org.gradle.api.model.ObjectFactory
7import org.gradle.kotlin.dsl.named
8
9fun Configuration.javaLibrary(objects: ObjectFactory, usage: String) =
10 attributes {
11 attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
12 attribute(Usage.USAGE_ATTRIBUTE, objects.named(usage))
13 }
14
15fun Configuration.javaLibraryApi(objects: ObjectFactory) =
16 javaLibrary(objects, Usage.JAVA_API)
17
18fun Configuration.javaLibraryRuntime(objects: ObjectFactory) =
19 javaLibrary(objects, Usage.JAVA_RUNTIME)
diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt
0new file mode 10064420new file mode 100644
index 0000000..2b3df5b
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt
@@ -0,0 +1,16 @@
1package buildlogic
2
3import org.apache.tools.ant.filters.FixCrLfFilter
4import org.gradle.api.file.CopySpec
5import org.gradle.kotlin.dsl.filter
6
7fun CopySpec.filterEolSimple(eol: String) {
8 filteringCharset = "UTF-8"
9 filter(
10 FixCrLfFilter::class, mapOf(
11 "eol" to FixCrLfFilter.CrLf.newInstance(eol),
12 "fixlast" to true,
13 "ctrlz" to FixCrLfFilter.AddAsisRemove.newInstance("asis")
14 )
15 )
16}
diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt
0new file mode 10064417new file mode 100644
index 0000000..3b4100d
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt
@@ -0,0 +1,34 @@
1package buildlogic
2
3import org.gradle.api.artifacts.Dependency
4import org.gradle.api.artifacts.component.ModuleComponentIdentifier
5import org.gradle.api.artifacts.component.ProjectComponentIdentifier
6import org.gradle.api.artifacts.dsl.DependencyHandler
7import org.gradle.api.artifacts.result.ResolvedVariantResult
8import org.gradle.api.attributes.Category
9import org.gradle.kotlin.dsl.create
10import org.gradle.kotlin.dsl.project
11
12/**
13 * Converts the resolved result back to a dependency notation, so it can be resolved again.
14 * Note: the conversion does not support "classifiers"
15 */
16fun DependencyHandler.reconstruct(variant: ResolvedVariantResult): Dependency {
17 val category = variant.attributes.run {
18 keySet().firstOrNull { it.name == Category.CATEGORY_ATTRIBUTE.name }?.let { getAttribute(it) }
19 }
20
21 val id = variant.owner
22 return when (id) {
23 is ProjectComponentIdentifier -> project(id.projectPath)
24 is ModuleComponentIdentifier -> create(id.group, id.module, id.version)
25 else -> throw IllegalArgumentException("Can't convert $id to dependency")
26 }.let {
27 when (category) {
28 Category.REGULAR_PLATFORM -> platform(it)
29 Category.ENFORCED_PLATFORM -> enforcedPlatform(it)
30 Category.LIBRARY -> it
31 else -> throw IllegalStateException("Unexpected dependency type $category for id $id")
32 }
33 }
34}
diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt b/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt
0new file mode 10064435new file mode 100644
index 0000000..af43dfa
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt
@@ -0,0 +1,89 @@
1package buildlogic
2
3import org.gradle.api.Project
4import org.gradle.api.artifacts.Configuration
5import org.gradle.api.artifacts.result.ResolvedComponentResult
6import org.gradle.api.artifacts.result.ResolvedDependencyResult
7import org.gradle.api.artifacts.result.ResolvedVariantResult
8import org.gradle.api.artifacts.result.UnresolvedDependencyResult
9import org.gradle.api.plugins.ExtensionAware
10import org.gradle.api.plugins.JavaPluginExtension
11import org.gradle.kotlin.dsl.the
12
13/**
14 * Walks over the dependency tree and selects the first non-shaded dependencies.
15 */
16fun ResolvedComponentResult.filterFirstLayerDependenciesTo(
17 set: MutableSet<ResolvedVariantResult>,
18 isShaded: (ResolvedVariantResult) -> Boolean
19): MutableSet<ResolvedVariantResult> {
20 for (dependency in dependencies) {
21 when (dependency) {
22 is UnresolvedDependencyResult -> throw IllegalStateException(
23 "Unresolved dependency $dependency: ${dependency.failure}",
24 dependency.failure
25 )
26 is ResolvedDependencyResult -> {
27 val resolvedVariant = dependency.resolvedVariant
28 if (resolvedVariant in set) {
29 continue
30 }
31 if (isShaded(resolvedVariant)) {
32 dependency.selected.filterFirstLayerDependenciesTo(set, isShaded)
33 continue
34 }
35 // Ok, we detected the first non-shaded dependency, so we do not need to dig its dependencies
36 set += resolvedVariant
37 }
38 }
39 }
40 return set
41}
42
43fun ResolvedComponentResult.filterFirstLayerDependencies(isShaded: (ResolvedVariantResult) -> Boolean) =
44 filterFirstLayerDependenciesTo(mutableSetOf(), isShaded)
45
46/**
47 * Prepares a configuration that selects the first non-shaded dependencies:
48 * 1. It resolves "AllDependencies" configuration
49 * 2. Then the function walks over the dependency tree and finds the first non-shaded dependencies
50 * 3. Then it converts the resolution results to dependency notation
51 * 4. The collected dependencies are added to "FirstNonMergedDependencies" configuration.
52 * Note: the trigger for all this computation is withDependencies, so the resolution performed only when it is required.
53 */
54fun Project.firstLayerDependencies(
55 usage: String,
56 conf: Configuration,
57 vararg rest: Configuration,
58): Configuration {
59 val optionalFeatures = (the<JavaPluginExtension>() as ExtensionAware).the<OptionalFeaturesExtension>()
60 val usageKind = usage.removePrefix("java-").capitalize()
61
62 val allDependencies = configurations.create(conf.name + "${usageKind}AllDependencies") {
63 description = "Resolves the list of all dependencies for $usage in ${conf.name}"
64 isCanBeConsumed = false
65 isCanBeResolved = true
66 isVisible = false
67 extendsFrom(conf)
68 extendsFrom(*rest)
69 javaLibrary(objects, usage)
70 }
71
72 return configurations.create(conf.name + "${usageKind}FirstNonMergedDependencies") {
73 description = "Resolves the list of external dependencies for $usage in ${conf.name}"
74 isCanBeConsumed = false
75 isCanBeResolved = true
76 isTransitive = false
77 isVisible = false
78 javaLibrary(objects, usage)
79 withDependencies {
80 // Clear any user-added-by-mistake dependencies
81 clear()
82 addAll(
83 allDependencies.incoming.resolutionResult.root
84 .filterFirstLayerDependencies(optionalFeatures.shadedDependenciesFilter.get())
85 .map { project.dependencies.reconstruct(it) }
86 )
87 }
88 }
89}
diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt b/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt
0new file mode 10064490new file mode 100644
index 0000000..05bbf2a
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt
@@ -0,0 +1,100 @@
1package buildlogic
2
3import org.gradle.api.Project
4import org.gradle.api.artifacts.Configuration
5import org.gradle.api.artifacts.component.ProjectComponentIdentifier
6import org.gradle.api.artifacts.dsl.DependencyHandler
7import org.gradle.api.artifacts.result.ResolvedVariantResult
8import org.gradle.api.attributes.Usage
9import org.gradle.api.plugins.JavaPluginExtension
10import org.gradle.api.provider.Property
11import org.gradle.api.tasks.SourceSetContainer
12import org.gradle.kotlin.dsl.get
13import org.gradle.kotlin.dsl.invoke
14import org.gradle.kotlin.dsl.provideDelegate
15import org.gradle.kotlin.dsl.the
16
17/**
18 * DSL for declaring optional features. The dependencies are stored to plugin-local "declared-*" configurations
19 */
20class OptionalFeatureBuilder(
21 private val dependencyHandler: DependencyHandler,
22 private val declaredApi: Configuration,
23 private val declaredImplementation: Configuration
24) {
25 fun platform(dependencyNotation: Any) =
26 dependencyHandler.platform(dependencyNotation)
27
28 fun api(dependencyNotation: Any) {
29 dependencyHandler.add(declaredApi.name, dependencyNotation)
30 }
31
32 fun implementation(dependencyNotation: Any) {
33 dependencyHandler.add(declaredImplementation.name, dependencyNotation)
34 }
35}
36
37abstract class OptionalFeaturesExtension(private val project: Project) {
38 // It allows to explicitly list which modules should be merged and which will be left alone as dependencies
39 abstract val shadedDependenciesFilter: Property<(ResolvedVariantResult) -> Boolean>
40
41 init {
42 // By default, shade all modules from the current build
43 shadedDependenciesFilter.convention {
44 it.owner.let { id -> id is ProjectComponentIdentifier && id.build.isCurrentBuild }
45 }
46 }
47
48 fun create(name: String, builder: OptionalFeatureBuilder.() -> Unit) {
49 project.the<JavaPluginExtension>().registerFeature(name) {
50 val sourceSets: SourceSetContainer by project
51 usingSourceSet(sourceSets["main"])
52 }
53
54 val declaredApi = project.configurations.create("${name}DeclaredApi") {
55 description = "Api dependencies for feature $name"
56 isCanBeResolved = false
57 isCanBeConsumed = false
58 }
59 val declaredImplementation = project.configurations.create("${name}DeclaredImplementation") {
60 description = "Implementation dependencies for feature $name"
61 isCanBeResolved = false
62 isCanBeConsumed = false
63 }
64 val declaredRuntime = project.configurations.create("${name}DeclaredRuntime") {
65 description = "Runtime dependencies for feature $name"
66 isCanBeResolved = false
67 isCanBeConsumed = false
68 extendsFrom(declaredApi, declaredImplementation)
69 }
70
71 OptionalFeatureBuilder(
72 project.dependencies,
73 declaredApi,
74 declaredImplementation
75 ).builder()
76
77 // This is to include all testng modules (even optional) to -all.jar
78 project.configurations["shadedDependencyFullRuntimeClasspath"]
79 .extendsFrom(declaredRuntime)
80
81 // By default Gradle adds the jar as artifact, however, we won't need it
82 // We'll put merged jar later as a main artifact
83 project.configurations {
84 get("${name}ApiElements").apply {
85 // This effectively adds "optional" pom dependencies for scope=compile
86 extendsFrom(project.firstLayerDependencies(Usage.JAVA_API, declaredApi))
87 artifacts.clear()
88 // The feature do not provide their own classes or resources
89 // All the feature resources would come from the dependencies
90 outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
91 }
92 get("${name}RuntimeElements").apply {
93 // This effectively adds "optional" pom dependencies for scope=runtime
94 extendsFrom(project.firstLayerDependencies(Usage.JAVA_RUNTIME, declaredRuntime))
95 artifacts.clear()
96 outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
97 }
98 }
99 }
100}
diff --git a/build-logic/publishing/src/main/kotlin/testng.local-maven-repo.gradle.kts b/build-logic/publishing/src/main/kotlin/testng.local-maven-repo.gradle.kts
0new file mode 100644101new file mode 100644
index 0000000..cef8f94
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/testng.local-maven-repo.gradle.kts
@@ -0,0 +1,40 @@
1plugins {
2 `maven-publish`
3}
4
5val localRepoElements by configurations.creating {
6 isCanBeConsumed = true
7 isCanBeResolved = false
8 description =
9 "Shares local maven repository directory that contains the artifacts produced by the current project"
10 attributes {
11 attribute(Category.CATEGORY_ATTRIBUTE, objects.named("maven-repository"))
12 attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
13 }
14}
15
16val localRepoDir = layout.buildDirectory.dir("local-maven-repo")
17
18publishing {
19 repositories {
20 maven {
21 name = "local"
22 url = uri(localRepoDir)
23 }
24 }
25}
26
27localRepoElements.outgoing.artifact(localRepoDir) {
28 builtBy(tasks.named("publishAllPublicationsToLocalRepository"))
29}
30
31val cleanLocalRepository by tasks.registering(Delete::class) {
32 description = "Clears local-maven-repo so timestamp-based snapshot artifacts do not consume space"
33 delete(localRepoDir)
34}
35
36tasks.withType<PublishToMavenRepository>()
37 .matching { it.name.contains("ToLocalRepository") }
38 .configureEach {
39 dependsOn(cleanLocalRepository)
40 }
diff --git a/build-logic/publishing/src/main/kotlin/testng.maven-publish.gradle.kts b/build-logic/publishing/src/main/kotlin/testng.maven-publish.gradle.kts
0new file mode 10064441new file mode 100644
index 0000000..5216f3f
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/testng.maven-publish.gradle.kts
@@ -0,0 +1,51 @@
1plugins {
2 `maven-publish`
3 id("testng.local-maven-repo")
4}
5
6// It takes value from root project always: https://github.com/gradle/gradle/issues/13302
7val scmUrl = providers.gradleProperty("scm.url")
8
9publishing {
10 publications {
11 withType<MavenPublication>().configureEach {
12 pom {
13 name.set(artifactId)
14 description.set(providers.provider { project.description })
15 // It takes value from root project always: https://github.com/gradle/gradle/issues/13302
16 url.set(providers.gradleProperty("project.url"))
17 licenses {
18 license {
19 name.set("Apache License, Version 2.0")
20 url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
21 }
22 }
23 issueManagement {
24 system.set("Github")
25 url.set(scmUrl.map { "${it.removeSuffix(".git")}/issues" })
26 }
27 developers {
28 developer {
29 id.set("cbeust")
30 name.set("Cedric Beust")
31 email.set("cedric@beust.com")
32 }
33 developer {
34 id.set("juherr")
35 name.set("Julien Herr")
36 email.set("julien@herr.fr")
37 }
38 developer {
39 id.set("krmahadevan")
40 name.set("Krishnan Mahadevan")
41 email.set("krishnan.mahadevan1978@gmail.com")
42 }
43 }
44 scm {
45 connection.set(scmUrl.map { "scm:git:$it" })
46 url.set(scmUrl)
47 }
48 }
49 }
50 }
51}
diff --git a/build-logic/publishing/src/main/kotlin/testng.merge-feature-jars.gradle.kts b/build-logic/publishing/src/main/kotlin/testng.merge-feature-jars.gradle.kts
0new file mode 10064452new file mode 100644
index 0000000..5fc3282
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/testng.merge-feature-jars.gradle.kts
@@ -0,0 +1,160 @@
1import buildlogic.OptionalFeaturesExtension
2import buildlogic.firstLayerDependencies
3import buildlogic.javaLibrary
4import buildlogic.reconstruct
5import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
6
7plugins {
8 `java-base`
9 `reporting-base`
10 id("testng.published-java-library")
11}
12
13val optionalFeatures = (the<JavaPluginExtension>() as ExtensionAware).extensions
14 .create<OptionalFeaturesExtension>("optionalFeatures", project)
15
16inline fun <reified T : Named> AttributeContainer.attribute(attr: Attribute<T>, value: String) =
17 attribute(attr, objects.named(value))
18
19val shadedDependencyElements by configurations.creating {
20 description = "Declares which modules to aggregate into ...-all.jar"
21 isCanBeConsumed = false
22 isCanBeResolved = false
23}
24
25fun Configuration.javaLibraryRuntime() = javaLibrary(objects, Usage.JAVA_RUNTIME)
26
27configurations["api"].extendsFrom(
28 firstLayerDependencies(
29 Usage.JAVA_API,
30 shadedDependencyElements
31 )
32)
33
34configurations["implementation"].extendsFrom(
35 firstLayerDependencies(
36 Usage.JAVA_RUNTIME,
37 shadedDependencyElements
38 )
39)
40
41val shadedDependencyFullRuntimeClasspath by configurations.creating {
42 description = "Resolves the list of shadedDependencyElements to testng and external dependencies"
43 isCanBeConsumed = false
44 isCanBeResolved = true
45 isVisible = false
46 extendsFrom(shadedDependencyElements)
47 javaLibraryRuntime()
48}
49
50val mergedJars by configurations.creating {
51 description = "Resolves the list of testng modules to include into -all jar"
52 isCanBeConsumed = false
53 isCanBeResolved = true
54 isTransitive = false
55 javaLibraryRuntime()
56 withDependencies {
57 // Clear any user-added-by-mistake dependencies
58 clear()
59 // Identifies TestNG projects in shadedDependencyFullRuntimeClasspath dependency tree
60 addAll(
61 shadedDependencyFullRuntimeClasspath.incoming.resolutionResult.allDependencies
62 .asSequence()
63 .filter { !it.isConstraint }
64 .filterIsInstance<ResolvedDependencyResult>()
65 .mapNotNull { resolved ->
66 resolved.resolvedVariant
67 .takeIf { optionalFeatures.shadedDependenciesFilter.get()(it) }
68 ?.let { project.dependencies.reconstruct(it) }
69 }
70 )
71 }
72}
73
74val shadedDependencyJavadocClasspath by configurations.creating {
75 description = "Resolves a runtime classpath of the aggregated -all dependenices"
76 isCanBeConsumed = false
77 isCanBeResolved = true
78 isVisible = false
79 extendsFrom(mergedJars)
80 extendsFrom(configurations["compileClasspath"])
81 extendsFrom(shadedDependencyFullRuntimeClasspath)
82 javaLibraryRuntime()
83 attributes {
84 attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, LibraryElements.JAR)
85 attribute(Bundling.BUNDLING_ATTRIBUTE, Bundling.EXTERNAL)
86 }
87}
88
89val mergedJar by tasks.registering(ShadowJar::class) {
90 group = LifecycleBasePlugin.BUILD_GROUP
91 description = "Builds all-project jar (third-party dependencies are left as is)"
92 configurations = listOf(mergedJars)
93 // Individual jars have their own license, and ShadowJar overrides "duplicateStrategy" option
94 // So we exclude LICENSE.txt from the merged jars, and let testng.java.gradle.kts to add the default one
95 exclude("META-INF/LICENSE.txt")
96 archiveClassifier.set("all")
97}
98
99dependencies {
100 "implementation"(files(mergedJar))
101}
102
103val sourcesToMerge by configurations.creating {
104 description = "Resolves the list of source directories to include into sources-all jar"
105 isCanBeConsumed = false
106 isCanBeResolved = true
107 isTransitive = false // jarsToMerge is a full set of modules, so no need to have transitivity here
108 extendsFrom(mergedJars)
109 attributes {
110 attribute(Usage.USAGE_ATTRIBUTE, Usage.JAVA_RUNTIME)
111 attribute(Category.CATEGORY_ATTRIBUTE, Category.DOCUMENTATION)
112 attribute(DocsType.DOCS_TYPE_ATTRIBUTE, "source-folders")
113 }
114}
115
116val mergedSourcesJar by tasks.registering(Jar::class) {
117 from(sourcesToMerge.incoming.artifactView { lenient(true) }.files)
118 archiveClassifier.set("sources-all")
119}
120
121val mergedJavadoc by tasks.registering(Javadoc::class) {
122 description = "Generates an aggregate javadoc"
123 group = LifecycleBasePlugin.BUILD_GROUP
124 setSource(sourcesToMerge.incoming.artifactView { lenient(true) }.files)
125 include("**/*.java")
126 setDestinationDir(reporting.file("mergedJavadoc"))
127 classpath = shadedDependencyJavadocClasspath
128}
129
130val mergedJavadocJar by tasks.registering(Jar::class) {
131 description = "Generates an aggregate javadoc jar"
132 group = LifecycleBasePlugin.BUILD_GROUP
133 from(mergedJavadoc)
134 archiveClassifier.set("javadoc-all")
135}
136
137// Configure merged artifacts for publication
138configurations.named("sourcesElements") {
139 artifacts.clear()
140 outgoing.artifact(mergedSourcesJar) {
141 classifier = "sources"
142 }
143}
144
145configurations.named("javadocElements") {
146 artifacts.clear()
147 outgoing.artifact(mergedJavadocJar) {
148 classifier = "javadoc"
149 }
150}
151
152for (name in listOf("apiElements", "runtimeElements")) {
153 configurations.named(name) {
154 artifacts.clear()
155 outgoing.artifact(mergedJar) {
156 classifier = null
157 }
158 outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
159 }
160}
diff --git a/build-logic/publishing/src/main/kotlin/testng.published-java-library.gradle.kts b/build-logic/publishing/src/main/kotlin/testng.published-java-library.gradle.kts
0new file mode 100644161new file mode 100644
index 0000000..21ff5b8
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/testng.published-java-library.gradle.kts
@@ -0,0 +1,41 @@
1import com.github.vlsi.gradle.publishing.dsl.simplifyXml
2import com.github.vlsi.gradle.publishing.dsl.versionFromResolution
3
4plugins {
5 id("testng.reproducible-builds")
6 id("testng.java-library")
7 id("testng.maven-publish")
8}
9
10java {
11 withJavadocJar()
12 withSourcesJar()
13}
14
15dependencies {
16 // If the user adds core and api with different versions,
17 // then Gradle would select **both** core and api with the same version
18 // Note: un-comment when testng-bom is published
19 // implementation(platform(project(":testng-bom")))
20 // For some reason this can't be in code-quality/testng.testing :(
21 testImplementation(project(":testng-test-kit"))
22}
23
24publishing {
25 publications {
26 create<MavenPublication>("maven") {
27 from(components["java"])
28 // Gradle feature variants can't be mapped to Maven's pom
29 suppressAllPomMetadataWarnings()
30
31 // Use the resolved versions in pom.xml
32 // Gradle might have different resolution rules, so we set the versions
33 // that were used in Gradle build/test.
34 versionFromResolution()
35
36 pom {
37 simplifyXml()
38 }
39 }
40 }
41}
diff --git a/build-logic/publishing/src/main/kotlin/testng.published-java-platform.gradle.kts b/build-logic/publishing/src/main/kotlin/testng.published-java-platform.gradle.kts
0new file mode 10064442new file mode 100644
index 0000000..d78cdb1
--- /dev/null
+++ b/build-logic/publishing/src/main/kotlin/testng.published-java-platform.gradle.kts
@@ -0,0 +1,13 @@
1plugins {
2 id("testng.reproducible-builds")
3 id("testng.java-platform")
4 id("testng.maven-publish")
5}
6
7publishing {
8 publications {
9 create<MavenPublication>("maven") {
10 from(components["javaPlatform"])
11 }
12 }
13}
diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts
0new file mode 10064414new file mode 100644
index 0000000..ee7e4ab
--- /dev/null
+++ b/build-logic/settings.gradle.kts
@@ -0,0 +1,12 @@
1dependencyResolutionManagement {
2 repositories {
3 gradlePluginPortal()
4 }
5}
6
7rootProject.name = "build-logic"
8
9include(":basics")
10include(":code-quality")
11include(":jvm")
12include(":publishing")
diff --git a/build-with-gradle b/build-with-gradle
0deleted file mode 10075513deleted file mode 100755
index 44e73f2..0000000
--- a/build-with-gradle
+++ /dev/null
@@ -1 +0,0 @@
1./gradlew --daemon --stacktrace clean build test
diff --git a/build-with-maven b/build-with-maven
2deleted file mode 1007550deleted file mode 100755
index a6c135a..0000000
--- a/build-with-maven
+++ /dev/null
@@ -1,25 +0,0 @@
1# Two different POMs are needed to build TestNG with Maven because it's not
2# allowed to have circular dependencies.
3# - pom.xml defines the project version "n-SNAPSHOT", builds, jars and deploys (but doesn't
4# run the tests).
5# - pom-test.xml declares a test dependency on "n-SNAPSHOT", which it will find
6# in the local repository (~/.m2/repository). All it does then is run the tests.
7
8
9mvn clean install -Dgpg.skip=true
10#or if you want to sign the jar, uncomment this:
11#mvn clean install
12
13mvn -f pom-test.xml test
14
15
16echo
17echo "To run the tests: mvn -f pom-test.xml test"
18echo "To deploy to the snapshot repository: mvn deploy"
19echo "To deploy to the release directory: mvn release:clean release:prepare release:perform"
20echo "Nexus UI: https://oss.sonatype.org/index.html"
21echo "Wiki: https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide"
22
23# deploy without tagging: mvn deploy -DperformRelease
24
25
diff --git a/build.gradle b/build.gradle
26deleted file mode 1006440deleted file mode 100644
index 76fe5da..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,181 +0,0 @@
1buildscript {
2
3 def a_user = hasProperty('artifactory_user') ? artifactory_user : System.getenv('artifactory_user')
4 def a_password = hasProperty('artifactory_password') ? artifactory_password : System.getenv('artifactory_password')
5
6 repositories {
7 mavenCentral()
8 jcenter()
9 maven {
10 url 'http://dl.bintray.com/cbeust/maven'
11 }
12 maven {
13 url 'http://oss.jfrog.org/artifactory/plugins-release'
14 credentials {
15 username = "${a_user}"
16 password = "${a_password}"
17 }
18 }
19 }
20
21 dependencies {
22 classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.3"
23 }
24}
25
26plugins {
27 id "com.jfrog.bintray" version "1.6"
28 id "com.jfrog.artifactory" version "4.3.0"
29 id "org.sonarqube" version "2.0.1"
30 id "nebula.optional-base" version "3.0.3"
31 id "nebula.provided-base" version "3.0.3"
32}
33
34task wrapper(type: Wrapper) {
35 gradleVersion = '2.13'
36}
37
38group = 'org.testng'
39version = '6.9.12-SNAPSHOT'
40
41apply plugin: 'java'
42apply plugin: 'groovy'
43apply plugin: 'jacoco'
44apply plugin: 'osgi'
45
46targetCompatibility = "1.7"
47sourceCompatibility = "1.7"
48
49repositories {
50 mavenCentral()
51 jcenter()
52 maven {
53 url 'http://dl.bintray.com/cbeust/maven'
54 }
55}
56
57dependencies {
58 compile 'org.beanshell:bsh:2.0b4'
59 compile 'com.beust:jcommander:1.48'
60
61 compile 'org.apache.ant:ant:1.7.0'
62 compile 'junit:junit:4.12', optional
63 compile 'org.yaml:snakeyaml:1.15', optional
64
65 provided 'com.google.inject:guice:4.0:no_aop'
66
67 testCompile 'org.assertj:assertj-core:2.0.0'
68 testCompile 'org.testng:testng:6.9.4'
69 testCompile 'org.codehaus.groovy:groovy-all:2.4.7'
70 testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
71}
72
73task sourceJar(type: Jar) {
74 group 'Build'
75 description 'An archive of the source code'
76 classifier 'sources'
77 from sourceSets.main.allSource
78}
79
80artifacts {
81 sourceJar
82}
83
84import org.apache.tools.ant.filters.ReplaceTokens
85
86def generatedSourcesFolder = projectDir.toString() + '/src/generated/java'
87
88def dirFrom = projectDir.toString() + '/src/main/resources/org/testng/internal'
89def dirTo = generatedSourcesFolder + "/org/testng/internal"
90def fileFrom = 'VersionTemplateJava'
91def fileTo = 'Version.java'
92
93task removeVersion {
94 delete dirTo + fileTo
95}
96
97sourceSets {
98 generated {
99 java {
100 srcDir 'src/generated/java'
101 }
102 resources {
103 srcDir 'src/generated/resources'
104 }
105 }
106}
107
108sourceSets {
109 main {
110 compileClasspath += generated.output
111 runtimeClasspath += generated.output
112 }
113}
114
115gradle.projectsEvaluated {
116 compileJava.dependsOn(myDir)
117}
118
119task myDir {
120 delete dirTo + "/" + fileTo
121 mkdir(dirTo)
122}
123
124// Include the generated Version.class in the jar
125jar {
126 manifest {
127 instruction 'Bundle-License', 'http://apache.org/licenses/LICENSE-2.0'
128 instruction 'Bundle-Description', 'TestNG is a testing framework.'
129 instruction 'Import-Package',
130 'bsh.*;version="[2.0.0,3.0.0)";resolution:=optional',
131 'com.beust.jcommander.*;version="[1.7.0,3.0.0)";resolution:=optional',
132 'com.google.inject.*;version="[1.2,1.3)";resolution:=optional',
133 'junit.framework;version="[3.8.1, 5.0.0)";resolution:=optional',
134 'org.junit.*;resolution:=optional',
135 'org.apache.tools.ant.*;version="[1.7.0, 2.0.0)";resolution:=optional',
136 'org.yaml.*;version="[1.6,2.0)";resolution:=optional',
137 '!com.beust.testng',
138 '!org.testng.*',
139 '!com.sun.*',
140 '*'
141 }
142 from "$buildDir/classes/generated"
143}
144
145task createVersion(type: Copy, dependsOn: myDir) {
146 println("Creating Version file: ${version} in ${dirTo}")
147 from dirFrom
148 include fileFrom
149 into(dirTo)
150 rename(fileFrom, fileTo)
151 filter(ReplaceTokens, tokens: [version: version])
152}
153
154compileJava.dependsOn(createVersion)
155
156test {
157 useTestNG() {
158 suites 'src/test/resources/testng.xml'
159 }
160// testLogging.showStandardStreams = true
161 systemProperties = System.getProperties()
162 systemProperties['test.resources.dir'] = 'build/resources/test/'
163}
164
165if (JavaVersion.current().isJava8Compatible()) {
166 allprojects {
167 tasks.withType(Javadoc) {
168 options.addStringOption('Xdoclint:none', '-quiet')
169 }
170 }
171}
172
173sonarqube {
174 properties {
175 property "sonar.host.url", "https://nemo.sonarqube.org"
176 property "sonar.github.repository", "cbeust/testng"
177 property "sonar.github.login", "testng-bot"
178 }
179}
180
181apply from: 'gradle/publishing.gradle'
diff --git a/build.gradle.kts b/build.gradle.kts
182new file mode 1006440new file mode 100644
index 0000000..2c43413
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,56 @@
1plugins {
2 id("testng.repositories")
3 id("com.github.vlsi.stage-vote-release")
4 id("idea")
5}
6
7val String.v: String get() = rootProject.extra["$this.version"] as String
8val buildVersion = "testng".v + releaseParams.snapshotSuffix
9version = buildVersion
10
11println("Building testng $buildVersion")
12
13/**
14 * Release procedure:
15 * 1. ./gradlew prepareVote -Prc=1 -Pgh (builds artifacts, stages them to Central, closes staging repository)
16 * 2. ./gradlew publishDist -Prc=1 -Pgh (publishes staging repository and pushes release tag)
17 *
18 * See https://github.com/vlsi/vlsi-release-plugins#stage-vote-release-plugin
19 * The following properties (e.g. $HOME/.gradle/gradle.properties) configure credentials.
20 * The plugin would raise a warning if the property is not found.
21 * signing.gnupg.keyName=...
22 * signing.password=...
23 * signing.secretKeyRingFile=...
24 * ghNexusUsername=...
25 * ghNexusPassword=...
26 * ghGitSourceUsername=...
27 * ghGitSourcePassword=...
28 *
29 * You can use https://github.com/vlsi/asflike-release-environment as a playground to dry run releases.
30 */
31
32fun property(name: String) =
33 providers.gradleProperty(name).forUseAtConfigurationTime()
34
35releaseParams {
36 tlp.set(property("github.repository"))
37 organizationName.set(property("github.organization"))
38 componentName.set(property("project.name"))
39 prefixForProperties.set("gh")
40 svnDistEnabled.set(false)
41 sitePreviewEnabled.set(false)
42 releaseTag.set(buildVersion) // or "testng-$buildVersion"
43 nexus {
44 packageGroup.set(property("nexus.profile"))
45 mavenCentral()
46 }
47 voteText.set {
48 """
49 ${it.componentName} v${it.version}-rc${it.rc} is ready for preview.
50
51 Git SHA: ${it.gitSha}
52 Staging repository: ${it.nexusRepositoryUri}
53 """.trimIndent()
54 }
55}
56
diff --git a/bundle-pom.xml b/bundle-pom.xml
0deleted file mode 10064457deleted file mode 100644
index c969d80..0000000
--- a/bundle-pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
1<project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4 <!--
5 This POM cannot be used to build TestNG; it should only be used as part of a Maven
6 repository upload bundle.
7
8 See the guide to creating a bundle here:
9 http://maven.apache.org/guides/mini/guide-central-repository-upload.html
10 -->
11 <modelVersion>4.0.0</modelVersion>
12 <groupId>org.testng</groupId>
13 <artifactId>testng</artifactId>
14 <name>TestNG</name>
15 <version>5.12.1</version>
16 <description>TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use.</description>
17 <url>http://testng.org</url>
18
19 <licenses>
20 <license>
21 <name>Apache License, Version 2.0</name>
22 <url>http://apache.org/licenses/LICENSE-2.0</url>
23 </license>
24 </licenses>
25
26 <scm>
27 <connection>scm:svn:http://testng.googlecode.com/svn/trunk/</connection>
28 <developerConnection>scm:svn:http://testng.googlecode.com/svn/trunk/</developerConnection>
29 <url>http://testng.googlecode.com/svn/trunk</url>
30 </scm>
31
32 <dependencies>
33 <dependency>
34 <groupId>org.apache.ant</groupId>
35 <artifactId>ant</artifactId>
36 <version>1.7.0</version>
37 <optional>true</optional>
38 </dependency>
39 <dependency>
40 <groupId>junit</groupId>
41 <artifactId>junit</artifactId>
42 <version>4.10</version>
43 </dependency>
44 <dependency>
45 <groupId>org.beanshell</groupId>
46 <artifactId>bsh</artifactId>
47 <version>2.0b4</version>
48 <scope>provided</scope>
49 </dependency>
50 <dependency>
51 <groupId>com.google.inject</groupId>
52 <artifactId>guice</artifactId>
53 <version>2.0</version>
54 <scope>provided</scope>
55 </dependency>
56
57 </dependencies>
58
59</project>
diff --git a/debian/changelog b/debian/changelog
index 3f49da0..26365df 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
1testng7 (7.5~us1-0ubuntu1) lunar; urgency=medium
2
3 * New upstream release 7.5, packaged as a separate source and binary,
4 required for jtreg version 6 and 7 (LP: #2012320).
5 * d/p/build-with-gradle.patch: provide Groovy Gradle build.
6
7 -- Vladimir Petko <vladimir.petko@canonical.com> Wed, 22 Mar 2023 16:42:42 +1300
8
1testng (6.9.12-4) unstable; urgency=medium9testng (6.9.12-4) unstable; urgency=medium
210
3 * Team upload.11 * Team upload.
@@ -156,8 +164,8 @@ testng (5.11+dfsg-3) unstable; urgency=low
156testng (5.11+dfsg-2ubuntu2) oneiric; urgency=low164testng (5.11+dfsg-2ubuntu2) oneiric; urgency=low
157165
158 * Fix FTBFS (LP: #829508):166 * Fix FTBFS (LP: #829508):
159 - d/patches/debian/junitconvertor-test-fix.diff: Switch from use of 167 - d/patches/debian/junitconvertor-test-fix.diff: Switch from use of
160 deprecated parameters attribute in @Test to using @Parameters to 168 deprecated parameters attribute in @Test to using @Parameters to
161 ensure that JUnitConvertor Test passes.169 ensure that JUnitConvertor Test passes.
162170
163 -- James Page <james.page@ubuntu.com> Tue, 20 Sep 2011 12:15:27 +0100171 -- James Page <james.page@ubuntu.com> Tue, 20 Sep 2011 12:15:27 +0100
diff --git a/debian/compat b/debian/compat
164deleted file mode 100644172deleted file mode 100644
index b4de394..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
111
diff --git a/debian/control b/debian/control
index 78776a3..f8100d4 100644
--- a/debian/control
+++ b/debian/control
@@ -1,11 +1,12 @@
1Source: testng1Source: testng7
2Section: java2Section: java
3Priority: optional3Priority: optional
4Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5Uploaders: Eugene Zhukov <eugene@debian.org>5XSBC-Original-Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
6Uploaders: Eugene Zhukov <eugene@debian.org>, Vladimir Petko <vladimir.petko@canonical.com>
6Build-Depends:7Build-Depends:
7 ant,8 ant,
8 debhelper (>= 11~),9 debhelper-compat (=13),
9 default-jdk,10 default-jdk,
10 junit4,11 junit4,
11 libbsh-java,12 libbsh-java,
@@ -14,16 +15,20 @@ Build-Depends:
14 libjcommander-java,15 libjcommander-java,
15 libmaven-bundle-plugin-java,16 libmaven-bundle-plugin-java,
16 libyaml-snake-java,17 libyaml-snake-java,
17 maven-debian-helper18 maven-repo-helper,
18Standards-Version: 4.1.519 gradle-debian-helper,
20 libassertj-core-java
21Rules-Requires-Root: no
22Standards-Version: 4.6.2
19Vcs-Git: https://salsa.debian.org/java-team/testng.git23Vcs-Git: https://salsa.debian.org/java-team/testng.git
20Vcs-Browser: https://salsa.debian.org/java-team/testng24Vcs-Browser: https://salsa.debian.org/java-team/testng
21Homepage: http://testng.org25Homepage: http://testng.org
2226
23Package: testng27Package: libtestng7-java
24Architecture: all28Architecture: all
25Depends: ${maven:Depends}, ${misc:Depends}29Depends: ${maven:Depends}, ${misc:Depends}
26Recommends: ${maven:OptionalDepends}30Recommends: ${maven:OptionalDepends}
31Conflicts: testng
27Description: testing framework for Java32Description: testing framework for Java
28 TestNG is a testing framework inspired from JUnit and NUnit but introducing33 TestNG is a testing framework inspired from JUnit and NUnit but introducing
29 some new functionalities that make it more powerful and easier to use, such as:34 some new functionalities that make it more powerful and easier to use, such as:
diff --git a/debian/copyright b/debian/copyright
index 78e2f32..8ee2d51 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,4 +1,10 @@
1Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/1Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2Files-Excluded:
3 .gitignore
4 .gitattributes
5 .github/*
6 gradle/*
7Comment: Exclude github artifacts, .gitignore, .gitattributes and gradle wrapper
2Upstream-Name: TestNG8Upstream-Name: TestNG
3Source: http://testng.org9Source: http://testng.org
410
@@ -8,6 +14,7 @@ License: Apache-2.0
814
9Files: debian/*15Files: debian/*
10Copyright: 2013, Eugene Zhukov <jevgeni.zh@gmail.com>16Copyright: 2013, Eugene Zhukov <jevgeni.zh@gmail.com>
17 2023, Canonical Ltd.
11License: Apache-2.018License: Apache-2.0
1219
13License: Apache-2.020License: Apache-2.0
diff --git a/debian/gbp.conf b/debian/gbp.conf
14deleted file mode 10064421deleted file mode 100644
index 0becd6d..0000000
--- a/debian/gbp.conf
+++ /dev/null
@@ -1,2 +0,0 @@
1[import-orig]
2upstream-vcs-tag = testng-%(version)s
diff --git a/debian/testng.poms b/debian/libtestng7-java.poms
3similarity index 94%0similarity index 94%
4rename from debian/testng.poms1rename from debian/testng.poms
5rename to debian/libtestng7-java.poms2rename to debian/libtestng7-java.poms
index 77fc769..8640402 100644
--- a/debian/testng.poms
+++ b/debian/libtestng7-java.poms
@@ -25,4 +25,4 @@
25# --site-xml=<location>: Optional, the location for site.xml if it needs to be installed.25# --site-xml=<location>: Optional, the location for site.xml if it needs to be installed.
26# Empty by default. [mh_install]26# Empty by default. [mh_install]
27#27#
28pom.xml --no-parent --has-package-version --java-lib --relocate=org.testng:testng:6.x28build/debian/testng.pom --artifact=build/libs/testng-*.jar --java-lib --relocate=org.testng:testng:7.x
diff --git a/debian/maven.ignoreRules b/debian/maven.ignoreRules
index 5c21bbc..43e63ca 100644
--- a/debian/maven.ignoreRules
+++ b/debian/maven.ignoreRules
@@ -5,4 +5,3 @@ org.apache.maven.plugins maven-javadoc-plugin * * * *
5org.apache.maven.plugins maven-release-plugin * * * *5org.apache.maven.plugins maven-release-plugin * * * *
6org.apache.maven.plugins maven-source-plugin * * * *6org.apache.maven.plugins maven-source-plugin * * * *
7org.apache.maven.plugins maven-surefire-plugin * * * *7org.apache.maven.plugins maven-surefire-plugin * * * *
8org.assertj assertj-core * * * *
diff --git a/debian/maven.rules b/debian/maven.rules
index 9f41d8b..45a3b3e 100644
--- a/debian/maven.rules
+++ b/debian/maven.rules
@@ -4,3 +4,4 @@ junit junit jar s/4\..*/4.x/ * *
4org.yaml snakeyaml bundle s/1\..*/1.x/ * *4org.yaml snakeyaml bundle s/1\..*/1.x/ * *
5org.yaml snakeyaml s/jar/bundle/ s/1\..*/1.x/ * *5org.yaml snakeyaml s/jar/bundle/ s/1\..*/1.x/ * *
6s/ant/org.apache.ant/ * * s/.*/debian/ * *6s/ant/org.apache.ant/ * * s/.*/debian/ * *
7org.assertj assertj-core jar s/.*/debian/ * *
diff --git a/debian/missing-sources/jquery-1.7.1.js b/debian/missing-sources/jquery-1.7.1.js
7deleted file mode 1006448deleted file mode 100644
index 8ccd0ea..0000000
--- a/debian/missing-sources/jquery-1.7.1.js
+++ /dev/null
@@ -1,9266 +0,0 @@
1/*!
2 * jQuery JavaScript Library v1.7.1
3 * http://jquery.com/
4 *
5 * Copyright 2011, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2011, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Mon Nov 21 21:11:03 2011 -0500
15 */
16(function( window, undefined ) {
17
18// Use the correct document accordingly with window argument (sandbox)
19var document = window.document,
20 navigator = window.navigator,
21 location = window.location;
22var jQuery = (function() {
23
24// Define a local copy of jQuery
25var jQuery = function( selector, context ) {
26 // The jQuery object is actually just the init constructor 'enhanced'
27 return new jQuery.fn.init( selector, context, rootjQuery );
28 },
29
30 // Map over jQuery in case of overwrite
31 _jQuery = window.jQuery,
32
33 // Map over the $ in case of overwrite
34 _$ = window.$,
35
36 // A central reference to the root jQuery(document)
37 rootjQuery,
38
39 // A simple way to check for HTML strings or ID strings
40 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
41 quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
42
43 // Check if a string has a non-whitespace character in it
44 rnotwhite = /\S/,
45
46 // Used for trimming whitespace
47 trimLeft = /^\s+/,
48 trimRight = /\s+$/,
49
50 // Match a standalone tag
51 rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
52
53 // JSON RegExp
54 rvalidchars = /^[\],:{}\s]*$/,
55 rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
56 rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
57 rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
58
59 // Useragent RegExp
60 rwebkit = /(webkit)[ \/]([\w.]+)/,
61 ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
62 rmsie = /(msie) ([\w.]+)/,
63 rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
64
65 // Matches dashed string for camelizing
66 rdashAlpha = /-([a-z]|[0-9])/ig,
67 rmsPrefix = /^-ms-/,
68
69 // Used by jQuery.camelCase as callback to replace()
70 fcamelCase = function( all, letter ) {
71 return ( letter + "" ).toUpperCase();
72 },
73
74 // Keep a UserAgent string for use with jQuery.browser
75 userAgent = navigator.userAgent,
76
77 // For matching the engine and version of the browser
78 browserMatch,
79
80 // The deferred used on DOM ready
81 readyList,
82
83 // The ready event handler
84 DOMContentLoaded,
85
86 // Save a reference to some core methods
87 toString = Object.prototype.toString,
88 hasOwn = Object.prototype.hasOwnProperty,
89 push = Array.prototype.push,
90 slice = Array.prototype.slice,
91 trim = String.prototype.trim,
92 indexOf = Array.prototype.indexOf,
93
94 // [[Class]] -> type pairs
95 class2type = {};
96
97jQuery.fn = jQuery.prototype = {
98 constructor: jQuery,
99 init: function( selector, context, rootjQuery ) {
100 var match, elem, ret, doc;
101
102 // Handle $(""), $(null), or $(undefined)
103 if ( !selector ) {
104 return this;
105 }
106
107 // Handle $(DOMElement)
108 if ( selector.nodeType ) {
109 this.context = this[0] = selector;
110 this.length = 1;
111 return this;
112 }
113
114 // The body element only exists once, optimize finding it
115 if ( selector === "body" && !context && document.body ) {
116 this.context = document;
117 this[0] = document.body;
118 this.selector = selector;
119 this.length = 1;
120 return this;
121 }
122
123 // Handle HTML strings
124 if ( typeof selector === "string" ) {
125 // Are we dealing with HTML string or an ID?
126 if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
127 // Assume that strings that start and end with <> are HTML and skip the regex check
128 match = [ null, selector, null ];
129
130 } else {
131 match = quickExpr.exec( selector );
132 }
133
134 // Verify a match, and that no context was specified for #id
135 if ( match && (match[1] || !context) ) {
136
137 // HANDLE: $(html) -> $(array)
138 if ( match[1] ) {
139 context = context instanceof jQuery ? context[0] : context;
140 doc = ( context ? context.ownerDocument || context : document );
141
142 // If a single string is passed in and it's a single tag
143 // just do a createElement and skip the rest
144 ret = rsingleTag.exec( selector );
145
146 if ( ret ) {
147 if ( jQuery.isPlainObject( context ) ) {
148 selector = [ document.createElement( ret[1] ) ];
149 jQuery.fn.attr.call( selector, context, true );
150
151 } else {
152 selector = [ doc.createElement( ret[1] ) ];
153 }
154
155 } else {
156 ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
157 selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
158 }
159
160 return jQuery.merge( this, selector );
161
162 // HANDLE: $("#id")
163 } else {
164 elem = document.getElementById( match[2] );
165
166 // Check parentNode to catch when Blackberry 4.6 returns
167 // nodes that are no longer in the document #6963
168 if ( elem && elem.parentNode ) {
169 // Handle the case where IE and Opera return items
170 // by name instead of ID
171 if ( elem.id !== match[2] ) {
172 return rootjQuery.find( selector );
173 }
174
175 // Otherwise, we inject the element directly into the jQuery object
176 this.length = 1;
177 this[0] = elem;
178 }
179
180 this.context = document;
181 this.selector = selector;
182 return this;
183 }
184
185 // HANDLE: $(expr, $(...))
186 } else if ( !context || context.jquery ) {
187 return ( context || rootjQuery ).find( selector );
188
189 // HANDLE: $(expr, context)
190 // (which is just equivalent to: $(context).find(expr)
191 } else {
192 return this.constructor( context ).find( selector );
193 }
194
195 // HANDLE: $(function)
196 // Shortcut for document ready
197 } else if ( jQuery.isFunction( selector ) ) {
198 return rootjQuery.ready( selector );
199 }
200
201 if ( selector.selector !== undefined ) {
202 this.selector = selector.selector;
203 this.context = selector.context;
204 }
205
206 return jQuery.makeArray( selector, this );
207 },
208
209 // Start with an empty selector
210 selector: "",
211
212 // The current version of jQuery being used
213 jquery: "1.7.1",
214
215 // The default length of a jQuery object is 0
216 length: 0,
217
218 // The number of elements contained in the matched element set
219 size: function() {
220 return this.length;
221 },
222
223 toArray: function() {
224 return slice.call( this, 0 );
225 },
226
227 // Get the Nth element in the matched element set OR
228 // Get the whole matched element set as a clean array
229 get: function( num ) {
230 return num == null ?
231
232 // Return a 'clean' array
233 this.toArray() :
234
235 // Return just the object
236 ( num < 0 ? this[ this.length + num ] : this[ num ] );
237 },
238
239 // Take an array of elements and push it onto the stack
240 // (returning the new matched element set)
241 pushStack: function( elems, name, selector ) {
242 // Build a new jQuery matched element set
243 var ret = this.constructor();
244
245 if ( jQuery.isArray( elems ) ) {
246 push.apply( ret, elems );
247
248 } else {
249 jQuery.merge( ret, elems );
250 }
251
252 // Add the old object onto the stack (as a reference)
253 ret.prevObject = this;
254
255 ret.context = this.context;
256
257 if ( name === "find" ) {
258 ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
259 } else if ( name ) {
260 ret.selector = this.selector + "." + name + "(" + selector + ")";
261 }
262
263 // Return the newly-formed element set
264 return ret;
265 },
266
267 // Execute a callback for every element in the matched set.
268 // (You can seed the arguments with an array of args, but this is
269 // only used internally.)
270 each: function( callback, args ) {
271 return jQuery.each( this, callback, args );
272 },
273
274 ready: function( fn ) {
275 // Attach the listeners
276 jQuery.bindReady();
277
278 // Add the callback
279 readyList.add( fn );
280
281 return this;
282 },
283
284 eq: function( i ) {
285 i = +i;
286 return i === -1 ?
287 this.slice( i ) :
288 this.slice( i, i + 1 );
289 },
290
291 first: function() {
292 return this.eq( 0 );
293 },
294
295 last: function() {
296 return this.eq( -1 );
297 },
298
299 slice: function() {
300 return this.pushStack( slice.apply( this, arguments ),
301 "slice", slice.call(arguments).join(",") );
302 },
303
304 map: function( callback ) {
305 return this.pushStack( jQuery.map(this, function( elem, i ) {
306 return callback.call( elem, i, elem );
307 }));
308 },
309
310 end: function() {
311 return this.prevObject || this.constructor(null);
312 },
313
314 // For internal use only.
315 // Behaves like an Array's method, not like a jQuery method.
316 push: push,
317 sort: [].sort,
318 splice: [].splice
319};
320
321// Give the init function the jQuery prototype for later instantiation
322jQuery.fn.init.prototype = jQuery.fn;
323
324jQuery.extend = jQuery.fn.extend = function() {
325 var options, name, src, copy, copyIsArray, clone,
326 target = arguments[0] || {},
327 i = 1,
328 length = arguments.length,
329 deep = false;
330
331 // Handle a deep copy situation
332 if ( typeof target === "boolean" ) {
333 deep = target;
334 target = arguments[1] || {};
335 // skip the boolean and the target
336 i = 2;
337 }
338
339 // Handle case when target is a string or something (possible in deep copy)
340 if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
341 target = {};
342 }
343
344 // extend jQuery itself if only one argument is passed
345 if ( length === i ) {
346 target = this;
347 --i;
348 }
349
350 for ( ; i < length; i++ ) {
351 // Only deal with non-null/undefined values
352 if ( (options = arguments[ i ]) != null ) {
353 // Extend the base object
354 for ( name in options ) {
355 src = target[ name ];
356 copy = options[ name ];
357
358 // Prevent never-ending loop
359 if ( target === copy ) {
360 continue;
361 }
362
363 // Recurse if we're merging plain objects or arrays
364 if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
365 if ( copyIsArray ) {
366 copyIsArray = false;
367 clone = src && jQuery.isArray(src) ? src : [];
368
369 } else {
370 clone = src && jQuery.isPlainObject(src) ? src : {};
371 }
372
373 // Never move original objects, clone them
374 target[ name ] = jQuery.extend( deep, clone, copy );
375
376 // Don't bring in undefined values
377 } else if ( copy !== undefined ) {
378 target[ name ] = copy;
379 }
380 }
381 }
382 }
383
384 // Return the modified object
385 return target;
386};
387
388jQuery.extend({
389 noConflict: function( deep ) {
390 if ( window.$ === jQuery ) {
391 window.$ = _$;
392 }
393
394 if ( deep && window.jQuery === jQuery ) {
395 window.jQuery = _jQuery;
396 }
397
398 return jQuery;
399 },
400
401 // Is the DOM ready to be used? Set to true once it occurs.
402 isReady: false,
403
404 // A counter to track how many items to wait for before
405 // the ready event fires. See #6781
406 readyWait: 1,
407
408 // Hold (or release) the ready event
409 holdReady: function( hold ) {
410 if ( hold ) {
411 jQuery.readyWait++;
412 } else {
413 jQuery.ready( true );
414 }
415 },
416
417 // Handle when the DOM is ready
418 ready: function( wait ) {
419 // Either a released hold or an DOMready/load event and not yet ready
420 if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
421 // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
422 if ( !document.body ) {
423 return setTimeout( jQuery.ready, 1 );
424 }
425
426 // Remember that the DOM is ready
427 jQuery.isReady = true;
428
429 // If a normal DOM Ready event fired, decrement, and wait if need be
430 if ( wait !== true && --jQuery.readyWait > 0 ) {
431 return;
432 }
433
434 // If there are functions bound, to execute
435 readyList.fireWith( document, [ jQuery ] );
436
437 // Trigger any bound ready events
438 if ( jQuery.fn.trigger ) {
439 jQuery( document ).trigger( "ready" ).off( "ready" );
440 }
441 }
442 },
443
444 bindReady: function() {
445 if ( readyList ) {
446 return;
447 }
448
449 readyList = jQuery.Callbacks( "once memory" );
450
451 // Catch cases where $(document).ready() is called after the
452 // browser event has already occurred.
453 if ( document.readyState === "complete" ) {
454 // Handle it asynchronously to allow scripts the opportunity to delay ready
455 return setTimeout( jQuery.ready, 1 );
456 }
457
458 // Mozilla, Opera and webkit nightlies currently support this event
459 if ( document.addEventListener ) {
460 // Use the handy event callback
461 document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
462
463 // A fallback to window.onload, that will always work
464 window.addEventListener( "load", jQuery.ready, false );
465
466 // If IE event model is used
467 } else if ( document.attachEvent ) {
468 // ensure firing before onload,
469 // maybe late but safe also for iframes
470 document.attachEvent( "onreadystatechange", DOMContentLoaded );
471
472 // A fallback to window.onload, that will always work
473 window.attachEvent( "onload", jQuery.ready );
474
475 // If IE and not a frame
476 // continually check to see if the document is ready
477 var toplevel = false;
478
479 try {
480 toplevel = window.frameElement == null;
481 } catch(e) {}
482
483 if ( document.documentElement.doScroll && toplevel ) {
484 doScrollCheck();
485 }
486 }
487 },
488
489 // See test/unit/core.js for details concerning isFunction.
490 // Since version 1.3, DOM methods and functions like alert
491 // aren't supported. They return false on IE (#2968).
492 isFunction: function( obj ) {
493 return jQuery.type(obj) === "function";
494 },
495
496 isArray: Array.isArray || function( obj ) {
497 return jQuery.type(obj) === "array";
498 },
499
500 // A crude way of determining if an object is a window
501 isWindow: function( obj ) {
502 return obj && typeof obj === "object" && "setInterval" in obj;
503 },
504
505 isNumeric: function( obj ) {
506 return !isNaN( parseFloat(obj) ) && isFinite( obj );
507 },
508
509 type: function( obj ) {
510 return obj == null ?
511 String( obj ) :
512 class2type[ toString.call(obj) ] || "object";
513 },
514
515 isPlainObject: function( obj ) {
516 // Must be an Object.
517 // Because of IE, we also have to check the presence of the constructor property.
518 // Make sure that DOM nodes and window objects don't pass through, as well
519 if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
520 return false;
521 }
522
523 try {
524 // Not own constructor property must be Object
525 if ( obj.constructor &&
526 !hasOwn.call(obj, "constructor") &&
527 !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
528 return false;
529 }
530 } catch ( e ) {
531 // IE8,9 Will throw exceptions on certain host objects #9897
532 return false;
533 }
534
535 // Own properties are enumerated firstly, so to speed up,
536 // if last one is own, then all properties are own.
537
538 var key;
539 for ( key in obj ) {}
540
541 return key === undefined || hasOwn.call( obj, key );
542 },
543
544 isEmptyObject: function( obj ) {
545 for ( var name in obj ) {
546 return false;
547 }
548 return true;
549 },
550
551 error: function( msg ) {
552 throw new Error( msg );
553 },
554
555 parseJSON: function( data ) {
556 if ( typeof data !== "string" || !data ) {
557 return null;
558 }
559
560 // Make sure leading/trailing whitespace is removed (IE can't handle it)
561 data = jQuery.trim( data );
562
563 // Attempt to parse using the native JSON parser first
564 if ( window.JSON && window.JSON.parse ) {
565 return window.JSON.parse( data );
566 }
567
568 // Make sure the incoming data is actual JSON
569 // Logic borrowed from http://json.org/json2.js
570 if ( rvalidchars.test( data.replace( rvalidescape, "@" )
571 .replace( rvalidtokens, "]" )
572 .replace( rvalidbraces, "")) ) {
573
574 return ( new Function( "return " + data ) )();
575
576 }
577 jQuery.error( "Invalid JSON: " + data );
578 },
579
580 // Cross-browser xml parsing
581 parseXML: function( data ) {
582 var xml, tmp;
583 try {
584 if ( window.DOMParser ) { // Standard
585 tmp = new DOMParser();
586 xml = tmp.parseFromString( data , "text/xml" );
587 } else { // IE
588 xml = new ActiveXObject( "Microsoft.XMLDOM" );
589 xml.async = "false";
590 xml.loadXML( data );
591 }
592 } catch( e ) {
593 xml = undefined;
594 }
595 if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
596 jQuery.error( "Invalid XML: " + data );
597 }
598 return xml;
599 },
600
601 noop: function() {},
602
603 // Evaluates a script in a global context
604 // Workarounds based on findings by Jim Driscoll
605 // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
606 globalEval: function( data ) {
607 if ( data && rnotwhite.test( data ) ) {
608 // We use execScript on Internet Explorer
609 // We use an anonymous function so that context is window
610 // rather than jQuery in Firefox
611 ( window.execScript || function( data ) {
612 window[ "eval" ].call( window, data );
613 } )( data );
614 }
615 },
616
617 // Convert dashed to camelCase; used by the css and data modules
618 // Microsoft forgot to hump their vendor prefix (#9572)
619 camelCase: function( string ) {
620 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
621 },
622
623 nodeName: function( elem, name ) {
624 return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
625 },
626
627 // args is for internal usage only
628 each: function( object, callback, args ) {
629 var name, i = 0,
630 length = object.length,
631 isObj = length === undefined || jQuery.isFunction( object );
632
633 if ( args ) {
634 if ( isObj ) {
635 for ( name in object ) {
636 if ( callback.apply( object[ name ], args ) === false ) {
637 break;
638 }
639 }
640 } else {
641 for ( ; i < length; ) {
642 if ( callback.apply( object[ i++ ], args ) === false ) {
643 break;
644 }
645 }
646 }
647
648 // A special, fast, case for the most common use of each
649 } else {
650 if ( isObj ) {
651 for ( name in object ) {
652 if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
653 break;
654 }
655 }
656 } else {
657 for ( ; i < length; ) {
658 if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
659 break;
660 }
661 }
662 }
663 }
664
665 return object;
666 },
667
668 // Use native String.trim function wherever possible
669 trim: trim ?
670 function( text ) {
671 return text == null ?
672 "" :
673 trim.call( text );
674 } :
675
676 // Otherwise use our own trimming functionality
677 function( text ) {
678 return text == null ?
679 "" :
680 text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
681 },
682
683 // results is for internal usage only
684 makeArray: function( array, results ) {
685 var ret = results || [];
686
687 if ( array != null ) {
688 // The window, strings (and functions) also have 'length'
689 // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
690 var type = jQuery.type( array );
691
692 if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
693 push.call( ret, array );
694 } else {
695 jQuery.merge( ret, array );
696 }
697 }
698
699 return ret;
700 },
701
702 inArray: function( elem, array, i ) {
703 var len;
704
705 if ( array ) {
706 if ( indexOf ) {
707 return indexOf.call( array, elem, i );
708 }
709
710 len = array.length;
711 i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
712
713 for ( ; i < len; i++ ) {
714 // Skip accessing in sparse arrays
715 if ( i in array && array[ i ] === elem ) {
716 return i;
717 }
718 }
719 }
720
721 return -1;
722 },
723
724 merge: function( first, second ) {
725 var i = first.length,
726 j = 0;
727
728 if ( typeof second.length === "number" ) {
729 for ( var l = second.length; j < l; j++ ) {
730 first[ i++ ] = second[ j ];
731 }
732
733 } else {
734 while ( second[j] !== undefined ) {
735 first[ i++ ] = second[ j++ ];
736 }
737 }
738
739 first.length = i;
740
741 return first;
742 },
743
744 grep: function( elems, callback, inv ) {
745 var ret = [], retVal;
746 inv = !!inv;
747
748 // Go through the array, only saving the items
749 // that pass the validator function
750 for ( var i = 0, length = elems.length; i < length; i++ ) {
751 retVal = !!callback( elems[ i ], i );
752 if ( inv !== retVal ) {
753 ret.push( elems[ i ] );
754 }
755 }
756
757 return ret;
758 },
759
760 // arg is for internal usage only
761 map: function( elems, callback, arg ) {
762 var value, key, ret = [],
763 i = 0,
764 length = elems.length,
765 // jquery objects are treated as arrays
766 isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
767
768 // Go through the array, translating each of the items to their
769 if ( isArray ) {
770 for ( ; i < length; i++ ) {
771 value = callback( elems[ i ], i, arg );
772
773 if ( value != null ) {
774 ret[ ret.length ] = value;
775 }
776 }
777
778 // Go through every key on the object,
779 } else {
780 for ( key in elems ) {
781 value = callback( elems[ key ], key, arg );
782
783 if ( value != null ) {
784 ret[ ret.length ] = value;
785 }
786 }
787 }
788
789 // Flatten any nested arrays
790 return ret.concat.apply( [], ret );
791 },
792
793 // A global GUID counter for objects
794 guid: 1,
795
796 // Bind a function to a context, optionally partially applying any
797 // arguments.
798 proxy: function( fn, context ) {
799 if ( typeof context === "string" ) {
800 var tmp = fn[ context ];
801 context = fn;
802 fn = tmp;
803 }
804
805 // Quick check to determine if target is callable, in the spec
806 // this throws a TypeError, but we will just return undefined.
807 if ( !jQuery.isFunction( fn ) ) {
808 return undefined;
809 }
810
811 // Simulated bind
812 var args = slice.call( arguments, 2 ),
813 proxy = function() {
814 return fn.apply( context, args.concat( slice.call( arguments ) ) );
815 };
816
817 // Set the guid of unique handler to the same of original handler, so it can be removed
818 proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
819
820 return proxy;
821 },
822
823 // Mutifunctional method to get and set values to a collection
824 // The value/s can optionally be executed if it's a function
825 access: function( elems, key, value, exec, fn, pass ) {
826 var length = elems.length;
827
828 // Setting many attributes
829 if ( typeof key === "object" ) {
830 for ( var k in key ) {
831 jQuery.access( elems, k, key[k], exec, fn, value );
832 }
833 return elems;
834 }
835
836 // Setting one attribute
837 if ( value !== undefined ) {
838 // Optionally, function values get executed if exec is true
839 exec = !pass && exec && jQuery.isFunction(value);
840
841 for ( var i = 0; i < length; i++ ) {
842 fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
843 }
844
845 return elems;
846 }
847
848 // Getting an attribute
849 return length ? fn( elems[0], key ) : undefined;
850 },
851
852 now: function() {
853 return ( new Date() ).getTime();
854 },
855
856 // Use of jQuery.browser is frowned upon.
857 // More details: http://docs.jquery.com/Utilities/jQuery.browser
858 uaMatch: function( ua ) {
859 ua = ua.toLowerCase();
860
861 var match = rwebkit.exec( ua ) ||
862 ropera.exec( ua ) ||
863 rmsie.exec( ua ) ||
864 ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
865 [];
866
867 return { browser: match[1] || "", version: match[2] || "0" };
868 },
869
870 sub: function() {
871 function jQuerySub( selector, context ) {
872 return new jQuerySub.fn.init( selector, context );
873 }
874 jQuery.extend( true, jQuerySub, this );
875 jQuerySub.superclass = this;
876 jQuerySub.fn = jQuerySub.prototype = this();
877 jQuerySub.fn.constructor = jQuerySub;
878 jQuerySub.sub = this.sub;
879 jQuerySub.fn.init = function init( selector, context ) {
880 if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
881 context = jQuerySub( context );
882 }
883
884 return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
885 };
886 jQuerySub.fn.init.prototype = jQuerySub.fn;
887 var rootjQuerySub = jQuerySub(document);
888 return jQuerySub;
889 },
890
891 browser: {}
892});
893
894// Populate the class2type map
895jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
896 class2type[ "[object " + name + "]" ] = name.toLowerCase();
897});
898
899browserMatch = jQuery.uaMatch( userAgent );
900if ( browserMatch.browser ) {
901 jQuery.browser[ browserMatch.browser ] = true;
902 jQuery.browser.version = browserMatch.version;
903}
904
905// Deprecated, use jQuery.browser.webkit instead
906if ( jQuery.browser.webkit ) {
907 jQuery.browser.safari = true;
908}
909
910// IE doesn't match non-breaking spaces with \s
911if ( rnotwhite.test( "\xA0" ) ) {
912 trimLeft = /^[\s\xA0]+/;
913 trimRight = /[\s\xA0]+$/;
914}
915
916// All jQuery objects should point back to these
917rootjQuery = jQuery(document);
918
919// Cleanup functions for the document ready method
920if ( document.addEventListener ) {
921 DOMContentLoaded = function() {
922 document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
923 jQuery.ready();
924 };
925
926} else if ( document.attachEvent ) {
927 DOMContentLoaded = function() {
928 // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
929 if ( document.readyState === "complete" ) {
930 document.detachEvent( "onreadystatechange", DOMContentLoaded );
931 jQuery.ready();
932 }
933 };
934}
935
936// The DOM ready check for Internet Explorer
937function doScrollCheck() {
938 if ( jQuery.isReady ) {
939 return;
940 }
941
942 try {
943 // If IE is used, use the trick by Diego Perini
944 // http://javascript.nwbox.com/IEContentLoaded/
945 document.documentElement.doScroll("left");
946 } catch(e) {
947 setTimeout( doScrollCheck, 1 );
948 return;
949 }
950
951 // and execute any waiting functions
952 jQuery.ready();
953}
954
955return jQuery;
956
957})();
958
959
960// String to Object flags format cache
961var flagsCache = {};
962
963// Convert String-formatted flags into Object-formatted ones and store in cache
964function createFlags( flags ) {
965 var object = flagsCache[ flags ] = {},
966 i, length;
967 flags = flags.split( /\s+/ );
968 for ( i = 0, length = flags.length; i < length; i++ ) {
969 object[ flags[i] ] = true;
970 }
971 return object;
972}
973
974/*
975 * Create a callback list using the following parameters:
976 *
977 * flags: an optional list of space-separated flags that will change how
978 * the callback list behaves
979 *
980 * By default a callback list will act like an event callback list and can be
981 * "fired" multiple times.
982 *
983 * Possible flags:
984 *
985 * once: will ensure the callback list can only be fired once (like a Deferred)
986 *
987 * memory: will keep track of previous values and will call any callback added
988 * after the list has been fired right away with the latest "memorized"
989 * values (like a Deferred)
990 *
991 * unique: will ensure a callback can only be added once (no duplicate in the list)
992 *
993 * stopOnFalse: interrupt callings when a callback returns false
994 *
995 */
996jQuery.Callbacks = function( flags ) {
997
998 // Convert flags from String-formatted to Object-formatted
999 // (we check in cache first)
1000 flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
1001
1002 var // Actual callback list
1003 list = [],
1004 // Stack of fire calls for repeatable lists
1005 stack = [],
1006 // Last fire value (for non-forgettable lists)
1007 memory,
1008 // Flag to know if list is currently firing
1009 firing,
1010 // First callback to fire (used internally by add and fireWith)
1011 firingStart,
1012 // End of the loop when firing
1013 firingLength,
1014 // Index of currently firing callback (modified by remove if needed)
1015 firingIndex,
1016 // Add one or several callbacks to the list
1017 add = function( args ) {
1018 var i,
1019 length,
1020 elem,
1021 type,
1022 actual;
1023 for ( i = 0, length = args.length; i < length; i++ ) {
1024 elem = args[ i ];
1025 type = jQuery.type( elem );
1026 if ( type === "array" ) {
1027 // Inspect recursively
1028 add( elem );
1029 } else if ( type === "function" ) {
1030 // Add if not in unique mode and callback is not in
1031 if ( !flags.unique || !self.has( elem ) ) {
1032 list.push( elem );
1033 }
1034 }
1035 }
1036 },
1037 // Fire callbacks
1038 fire = function( context, args ) {
1039 args = args || [];
1040 memory = !flags.memory || [ context, args ];
1041 firing = true;
1042 firingIndex = firingStart || 0;
1043 firingStart = 0;
1044 firingLength = list.length;
1045 for ( ; list && firingIndex < firingLength; firingIndex++ ) {
1046 if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
1047 memory = true; // Mark as halted
1048 break;
1049 }
1050 }
1051 firing = false;
1052 if ( list ) {
1053 if ( !flags.once ) {
1054 if ( stack && stack.length ) {
1055 memory = stack.shift();
1056 self.fireWith( memory[ 0 ], memory[ 1 ] );
1057 }
1058 } else if ( memory === true ) {
1059 self.disable();
1060 } else {
1061 list = [];
1062 }
1063 }
1064 },
1065 // Actual Callbacks object
1066 self = {
1067 // Add a callback or a collection of callbacks to the list
1068 add: function() {
1069 if ( list ) {
1070 var length = list.length;
1071 add( arguments );
1072 // Do we need to add the callbacks to the
1073 // current firing batch?
1074 if ( firing ) {
1075 firingLength = list.length;
1076 // With memory, if we're not firing then
1077 // we should call right away, unless previous
1078 // firing was halted (stopOnFalse)
1079 } else if ( memory && memory !== true ) {
1080 firingStart = length;
1081 fire( memory[ 0 ], memory[ 1 ] );
1082 }
1083 }
1084 return this;
1085 },
1086 // Remove a callback from the list
1087 remove: function() {
1088 if ( list ) {
1089 var args = arguments,
1090 argIndex = 0,
1091 argLength = args.length;
1092 for ( ; argIndex < argLength ; argIndex++ ) {
1093 for ( var i = 0; i < list.length; i++ ) {
1094 if ( args[ argIndex ] === list[ i ] ) {
1095 // Handle firingIndex and firingLength
1096 if ( firing ) {
1097 if ( i <= firingLength ) {
1098 firingLength--;
1099 if ( i <= firingIndex ) {
1100 firingIndex--;
1101 }
1102 }
1103 }
1104 // Remove the element
1105 list.splice( i--, 1 );
1106 // If we have some unicity property then
1107 // we only need to do this once
1108 if ( flags.unique ) {
1109 break;
1110 }
1111 }
1112 }
1113 }
1114 }
1115 return this;
1116 },
1117 // Control if a given callback is in the list
1118 has: function( fn ) {
1119 if ( list ) {
1120 var i = 0,
1121 length = list.length;
1122 for ( ; i < length; i++ ) {
1123 if ( fn === list[ i ] ) {
1124 return true;
1125 }
1126 }
1127 }
1128 return false;
1129 },
1130 // Remove all callbacks from the list
1131 empty: function() {
1132 list = [];
1133 return this;
1134 },
1135 // Have the list do nothing anymore
1136 disable: function() {
1137 list = stack = memory = undefined;
1138 return this;
1139 },
1140 // Is it disabled?
1141 disabled: function() {
1142 return !list;
1143 },
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: