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
1diff --git a/.classpath b/.classpath
2deleted file mode 100644
3index a47380d..0000000
4--- a/.classpath
5+++ /dev/null
6@@ -1,28 +0,0 @@
7-<?xml version="1.0" encoding="UTF-8"?>
8-<classpath>
9- <classpathentry kind="src" output="target/classes" path="src/main/java">
10- <attributes>
11- <attribute name="optional" value="true"/>
12- <attribute name="maven.pomderived" value="true"/>
13- </attributes>
14- </classpathentry>
15- <classpathentry kind="src" path="src/generated/java"/>
16- <classpathentry kind="src" path="src/test/java"/>
17- <classpathentry kind="src" path="src/main/resources"/>
18- <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
19- <attributes>
20- <attribute name="maven.pomderived" value="true"/>
21- </attributes>
22- </classpathentry>
23- <classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
24- <attributes>
25- <attribute name="maven.pomderived" value="true"/>
26- </attributes>
27- </classpathentry>
28- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
29- <attributes>
30- <attribute name="maven.pomderived" value="true"/>
31- </attributes>
32- </classpathentry>
33- <classpathentry kind="output" path="target/classes"/>
34-</classpath>
35diff --git a/.classpath-linux b/.classpath-linux
36deleted file mode 100644
37index d05023c..0000000
38--- a/.classpath-linux
39+++ /dev/null
40@@ -1,11 +0,0 @@
41-<?xml version="1.0" encoding="UTF-8"?>
42-<classpath>
43- <classpathentry kind="src" path="src/main/java"/>
44- <classpathentry kind="src" path="src/test/java"/>
45- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/>
46- <classpathentry kind="lib" path="lib/ant-1.6.5.jar"/>
47- <classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
48- <classpathentry kind="lib" path="lib/guice-2.0.jar"/>
49- <classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
50- <classpathentry kind="output" path="z_build"/>
51-</classpath>
52diff --git a/.classpath-mac b/.classpath-mac
53deleted file mode 100644
54index d05023c..0000000
55--- a/.classpath-mac
56+++ /dev/null
57@@ -1,11 +0,0 @@
58-<?xml version="1.0" encoding="UTF-8"?>
59-<classpath>
60- <classpathentry kind="src" path="src/main/java"/>
61- <classpathentry kind="src" path="src/test/java"/>
62- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/>
63- <classpathentry kind="lib" path="lib/ant-1.6.5.jar"/>
64- <classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
65- <classpathentry kind="lib" path="lib/guice-2.0.jar"/>
66- <classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
67- <classpathentry kind="output" path="z_build"/>
68-</classpath>
69diff --git a/.editorconfig b/.editorconfig
70new file mode 100644
71index 0000000..461ba5b
72--- /dev/null
73+++ b/.editorconfig
74@@ -0,0 +1,44 @@
75+root = true
76+
77+[*]
78+max_line_length = 100
79+trim_trailing_whitespace = true
80+insert_final_newline = true
81+charset = utf-8
82+indent_style = space
83+
84+[{*.sh,gradlew}]
85+end_of_line = lf
86+
87+[{*.bat,*.cmd}]
88+end_of_line = crlf
89+
90+[*.md]
91+# Trailing space means "paragraph continues" in markdown
92+trim_trailing_whitespace = false
93+
94+[*.java]
95+indent_size = 2
96+ij_continuation_indent_size = 4
97+# Doc: https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0
98+# $ means "static"
99+ij_java_wrap_long_lines = true
100+ij_java_wrap_comments = true
101+ij_java_imports_layout = $*,|,*
102+ij_java_use_single_class_imports = true
103+# Below does not seem to work as of 2021.1.1 even though
104+# https://youtrack.jetbrains.com/issue/IDEA-225733 is resolved
105+wildcard_import_limit = 999
106+ij_kotlin_name_count_to_use_star_import = 999
107+ij_kotlin_name_count_to_use_star_import_for_members = 999
108+ij_java_class_count_to_use_import_on_demand = 999
109+ij_java_names_count_to_use_import_on_demand = 999
110+
111+[*.js]
112+indent_size = 2
113+
114+[*.xml]
115+indent_size = 2
116+
117+[{*.yml,*.yaml}]
118+indent_size = 2
119diff --git a/.gitignore b/.gitignore
120deleted file mode 100644
121index cc89f26..0000000
122--- a/.gitignore
123+++ /dev/null
124@@ -1,30 +0,0 @@
125-.ant-targets*
126-.classpath
127-.gitignore
128-.gradle
129-.idea
130-.project
131-.settings
132-/_eclipse/
133-/local.properties
134-TESTNG-*
135-build
136-eclipse-build
137-gradle.properties
138-ivy*
139-javadocs
140-kobaltBuild
141-lib
142-maven-testng-plugin-1.2.jar
143-nb-configuration.xml
144-out
145-src/generated
146-src/test/java/test/ignore
147-target
148-test-output
149-test-output-tests
150-testng.iml
151-z_build
152-.kobalt
153-.DS_Store
154-
155diff --git a/.project b/.project
156deleted file mode 100644
157index 33d1108..0000000
158--- a/.project
159+++ /dev/null
160@@ -1,24 +0,0 @@
161-<?xml version="1.0" encoding="UTF-8"?>
162-<projectDescription>
163- <name>testng</name>
164- <comment></comment>
165- <projects>
166- </projects>
167- <buildSpec>
168- <buildCommand>
169- <name>org.eclipse.jdt.core.javabuilder</name>
170- <arguments>
171- </arguments>
172- </buildCommand>
173- <buildCommand>
174- <name>org.eclipse.m2e.core.maven2Builder</name>
175- <arguments>
176- </arguments>
177- </buildCommand>
178- </buildSpec>
179- <natures>
180- <nature>org.eclipse.pde.PluginNature</nature>
181- <nature>org.eclipse.m2e.core.maven2Nature</nature>
182- <nature>org.eclipse.jdt.core.javanature</nature>
183- </natures>
184-</projectDescription>
185diff --git a/.travis.yml b/.travis.yml
186deleted file mode 100644
187index 2cfe765..0000000
188--- a/.travis.yml
189+++ /dev/null
190@@ -1,12 +0,0 @@
191-language: java
192-jdk:
193- - oraclejdk8
194- - oraclejdk7
195- - openjdk7
196-
197-script:
198- - ./gradlew check --stacktrace --info
199-after_success:
200- - ./travis.sh deploy
201- - ./travis.sh sonarqube
202-
203diff --git a/ANNOUNCEMENT.txt b/ANNOUNCEMENT.txt
204index abb2222..0565cc3 100644
205--- a/ANNOUNCEMENT.txt
206+++ b/ANNOUNCEMENT.txt
207@@ -1,7 +1,7 @@
208 javalobby.org
209 testdriven.com
210 opensourcetesting.org
211-http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=68
212+https://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=68
213 java.net
214 comp.lang.java.programmer
215
216@@ -15,11 +15,11 @@ to transparently distribute tests on many machines and collect their results.
217
218 Announcement:
219
220-http://beust.com/weblog/archives/000361.html
221+https://beust.com/weblog/archives/000361.html
222
223 Details on Distributed TestNG:
224
225-http://beust.com/weblog/archives/000362.html
226+https://beust.com/weblog/archives/000362.html
227
228
229 ==========
230@@ -28,11 +28,11 @@ The TestNG team is happy to announce the immediate availability of TestNG 4.0, w
231
232 The announcement, along with a few examples and summary of the new features, can be found here:
233
234- http://tinyurl.com/dxlbh
235+ https://tinyurl.com/dxlbh
236
237 --
238-C�dric
239-http://testng.org
240+C�dric
241+https://testng.org
242
243 ================
244
245@@ -40,7 +40,7 @@ Announcing TestNG 2.3
246
247 The TestNG team is happy to announce the availability of TestNG 2.3.
248
249-The 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).
250+The 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).
251
252 What's new:
253
254@@ -61,7 +61,7 @@ Try it and let us know what you think!
255
256 ===
257
258-I am happy to announce the availability of TestNG 2.1 (http://beust.com/testng).
259+I am happy to announce the availability of TestNG 2.1 (https://beust.com/testng).
260
261 TestNG 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:
262
263@@ -73,7 +73,7 @@ TestNG is a testing framework inspired from JUnit and NUnit but introducing some
264
265 Some of the new features in this version include:
266
267- * 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.
268+ * 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.
269
270 * 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.
271
272@@ -91,7 +91,7 @@ Announcing TestNG for Eclipse
273
274 The TestNG team is happy to announce the first release of the TestNG plug-in for Eclipse.
275
276-http://beust.com/testng
277+https://beust.com/testng
278
279 This first release covers the basic functionalities of TestNG, among which:
280
281@@ -100,11 +100,11 @@ This first release covers the basic functionalities of TestNG, among which:
282
283 A more detailed overview can be found here:
284
285-http://beust.com/weblog/archives/000261.html
286+https://beust.com/weblog/archives/000261.html
287
288 and the documentation and snapshots here:
289
290-http://beust.com/testng/main.html#eclipse
291+https://beust.com/testng/main.html#eclipse
292
293 --
294 Cedric
295diff --git a/CHANGES.txt b/CHANGES.txt
296index fb5ca6d..17b5d25 100644
297--- a/CHANGES.txt
298+++ b/CHANGES.txt
299@@ -1,4 +1,465 @@
300-Current
301+Current
302+Fixed: GITHUB-2701: Bump gradle version to 7.3.3 to support java17 build (ZhangJian He)
303+Fixed: GITHUB-2646: Streamline Logging Across TestNG (Krishnan Mahadevan)
304+Fixed: GITHUB-2658: Inheritance + dependsOnMethods (Krishnan Mahadevan)
305+Fixed: GITHUB-2664: Order for DependsOnGroups has changed after TestNg 7.4.0 (Krishnan Mahadevan)
306+Fixed: 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)
307+Fixed: GITHUB-2693: TestNG ignores 'dataproviderthreadcount' CLA (Krishnan Mahadevan)
308+Fixed: GITHUB-2685: TestInvoker should clear Thread.interrupted flag before calling ITestListeners (Roman Morskyi)
309+Fixed: GITHUB-2684: AfterGroups config annotation does not consider retries for tests (Roman Morskyi)
310+Fixed: GITHUB-2689: Yaml parser: implement loadClasses flag (Dzmitry Sankouski)
311+Fixed: GITHUB-2676: NPE is triggered when working with ITestObjectFactory (Krishnan Mahadevan)
312+Fixed: GITHUB-2674: Run onTestSkipped for each value from data provider (Krishnan Mahadevan)
313+Fixed: GITHUB-2672: Log real stacktrace when test times out. (cdalexndr)
314+Fixed: GITHUB-2669: A failed retry with ITestContext will lose the ITestContext. (Nan Liang)
315+Fixed: GITHUB-2643: assertEquals(Set,Set) now ignores ordering as it did before. (Elis Edlund)
316+Fixed: GITHUB-2653: Assert methods requires casting since TestNg 7.0 for mixed boxed and unboxed primitives in assertEquals.
317+Fixed: GITHUB-2229: Restore @BeforeGroups and @AfterGroups Annotations functionality (Krishnan Mahadevan)
318+Fixed: GITHUB-2563: Skip test if its data provider provides no data (Krishnan Mahadevan)
319+Fixed: GITHUB-2535: TestResult.getEndMillis() returns 0 for skipped configuration - after upgrading testng to 7.0 + (Krishnan Mahadevan)
320+Fixed: GITHUB-2638: "[WARN] Ignoring duplicate listener" appears when running .xml suite with <listeners> and <suite-files> (Krishnan Mahadevan)
321+Fixed: GITHUB-1297: Passed configuration methods appear in testng-failed.xml, when failure was after passed test (Dzmitry Sankouski)
322+New: Decouple configuration unit tests from main suite (Dzmitry Sankouski).
323+Fixed: GITHUB-2536: Problems with Nested Test Classes (Krishnan Mahadevan)
324+Fixed: GITHUB-2558:Make IExecutionListener, ITestListener, IInvokedMethodListener, IConfigurationListener, ISuiteListener finish method with reverse order (dianny)
325+Fixed: GITHUB-2532: Apply commandline switches for suites in jar files (Dzmitry Sankouski).
326+Fixed: GITHUB-2558: Make IExecutionListener, ITestListener, IInvokedMethodListener, IConfigurationListener, ISuiteListener execute in the order of insertion (Krishnan Mahadevan)
327+Fixed: GITHUB-2611: Config Failures not included in testng-failed.xml when its part of a different test class (Krishnan Mahadevan)
328+Fixed: GITHUB-2613: Ignored Tests are not retrieved for a mixed test class (test with enabled, disabled and ignored test method) (Krishnan Mahadevan)
329+Fixed: GITHUB-849: Performance improvement by fixing hashCode (testn & Vladimir Sitnikov)
330+Fixed: GITHUB-2570: Use Guice injector for instantiate IRetryAnalyzer (Krishnan Mahadevan)
331+Fix: use proper instances for beforeClass callback when different instances collide on hash codes
332+Fixed: Fix parallel and configfailurepolicy parsing in tr_TR locale
333+Fixed: Wrong results from GuiceBasedObjectDispenser when there's Object#hashCode collision
334+Changed: 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)
335+Added: GITHUB-2564: Added license files as META-INF/LICENSE.txt within the released jar
336+Test: GITHUB-2564: Added pax-exam-based OSGi test to verify the manifest
337+Changed: GITHUB-2564: Migrated the build to Gradle 7.0.2
338+Fixed: GITHUB-2576: Guice 5.0 drops no-aop variant, so TestNG should probably upgrade and avoid no-aop dependency (Nan Liang)
339+Fixed: GITHUB-2566: Reporter#getOutput(ITestResult tr) uses Map.get(tr.hashCode()) which might result in surprising results (Krishnan Mahadevan)
340+Fixed: GITHUB-2565: Dataprovider only supporting a raw type for Iterator return type (Krishnan Mahadevan)
341+Fixed: GITHUB-2557: Flaky test: ThreadAffinityTest#testThreadAffinity (Krishnan Mahadevan)
342+Fixed: GITHUB-2567: MethodHelper#CANONICAL_NAME_CACHE is never reset, so it could result in a memory leak (Krishnan Mahadevan)
343+Fixed: GITHUB-2540: assertEquals(Collection) need check order (Stuart Marks & Julien Herr)
344+Fixed: GITHUB-2360: Groovy 3 internal generated methods are detected as test methods (Ian Springer)
345+Fixed: GITHUB-2522: TestNG 7.4.0 Can not skip test through listener (Nan Liang)
346+Fixed: GITHUB-2529: Link to testng.xml in CONTRIBUTING.md file was dead
347+Fixed: 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)
348+Fixed: GITHUB-2426: New feature TestNG - getFactoryMethodParamsInfo on ConfigurationMethod (Krishnan Mahadevan)
349+Fixed: GITHUB-2517: Factory data-provider parameters not displayed in 'testng-failed.xml' file (Pavel Sakharchuk)
350+Fixed: GITHUB-279: Guice dependency injection into listeners and reporters (Krishnan Mahadevan)
351+Fixed: GITHUB-2504: Data provider data cannot be populated to onTestStart hook when BeforeMethod is failed (Krishnan Mahadevan)
352+Fixed: GITHUB-2489: Hierarchical base- and test-class @AfterClass methods out of order using groups (Krishnan Mahadevan)
353+Fixed: GITHUB-2493: Avoid NPE from TextReporter execution when a dataprovider method provides null (baflQA)
354+Fixed: GITHUB-2483: Asymmetric not equals (cdalexndr)
355+Fixed: GITHUB-2486: assertSame/assertNotSame broken after GITHUB-2296 (Vitalii Diravka)
356+Fixed: GITHUB-2490: assertNotEquals returns fast when argument is null, not calling equals(Object) (Anindya Roy)
357+Fixed: GITHUB-2500: Mention in assertEqualsNoOrder doc that arrays are not compared deeply (Marcono1234)
358+Fixed: GITHUB-2544: TestNG Retry Fails on complex data-provider arguments (Anindya Roy)
359+
360+7.4.0
361+New : GITHUB-2459: Support configurable start time - emailable report (Barry Evans)
362+Fixed: GITHUB-2467: XmlTest does not copy the xmlClasses during clone (C.V.Aditya)
363+Fixed: GITHUB-2469: Parameters added in XmlTest during AlterSuiteListener not available in SuiteListener (C.V.Aditya)
364+Fixed: GITHUB-2296: Fix for assertEquals not working for sets as order is not guaranteed. (Prashant Maroti)
365+Fixed: GITHUB-2465: Fix bux where Strings.join returns empty String
366+Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Julien Herr & Krishnan Mahadevan)
367+New : GITHUB-2456: Add onDataProviderFailure listener (Krishnan Mahadevan)
368+Fixed: GITHUB-2445: NPE in FailedReporter.java With Tests Created in Factory (Arham Jain)
369+Fixed: GITHUB-2428: Configuration methods have the same test class instance when @Factory is being used (Nan Liang)
370+Fixed: GITHUB-2440: Fixed an issue when case timeout returned an incorrect exception and effect the next other test case (Yao Ma)
371+New: 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)
372+Fixed: GITHUB-2432: Rework MethodInheritance.fixMethodInheritance to "soft" dependencies (Krishnan Mahadevan)
373+Fixed: GITHUB-2429: Seggregate Dependency Injection out as a clear implementation (Krishnan Mahadevan)
374+Fixed: GITHUB-2435: getParameterIndex() always return 0 in test listener
375+Fixed: GITHUB-2406: TestNG 7.3.0 transitive vulnerability CVE-2020-11022 and CVE-2020-11023 due to JQuery 3.4.1 (Krishnan Mahadevan)
376+Fixed: GITHUB-2405: Regression: Using TestNG via Maven breaks when optional Guice dependency is unavailable (Krishnan Mahadevan)
377+Fixed: GITHUB-2427: Guice module (suite parent-module and test module) configure() method is called multiple times (Jacek Centkowski)
378+Fixed: GITHUB-2419: TestNG JUnit reports are not valid if system output contains XML tags (Lorenzo Orsatti)
379+Fixed: GITHUB-188: suite parallel="methods" does not work when there are multiple <test> tags in the testng.xml (Krishnan Mahadevan)
380+Fixed: GITHUB-346: When a method is annotated with both BeforeGroups and AfterGroups only AfterGroup is executed (Krishnan Mahadevan)
381+Fixed: GITHUB-2403: Suite.xml files attempt to make web request when suite references standard TestNG DTD using HTTP (Krishnan Mahadevan)
382+New: GITHUB-2385: Make @Listeners can work for implemented interfaces and Inherited class (Nan Liang)
383+Fixed: GITHUB-2053: MethodHelper.collectAndOrderMethods() Hangs when Parallel Instance and dependsOnGroups (Krishnan Mahadevan)
384+Fixed: GITHUB-2400: BeforeClass/Method (and AfterClass/Method) configuration methods that override default methods are invoked multiple times (Krishnan Mahadevan)
385+Fixed: GITHUB-2396: @Ignore on method level doesn't work as expected (Krishnan Mahadevan)
386+Fixed: GITHUB-2382: TestNG version should be specified in MANIFEST.MF (Krishnan Mahadevan)
387+Fixed: GITHUB-2096: 7.0.0-beta6 memory issues (regression) (Krishnan Mahadevan)
388+Fixed: GITHUB-2355: TestNG creates multiple Guice Module Instances (Krishnan Mahadevan)
389+Fixed: GITHUB-2374: Add file name to the warning message (Krishnan Mahadevan)
390+Fixed: GITHUB-2321: -Dtestng.thread.affinity=true do not work when running multiple instance of test in parallel (Nan Liang)
391+Fixed: GITHUB-2363: JS error when switching theme (Krishnan Mahadevan)
392+Fixed: GITHUB-2361: No way to enforce @Test(singleThreaded = true) when test defined in base class (Krishnan Mahadevan)
393+Fixed: GITHUB-2343: Injectors are not reused when they share the same set of modules (Krishnan Mahadevan)
394+Fixed: GITHUB-2346: ITestResult attributes are null when retrieved by Listener onTestStart if test fails at BeforeMethod (Krishnan Mahadevan)
395+Fixed: GITHUB-2357: TestNG 7.3.0 transitive dependencies
396+
397+7.3.0
398+Fixed: GITHUB-2328: Add ability to get test method for which configuration method was called (Krishnan Mahadevan)
399+Fixed: GITHUB-2327: Parameters not present on skipped Test (Eric Kubenka)
400+Fixed: GITHUB-2232: Null Pointer Exception in ConfigInvoker.setMethodInvocationFailure (Krishnan Mahadevan)
401+Fixed: GITHUB-2312: IAnnotationTransformer called multiple time Discrepancy between 6.x and 7.x (Krishnan Mahadevan)
402+New: GITHUB-2315: TextReporter console output does not nicely print native array data parameters (James Sassano)
403+Fixed: GITHUB-2301: Add support for object-based reporter configurations (Scott Babcock)
404+New: Deprecate org.testng.ReporterConfig (Julien Herr)
405+Fixed: GITHUB-2300: Vulnerable Dependency: Please upgrade JCommander to 1.75 or above (Krishnan Mahadevan)
406+Fixed: GITHUB-2182: Removed exception catching as valid behaviour
407+Fixed: GITHUB-2273: Use SPI to load Guice modules (Bartosz Popiela)
408+Fixed: GITHUB-2280: Prevent Retry from happening endlessly (Paweł Nadolski)
409+Fixed: GITHUB-553: Better error message when dealing with classes having both Constructor and Factory methods (Krishnan Mahadevan)
410+Fixed: GITHUB-2267: RetryAnalyzer is not set properly and consistent when using dataprovider (Eric Kubenka)
411+Fixed: GITHUB-2266: Support Test retries via Callbacks (Krishnan Mahadevan)
412+Fixed: GITHUB-2209: @Before and @After are not executed as expected when a combination of class and method level grouping is applied (Krishnan Mahadevan)
413+Fixed: GITHUB-2259: Missing configuration for ServiceLoader Listeners (Krishnan Mahadevan)
414+Fixed: GITHUB-2257: Facilitate retry of configuration methods via call backs (Krishnan Mahadevan)
415+Fixed: GITHUB-2223: testng 7.1.0 java.lang.ClassNotFoundException: com.google.inject.Stage (Krishnan Mahadevan)
416+Fixed: GITHUB-217: Configure TestNG to fail when all tests are skipped (Krishnan Mahadevan)
417+Fixed: GITHUB-2255: Ensure test method parameters are visible in BeforeMethod config method (Krishnan Mahadevan)
418+Fixed: GITHUB-2251: NullPointerException at test with timeOut (Krishnan Mahadevan)
419+Fixed: GITHUB-2249: Not abstract super-classes mess up test run order (Sergii Kim)
420+Fixed: GITHUB-2195: NPE Using groups and @Before/@AfterMethod with alwaysRun and dependsOnMethods (Tomas & Julien Herr)
421+Fixed: GITHUB-2238: Parameter values should be overridable from JVM arguments (Krishnan Mahadevan)
422+Fixed: GITHUB-2231: Incorrect hierarchy in testng.xml file created programmatically and failed to run. (Krishnan Mahadevan)
423+Fixed: GITHUB-2235: expectedExceptions mismatch because of wrapping (Krishnan Mahadevan)
424+Fixed: GITHUB-2220: ITestListener's methods get called multiple times for one test, when @Listeners annotation is used in multiple test classes (Krishnan Mahadevan)
425+Fixed: GITHUB-2211: assertEquals for Map sometimes does not use provided message (Krishnan Mahadevan)
426+Fixed: GITHUB-1632: throwing SkipException sets iTestResult status to Failure instead of Skip (Krishnan Mahadevan)
427+Fixed: GITHUB-2207: Allow dependency injector factory to be configured via args (dmikhievich)
428+Fixed: GITHUB-2193: Ignore local url for DTD security check (Li.Zhao & Julien Herr)
429+Fixed: GITHUB-1968: Upgrade to Gradle 6.0
430+
431+7.1.0
432+New : GITHUB-2199: Allow users to provide their own Injector for Dependency Injection (Krishnan Mahadevan)
433+Fixed: GITHUB-2180: Write scenario details for Retried tests (Devendra Raju K)
434+Fixed: GITHUB-2124: JUnit Report should contain the output of org.testng.Reporter (Krishnan Mahadevan)
435+Fixed: GITHUB-2171: Ability to embed attachments and make them available on TestNG XML report (Krishnan Mahadevan)
436+Fixed: GITHUB-2152: Multiple Test Groups Causing @BeforeMethod and @AfterMethod to be called multiple times for a single test (Krishnan Mahadevan)
437+Fixed: GITHUB-2172: Suite summary report table issue with EmailableReporter2.java (Devendra Raju K)
438+Fixed: GITHUB-2148: TestNG - configfailurepolicy=“continue” is not working for retried test (Krishnan Mahadevan)
439+Fixed: GITHUB-2163: Test is executed infinite number of times when the data provider returns a new object (Krishnan Mahadevan)
440+Fixed: GITHUB-2157: NullPointerException occurs when a Retried test has an exception in DataProvider (Krishnan Mahadevan)
441+Fixed: GITHUB-2150: Upgraded jQuery from 1.7.1 to 3.4.1 to resolve reported prototype pollution vulnerability
442+Fixed: GITHUB-2149: Handle NoClassDefFoundError when classloader fails to load a class
443+New: GITHUB-2111: Provide an interceptor for Data Provider (Krishnan Mahadevan)
444+Fixed: GITHUB-1709: @Ignore doesn't work when used on child class, and parent has multiple @Test methods (Krishnan Mahadevan)
445+New: GITHUB-2118: Default assertion message (Jiong Fu)
446+Fixed: GITHUB-2080: Wrong text for assertTrue (Jiong Fu)
447+Fixed: GITHUB-2078: Xml to Yaml does not capture the dependency definition in generated Yaml File (Jiong Fu)
448+
449+7.0.0
450+Fixed: GITHUB-2137: Issue with Priority with too low values (Krishnan Mahadevan)
451+Fixed: GITHUB-2138: Factory calls are not intercepted by IAnnotationTransformer (Krishnan Mahadevan)
452+Fixed: GITHUB-2121: SoftAssert: allow custom message (dr29bart)
453+Fixed: GITHUB-2110: NPE is thrown when running with Thread affinity (Krishnan Mahadevan)
454+Fixed: GITHUB-2069: JUnit TestSuite not handled correctly in Reports (Krishnan Mahadevan)
455+Fixed: GITHUB-2075: Thread interrupt flag persists between test methods (Krishnan Mahadevan)
456+Fixed: GITHUB-2074: Thread Interrupted when using expectedException (Krishnan Mahadevan)
457+Fixed: GITHUB-2802: some methods' javadoc in ISuiteListener and ITestListener is misleading (Yehui Wang)
458+Fixed: GITHUB-2061: java.util.ConcurrentModificationException after registration of SuiteListener at the runtime (Krishnan Mahadevan)
459+Fixed: GITHUB-2055: It's not possible to register a new ITestListener at the runtime (Krishnan Mahadevan)
460+Fixed: GITHUB-1035: @BeforeClass not executed in parallel when parallel="instances" (Krishnan Mahadevan)
461+Fixed: 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)
462+Fixed: GITHUB-1835: Configurable ThreadPoolExecutor (Krishnan Mahadevan)
463+Fixed: GITHUB-1691: Support reading data provider information from Class level @Test annotation (Krishnan Mahadevan)
464+Fixed: GITHUB-326: When group-by-instances is set to true the instances created by @Factory does not run in parallel (Krishnan Mahadevan)
465+Fixed: GITHUB-1930: Running testng-failed.xml correctly runs failed test in child class but incorrectly runs all tests in base class (Krishnan Mahadevan)
466+Fixed: GITHUB-1987: Retrieve the data provider method's reference from the test method (Krishnan Mahadevan)
467+Fixed: GITHUB-1976: Add a proper message when types are missing during annotation parsing (Krishnan Mahadevan)
468+Fixed: GITHUB-2000: ThreadPoolExecutor ConcurrentModificationException (Krishnan Mahadevan)
469+Fixed: GITHUB-2022: Suite.xml files make web request when suite uses DTD over HTTPS (Krishnan Mahadevan)
470+Fixed: GITHUB-2017: Don't use child injectors for Guice tests (Joe Barnett)
471+New: GITHUB-2003: Add to @Test interface fields IDs and issues (Krishnan Mahadevan)
472+Fixed: GITHUB-2009: Test Timeout not respected in parallel="methods" mode (Krishnan Mahadevan)
473+Fixed: GITHUB-2008: Preserve parameters in each class and not all of the test parameters
474+Fixed: GITHUB-1981: Fixes NPE in Assert.assertEquals when an array contains null (Maneesh MS)
475+New: Upgrade to gradle5
476+New: Added a method in Assertion class to allow downstream TestNG consumers to override the error message (Ryan Laseter)
477+Fixed: GITHUB-165: @AfterGroups is not executed when group member fails or is skipped (Krishnan Mahadevan)
478+Fixed: GITHUB-118: @BeforeGroups only called if group is specified explicitly (Krishnan Mahadevan)
479+Fixed: GITHUB-182: Inherited test methods do not get expected group behavior (Krishnan Mahadevan)
480+Fixed: GITHUB-1988: Add Automatic-Module-Name to MANIFEST.MF (Krishnan Mahadevan)
481+Fixed: GITHUB-1985: Custom "IMethodSelector" implementation doesn't filter methods properly (Krishnan Mahadevan)
482+Fixed: GITHUB-993: Handle null test names from ITest implementation (Krishnan Mahadevan)
483+Fixed: GITHUB-1942: assertDeepEquals takes long time to evaluate size mismatch (Kumaran Bharathan)
484+Fixed: GITHUB-1967: IInvokedMethod ITestResult status set as -1 for test methods skipped due to config failure (Krishnan Mahadevan)
485+Fixed: GITHUB-1952: Provide a TestNGListener that can be invoked when a test fails due to a timeout (Krishnan Mahadevan)
486+Fixed: GITHUB-1953: TestNG throws a misleading error when @Factory method returns empty array. (Krishnan Mahadevan)
487+Fixed: GITHUB-1946: Retry analyzer does not work properly when coupled with a data provider (Krishnan Mahadevan)
488+Fixed: GITHUB-1924: Testclass instantiation fails when both no-arg constructor and factory method present (Krishnan Mahadevan)
489+Fixed: GITHUB-1935: Wrong text for assertEquals (Krishnan Mahadevan)
490+Fixed: GITHUB-1931: [NPE] Reporter org.testng.reporters.jq.Main failed (Krishnan Mahadevan, Oleg Shaburov)
491+New: Remove raw type warnings in ConversionUtils
492+Fixed: GITHUB-1480: Parallel=methods not working when tests have different priorities set (Micah Lapping-Carr)
493+Fixed: GITHUB-1041: Factory data-provider parameters not displayed in test-result (Krishnan Mahadevan)
494+Fixed: GITHUB-1901: The overall reported Test time for suite containing parallel tests should be max(tests_times) (Krishnan Mahadevan)
495+Fixed: GITHUB-1893: Streamline invocation of "init" method within TestResult to be private (Krishnan Mahadevan)
496+Fixed: GITHUB-1892: Configurable InvokedMethodListener (Krishnan Mahadevan)
497+Fixed: GITHUB-435: Apply <packages> at suite level to all tests (Siegmar Alber)
498+Fixed: GITHUB-1870: Fix Ambiguous behavior of IInvokedMethodListener by clarifying javadocs(Krishnan Mahadevan)
499+Fixed: GITHUB-1878: Provide visibility into the actual method (config/test) that caused a downstream test to be skipped (Krishnan Mahadevan)
500+Fixed: GITHUB-1883: Establish Listener invocation order as tests for documentation purposes (Krishnan Mahadevan)
501+Fixed: TestNG doesn't use the searchable loaders for JUnit tests (Igor Ignatev)
502+Fixed: GITHUB-1880: @AfterGroups(alwaysRun = true) is not called if there is an exception in @BeforeGroups (Krishnan Mahadevan)
503+Fixed: GITHUB-1874: Prevent circular dependency error when suite includes different methods from same class (Krishnan Mahadevan)
504+Fixed: GITHUB-1863: IMethodInterceptor will be invoked twice when listener implements both ITestListener and IMethodInterceptor via eclipse execution way.(Bin Wu)
505+Fixed: GITHUB-1865: testngXmlPathInJar- cannot be cleared when vm terminate(Yehui Wang)
506+Fixed: GITHUB-1850: Parser returns a wrong structure when parent suite has duplicate child suites (Chao Qin)
507+Fixed: GITHUB-1803: Added new methods for comparing float and double arrays with delta (Atul Agrawal)
508+Fixed: GITHUB-1661: Fixed Assert logic for two dimensional arrays (Atul Agrawal)
509+Fixed: GITHUB-1734: Added unit tests for NaN, Max, Min, Positive and Negative infinity (Atul Agrawal)
510+Fixed: GITHUB-1740: Bumped up artifact version of dependencies for java 8 support (Atul Agrawal)
511+Fixed: GITHUB-1834: Ensure group dependency defined via suite xml is considered (Krishnan Mahadevan)
512+New : Expose Graph Visualisation representation for users to build real-time debugging tools (Krishnan Mahadevan)
513+Fixed: GITHUB-574: String cannot be cast to Integer if log property is set in maven pom.xml (Krishnan Mahadevan)
514+Fixed: GITHUB-1402: TestNG reporting - Quickly identify Retry-d Tests (Krishnan Mahadevan)
515+Fixed: GITHUB-1697: Need ability to mark "failed but up for retry" tests differently from "skipped" tests (Krishnan Mahadevan)
516+Fixed: GITHUB-1810: Nullpointer exception when running TestNG tests from CMD (Krishnan Mahadevan)
517+Fixed: GITHUB-1590: Started configuration method has wrong status and end time during execution (Krishnan Mahadevan)
518+Fixed: GITHUB-298: Avoid Javascript errors in function name when suite name has special characters (Krishnan Mahadevan)
519+Fixed: GITHUB-1048: Fix validation errors in TestNG CSS to adhere to CSS level 3 + SVG (Krishnan Mahadevan)
520+Fixed: GITHUB-341: TestNG does not respect "-parallel classes" when running with a jar file (Krishnan Mahadevan)
521+Fixed: GITHUB-1790: IAnnotationTransformer transform method is not called for all test classes annotated with @Test (Krishnan Mahadevan)
522+Fixed: GITHUB-1787: Method level parameters are missing when using Yaml generation utilities (Krishnan Mahadevan)
523+New : TestNG now guarantees thread-affinity for methods that use either preserve-order (or) dependsOnMethods (Krishnan Mahadevan)
524+Fixed: GITHUB-1773: Parallel="classes" executes methods of test class in different threads (Krishnan Mahadevan)
525+Fixed: GITHUB-1185: DependsOnMethods made parallel class use several threads (Krishnan Mahadevan)
526+Fixed: GITHUB-1173: Parallel="classes" executes methods of test class in different threads (Krishnan Mahadevan)
527+Fixed: GITHUB-1066: Regression is in priority. It broke parallel mode (Krishnan Mahadevan)
528+Fixed: GITHUB-1050: Parallel classes runs methods from one class in different threads, interleaves two classes in one thread (Krishnan Mahadevan)
529+Fixed: 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)
530+Fixed: GITHUB-1719: successPercentage does not work correctly for tests with dataProvider (Krishnan Mahadevan)
531+Fixed: GITHUB-1241: Streamline Retry Analyzer usage when same test is run multiple times (Krishnan Mahadevan)
532+Fixed: GITHUB-1777: ITestListener.onTestStart() not called after fail or skip from @BeforeMethod (Krishnan Mahadevan)
533+Fixed: GITHUB-1778: SoftAssert#fail swallows actual root cause (Krishnan Mahadevan)
534+Fixed: GITHUB-1665: Failed test after rerun would impact next test case result (Yehui Wang)
535+Fixed: GITHUB-1770: Factory annotation does not work with Parameters annotation on method constructor (Krishnan Mahadevan)
536+Fixed: GITHUB-1767: Prevent NPE when XmlTest accessed without a proper XmlSuite (Krishnan Mahadevan)
537+Fixed: GITHUB-1766: Testng generates a lot of temp folders like testngXmlPathInJar- (Andrey)
538+Fixed: GITHUB-1759: core interfaces refactoring to support default methods (Sergey Korol)
539+Fixed: GITHUB-1753: TestResult for an SKIP test lose attributes contributed by @BeforeMethod's or @AfterMethod's (Krishnan Mahadevan)
540+Fixed: GITHUB-1756: ITest .getTestName() doesn't return the actual test name for skipped methods (Krishnan Mahadevan)
541+Fixed: GITHUB-1602: beforeInvocation method don't get called for skipped tests (Krishnan Mahadevan)
542+Fixed: GITHUB-549 and GITHUB-780: Introduce onlyForGroups attribute for @BeforeMethod and @AfterMethod (Sergei Tachenov)
543+Fixed: GITHUB-1745: Support native injection for @Factory methods (Krishnan Mahadevan)
544+Fixed: GITHUB-1746: Make InvokedMethodNameListener thread-safe, fixing occasional build failures (Sergei Tachenov)
545+Fixed: GITHUB-1538: Dependent methods don't get invoked when a failed test method is retried via a RetryAnalyser (Krishnan Mahadevan)
546+Fixed: GITHUB-426: firstTimeOnly ignored for threadPoolSize > 1 (Krishnan Mahadevan)
547+Fixed: GITHUB-466: JUnitReportReporter always converts the system time into GMT (Krishnan Mahadevan)
548+Fixed: GITHUB-1723: Standardize timezone reference in XML reports (Krishnan Mahadevan)
549+Fixed: GITHUB-489: Incorrect timezone info in <test-method> element of testng-results.xml (Krishnan Mahadevan)
550+Fixed: GITHUB-1735: IExecutionListener.onStart() running twice when used as annotation (Krishnan Mahadevan)
551+New : Removed deprecated methods across TestNG (Krishnan Mahadevan)
552+Fixed: GITHUB-1726: Allow user-defined method interceptors to have the last say in method re-ordering (Krishnan Mahadevan)
553+Fixed: GITHUB-564: Support using @Optional on @Test method parameters to use null values (Krishnan Mahadevan)
554+New : Upgrade TestNG to start needing at-least JDK8 (Krishnan Mahadevan)
555+Fixed: GITHUB-1637: Remove dependency on a pre-created jar for running unit tests for JarFileUtils (Krishnan Mahadevan)
556+Fixed: GITHUB-1710: Inefficient DynamicGraph causes hang with only 100 tests. (Steve Prentice)
557+Fixed: GITHUB-1716: Potential NPE in jq.Main reporter (Krishnan Mahadevan)
558+Fixed: GITHUB-1709: @Ignore doesn't work when used on child class, and parent has @Test methods (Krishnan Mahadevan)
559+Fixed: GITHUB-1706: Retrying of methods fail when test method involves native injection (Krishnan Mahadevan)
560+New : Removed deprecated attributes from annotations (Julien Herr)
561+New : Support all JSR-223 compatible script engine
562+Fixed: GITHUB-1827: TestNG does not throw an error when a test class does not have a proper constructor (Julien Herr & Krishnan Mahadevan)
563+Fixed: Annotated default methods of indirectly implemented interfaces should still be called (Ilya Korobitsyn)
564+New : GITHUB-2105: Include assertEquals(Map, Map) into Assert class
565+
566+6.14.3
567+Fixed: GITHUB-1077: TestNG cannot handle load (Aheiss)
568+Fixed: GITHUB-1081: group-by-instances with test dependencies causes instantiation of tests to exponentially slow (Aheiss)
569+Fixed: GITHUB-1700: Test ignored if @BeforeMethod in base class fails for another test class (Krishnan Mahadevan)
570+Fixed: GITHUB-1694: @BeforeGroups executed multiple times when tests run in parallel, once if not parallel (Krishnan Mahadevan)
571+Fixed: GITHUB-1688: @Ignore annotation on base class doesn't ignore tests in child classes (Krishnan Mahadevan)
572+Fixed: GITHUB-1687: NullPointerException is thrown when beanshell evaluates to null (Krishnan Mahadevan)
573+
574+6.14.2
575+Fixed: GITHUB-1674: beanshell methodselector applied at suite level is ignored (Krishnan Mahadevan)
576+Fixed: GITHUB-1668: "Invalid Method Selector" exception triggered when using suite level beanshell methodselectors (Krishnan Mahadevan)
577+Fixed: GITHUB-1659: New line characters are removed from stack traces in testng-results.xml (Krishnan Mahadevan)
578+Fixed: GITHUB-1503: Consider adding a -n (no execute) option (Krishnan Mahadevan)
579+Fixed: GITHUB-1648: Depends on method is not respected on the sequential run on second test that extends same base testClass (Krishnan Mahadevan)
580+Fixed: GITHUB-1636: Parallel test run is not working in 6.13.1 (Krishnan Mahadevan)
581+New : GITHUB-1634: Make "-xmlpathinjar" support <suite-files> (Yehui Wang)
582+New : GITHUB-1634: Make "-testnames" find tests from Multi-level parent-child suites (Yehui Wang)
583+Fixed: 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)
584+Fixed: GITHUB-1649: @Test annotated methods cannot inject java.lang.reflect.Method (Krishnan Mahadevan)
585+Fixed: GITHUB-1625: Null fields in parallel method tests (Krishnan Mahadevan)
586+Fixed: GITHUB-1605: Research the usefulness of the JVM argument "experimental" (Krishnan Mahadevan)
587+New : GITHUB-1631: data provider class name injection into Factory meta-data (Sergey Korol)
588+
589+6.13.1
590+No functional changes. Released with newer version JCommander (1.72.0)
591+
592+6.13
593+Fixed: GITHUB-1619: ConcurrentHashMap doesn't secure insertion order.(Yehui Wang)
594+Fixed: GITHUB-1616: Test cases with priority and dependsOnGroups dependencies, execution order is chaos. (Yehui Wang)
595+Fixed: GITHUB-1613: The constructor removed from TestRunner would stop Eclipse working.(Yehui Wang)
596+Fixed: GITHUB-1600: Updated in afterInvocation() testResult.status is not used in willRetry condition (Krishnan Mahadevan)
597+Fixed: GITHUB-1598: Injected types parameter and optional parameters cannot be used together. (Yehui Wang)
598+Fixed: GITHUB-1594: Cannot filter by "testnames" when suite xml is a suite of suites (Krishnan Mahadevan)
599+Fixed: GITHUB-1584: Can't run tests from IDEA (Krishnan Mahadevan)
600+Fixed: GITHUB-1589: TestNGAntTask should be consistently using the Ant Log API for writing log messages (Krishnan Mahadevan)
601+Fixed: GITHUB-1587: TestNG can not guarantee the ExecutionListener Instance as singleton(Yehui Wang)
602+Fixed: GITHUB-217: exception in DataProvider doesn't fail test run (Krishnan Mahadevan)
603+Fixed: GITHUB-987: Parameters threadCount and parallel doesn't work with maven (Krishnan Mahadevan)
604+Fixed: GITHUB-1472: Optimize DynamicGraph.getUnfinishedNodes (Krishnan Mahadevan & Nathan Reynolds)
605+Fixed: GITHUB-1566: Invalid XML characters in Params in testng-results.xml (Krishnan Mahadevan)
606+Fixed: GITHUB-1554: @Parameters and parameter injection not wroking when used on the same method (Krishnan Mahadevan)
607+Fixed: GITHUB-990: NullPointerExceptions after a superclass configuration method fails with configfailurepolicy="continue" (Krishnan Mahadevan)
608+Fixed: GITHUB-461 : Annotate annotations with @Documented (Krishnan Mahadevan)
609+Fixed: GITHUB-778 : XmlSuite toXml() does NOT add the suite time-out property (Krishnan Mahadevan)
610+Fixed: GITHUB-1029: Issue with getting XmlTest from test method (Krishnan Mahadevan)
611+Fixed: GITHUB-212: Enable support for providing a URI as suite file location (Krishnan Mahadevan)
612+Fixed: GITHUB-161 : Provide a way to customize SAXParserFactory implementation (Krishnan Mahadevan)
613+Fixed: GITHUB-1455: Configure XML output of XmlSuite (Krishnan Mahadevan)
614+Fixed: GITHUB-1465: Failure policy CONTINUE handling is broken for tests that are skipped in @BeforeMethod method (Krishnan Mahadevan)
615+Fixed: GITHUB-1533: Duplicate child suites get added when working with parent/child suite scenario (Krishnan Mahadevan)
616+Fixed: GITHUB-949: dependsOnMethods with alwaysRun = true and inheritance fails to find method (Krishnan Mahadevan)
617+Fixed: GITHUB-1519: Possibility to retry a test until it FAILED (Krishnan Mahadevan)
618+Fixed: GITHUB-980: TestNG run inherited method twice (Krishnan Mahadevan)
619+Fixed: GITHUB-1409: Regression: on expectedExceptionsMessageRegExp expected and actual messages are not printed (Krishnan Mahadevan)
620+Fixed: GITHUB-1517: TestNG exits with a zero when there are configuration failures (Krishnan Mahadevan)
621+New : GITHUB-1490: Add a listener for data provider interception (Krishnan Mahadevan)
622+Fixed: GITHUB-1456: Remove/Warn support of constructor with String param (Krishnan Mahadevan)
623+Fixed: GITHUB-1509: Improve error message when data provider returns a null value (Krishnan Mahadevan)
624+Fixed: GITHUB-1507: TestNG runs all methods when filtering via <include> fails (Krishnan Mahadevan)
625+Fixed: GITHUB-1493: Wrong exception msg when timeout on test (Krishnan Mahadevan)
626+Fixed: GITHUB-328: Attempt to fix unnecessary execution of @Factory-ctors (@beverage & Julien Herr)
627+Fixed: GITHUB-1384: Huge performance issue between 6.5.2 and 6.11 (Denis Bazhenov)
628+New: Remove Serializable (Julien Herr)
629+Fixed: GITHUB-1496: If method contains "$", run only one method, all methods will be run (@JF-Rabbit & Julien Herr)
630+Fixed: GITHUB-1220: Recognize annotations on default methods in implemented interface
631+New: GITHUB-861: Add @Ignore annotation which disables all tests in a class or a package (Julien Herr)
632+
633+6.12
634+Fixed: GITHUB-1484: Remove irrelevant "targets" for TestNG annotations (Krishnan Mahadevan)
635+Fixed: GITHUB-1405: Skip considering main() method when @Test used at class level (Krishnan Mahadevan)
636+Fixed: GITHUB-799: @Factory with dataProvider changes order of iterations (Krishnan Mahadevan & Julien Herr)
637+New: Enhance XML Reporter to be able to customize the file name (Krishnan Mahadevan)
638+Fixed: GITHUB-1417: Class param injection is not working with @BeforeClass (Krishnan Mahadevan)
639+Fixed: GITHUB-1440: Improve error message when wrong params on configuration methods (Krishnan Mahadevan)
640+Fixed: GITHUB-1433: Missing encoding for emailable reports (Shaburov Oleg)
641+Fixed: GITHUB-1430: Cannot load class from file XXX when using with ant and classfileset (Olivier Mourez)
642+Fixed: GITHUB-1394: Optimize ClassHelper.getAvailableMethods() to exclude Object class(Nathan Reynolds & Krishnan Mahadevan)
643+Fixed: GITHUB-1396: Order established by IMethodInterceptor not honored when running with parallel='instances' (Ryan Scott)
644+Fixed: GITHUB-1287: Parallel (methods) execution with dependsOn running in unexpected order (Kevyn Reinholt)
645+Fixed: GITHUB-1362: Ensure AfterGroups methods get executed when involving Method Interceptors (Krishnan Mahadevan)
646+Fixed: GITHUB-765: Skip invocation of bridged methods (Krishnan Mahadevan)
647+New: Enhance TestNGAntTask to be customizable (Denys Kurylenko)
648+New: Make EmailableReporter2 W3C Compliant[XHTML 1.1] (Chris Rankin)
649+Fixed: GITHUB-1336: (parallel=‘classes’) not working when coupled with priority (Krishnan Mahadevan)
650+Fixed: GITHUB-1365: Be able to override default XML parser (@ChristiKh & Julien Herr)
651+Fixed: GITHUB-1360: TestNG does not distinguish between methods of different priorities (Krishnan Mahadevan)
652+Fixed: GITHUB-1144: Add Class and Constructor as legal native dependency injection (Guillaume Juillot)
653+Fixed: GITHUB-1380: Circular dependencies may fail in parallel (Julien Herr)
654+Fixed: GITHUB-1400: TestNG, Multiple duplicate listener warnings on implementing multiple listener interfaces (@bipo1980 & Nick Tan)
655+Fixed: GITHUB-1426: @AfterMethod(alwaysRun = true) is not getting called if we have exception in @BeforeMethod (@dipak-pawar)
656+Fixed: 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)
657+Fixed: GITHUB-1393: Revert commit 50d534a to allow fail a test from onTestStart method
658+Fixed: GITHUB-1461: TestNG not getting garbage collected (@kiru)
659+
660+6.11
661+2017/02/27
662+Fixed: GITHUB-1351: FailurePolicy failing with YAML (Steven Zaluk & Julien Herr)
663+New: The name of all TestNG threads follow "TestNG-<thread type>-<number>" pattern (Julien Herr)
664+Fixed: GITHUB-1339: Alter ClassHelper to use Maps instead of Lists for extracting methods (Krishnan Mahadevan)
665+Fixed: GITHUB-1338: @BeforeGroups method is run on a wrong instance (Pavel Vetokhin & Julien Herr)
666+Fixed: GITHUB-1332: Make EmailableReport name configurable (Krishnan Mahadevan)
667+Fixed: GITHUB-1297: testng-failed.xml includes setup and tearDown (before and after annotations) of passed tests
668+(Krishnan Mahadevan)
669+Fixed: GITHUB-1319: ITestResult#getInstance() returns null in IConfigurationListener implementation (Krishnan Mahadevan)
670+New: Skipped methods are not supposed to be executed (Julien Herr)
671+Fixed: GITHUB-1197: Ability to dynamically set the status and exception of a test via ITestResult (Anthony Nguyen)
672+Fixed: GITHUB-1302: When 'parallel' is set to 'classes', ConcurrentModificationException can be thrown(Jianhua Li)
673+Fixed: GITHUB-772: Severe thread contention while running large test with parallel methods (Shaburov Oleg)
674+Fixed: GITHUB-1307: TestNGException when using an anonymous class in Factory (Mike Cowan)
675+Fixed: GITHUB-1298: ITestResult injection is failing in BeforeMethod method (Krishnan Mahadevan)
676+Fixed: GITHUB-1293: Beanshell based execution does not work any more (Krishnan Mahadevan)
677+Fixed: GITHUB-1262: Testcases out of order in XML file in junitreport folder when using testng (Krishnan Mahadevan)
678+Fixed: GITHUB-116 : BaseTestMethod does respect general contract of Comparable (Testo Nakada)
679+Fixed: GITHUB-1265: JUnit Reporter includes redundant ignored methods (Krishnan Mahadevan)
680+Fixed: GITHUB-1266: JUnit Reporter produces a wrong number of total test methods (Krishnan Mahadevan)
681+Fixed: GITHUB-1257: Group parameter not applying on included <suite-files>
682+Fixed: GITHUB-1284: Listeners on the child suites are not applied (Vimalraj Selvam)
683+New: GITHUB-1313: Add Java9 as test environment on Travis (Julien Herr)
684+Fixed: GITHUB-1296: Configuration listeners run multiple times (@mikimrozowski & Julien Herr)
685+Fixed: GITHUB-1300: Add deep assertions to assert on array values (array reference by default) (Jordan Zimmerman & Julien Herr)
686+
687+6.10
688+2016/11/28
689+Fixed: GITHUB-551: Failed configuration method always has 0 execution time (dr29bart)
690+Fixed: GITHUB-1250: Testng-failed.xml is getting test level parameters into suite level parameters (Krishnan Mahadevan)
691+Fixed: GITHUB-1046: Provide a mechanism to customize a test method name for reporting (Krishnan Mahadevan)
692+Fixed: GITHUB-1211: Include disabled/ ignored test methods in JUnit reports (Krishnan Mahadevan)
693+Fixed: GITHUB-1213: Include "ignored" test count in testng-results.xml (Krishnan Mahadevan)
694+Fixed: GITHUB-674: Enrich Test method skips due to configuration failures with throwable data (Krishnan Mahadevan)
695+Fixed: GITHUB-1240: Enrich the test results showing mechanism in Travis CI (Krishnan Mahadevan)
696+Fixed: GITHUB-1232: Prevent TestNG from adding duplicate instances of the same listener (Krishnan Mahadevan)
697+Fixed: GITHUB-1170: Fixing the test DataProviderTest.shouldNotThrowConcurrentModification (Krishnan Mahadevan)
698+Fixed: GITHUB-1231: Make IExecutionListener implementation be the last reporter call before JVM exit(Krishnan Mahadevan)
699+Fixed: GITHUB-1227: Prevent multiple instances of same Reporter from being injected into TestNG (Krishnan Mahadevan)
700+Fixed: GITHUB-1165: Better message to user when param injection is not good (Krishnan Mahadevan)
701+Fixed: GITHUB-1228: Control stacktrace levels in XmlReports via a JVM configuration (Krishnan Mahadevan)
702+Fixed: GITHUB-1203: Add flush to BufferedWriter; fixes incomplete XML reports (Nathan Bruning)
703+Fixed: GITHUB-1181: Fix MethodMatcherException: Data provider mismatch (Krishnan Mahadevan)
704+Fixed: GITHUB-1107: TestNG does not report/print/log throwables in data providers (Krishnan Mahadevan)
705+Fixed: GITHUB-1186: NullPointerException in JUnit reporter when used with Spock (Ian Robertson & Julien Herr)
706+Fixed: GITHUB-1180: NullPointerException on getting excluded/included groups (Krishnan Mahadevan)
707+Fixed: GITHUB-1064: Incorrect logging of parallel mode of a test
708+Fixed: GITHUB-1178: Halt execution when invalid testname is provided. (Krishnan Mahadevan)
709+Fixed: GITHUB-1139: DataProvider could support Object[] as a valid return type (Julien Herr)
710+Fixed: GITHUB-1182: Cannot run multiple @Factory-annotated methods in the same class (Ian Donovan & Julien Herr)
711+New: Hierarchy on order features (from less important to more important): groupByInstance, preserveOrder, priority, dependsOnGroups, dependsOnMethods
712+Fixed: GITHUB-1156: test execution dependant upon class name order and fails with TestNGException: No free nodes found (@t-weil & Julien Herr)
713+Fixed: GITHUB-1221: ConcurrentModificationException in TextReporter (Nick Tan)
714+Fixed: testng-eclipse/issues/298: IConfigurationListener was not loaded when running Test in Eclipse Plugin (@jmcgrail & Nick Tan)
715+New: 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.
716+
717+6.9.13.6
718+2016/09/23
719+
720+6.9.13.5 (Bad release)
721+2016/09/23
722+
723+6.9.13.4 (Bad release: Wrong internal version)
724+2016/09/22
725+
726+6.9.13.3 (Ok, but too many direct dependencies)
727+2016/09/22
728+
729+6.9.13.2 (Bad release: Wrong internal version)
730+2016/09/20
731+
732+6.9.13.1 (Bad release: fat jar)
733+2016/09/19
734+
735+6.9.13 (Bad release: JDK8 target only)
736+2016/09/16
737+
738+New: code improvement in order to calculate key for dependency map. Dependency map will use methodQualifiedName as key provided by ITestNGMethod (Chirag Jayswal)
739+Fixed: GITHUB-1105: Test skipped instead failed if incorrect enum value (Liza Ivanova & Julien Herr)
740+Fixed: GITHUB-1111: XMLReporter crashes if a test parameter is exactly "]]>" (Łukasz Rekucki & Julien Herr)
741+Fixed: GITHUB-1108 @BeforeGroups called twice (Krishnan Mahadevan)
742+Fixed: GITHUB-1112 XmlInclude.getDescription returns null always (Krishnan Mahadevan)
743+Fixed: GITHUB-1090 Inconsistent handling "preserve-order" on suite/test level (Michal Domagala & Julien Herr)
744+Fixed: GITHUB-1085 Remove Guava dependency (Erik C. Thauvin & Julien Herr)
745+Fixed: GITHUB-1084 Using deprecated addListener methods should not register many times (Anna Kozlova & Julien Herr)
746+Fixed: GITHUB-447 Copy test parameters instead of storing a reference (Huagang Li & Julien Herr)
747+Fixed: GITHUB-174: NPE when parsing xml where <suite> has <groups> (Peter Stout & Julien Herr)
748+Fixed: GITHUB-918: NullPointerException on loading XmlSuites programmatically (@ispitkovskyi & Julien Herr)
749+Fixed: GITHUB-689: <groups> at <suite> level not applied to <suite-files> (@kunal546 & Julien Herr)
750+Fixed: GITHUB-740: More than one execution even when success with DataProvider and IRetryAnalyzer (Sergio Sacristán)
751+Fixed: GITHUB-877: Retries don't work correctly with DataProvider tests (Simonas Tvirbutas)
752+Fixed: GITHUB-1103: Add ...junit.ArrayAsserts.assertArrayEquals(boolean[], boolean[]) (Jonathan Halterman & Julien Herr)
753+Fixed: GITHUB-1122: Use the default value for preserve-order (Guillaume Guillot & Julien Herr)
754+Fixed: GITHUB-1022: Non static methods from external data providers are not working without @Guice (Sourav Chandra & Julien Herr)
755+Fixed: GITHUB-1130: IClassListener should only be instantiated once (Guillaume Guillot & Julien Herr)
756+Fixed: GITHUB-1131: IObjectFactory not being called for factory test instances with constructor-injected data provider (Scott McClure & Julien Herr)
757+New: GITHUB-1083: Factory supports indices (Julien Herr)
758+Fixed: GITHUB-148: 'Run Failed Test' doesn't run the proper tests after 2nd rerun when DataProvider is used (@akracheva & Julien Herr)
759+
760+6.9.12
761+2016/06/21
762+
763 Fixed: GITHUB-1017 Reporter.log is ignored in skipped test listener (Scott Kirkpatrick)
764 New: Minimal code changes to allow TestNG to work for OpenJDK tests, which should be run with only the java.base module present.
765 Fixed: GITHUB-1047 IClassListener didn't work (Julien Herr)
766@@ -153,9 +614,9 @@ Added: Allow injection of java.lang.reflect.Constructor and org.testng.ITestNGMe
767 Fixed: Assertions in the Assertions class were not failing properly.
768 Fixed: GITHUB-337: ConfigurationMethod#m_instance set to Boolean.FALSE due to incorrect constructor call in clone() + auto-boxing (davidely)
769 Fixed: Fix NPE for dependency methods/groups (Krishnan Mahadevan)
770-Fixed: preserve-order bug (found by VladSarrokhin).
771+Fixed: preserve-order bug (found by VladSarrokhin).
772 Fixed: GITHUB-300: OutOfMemoryException from reporters when there are a lot of tests
773-Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified
774+Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified
775 Fixed: GITHUB-107: Allow enum values without converting them to uppercase.
776 Fixed: @Guice with no modules specified is now supported
777 Fixed: Reporter.log() invoked from listeners were being discarded
778@@ -172,7 +633,7 @@ Added: Big performance improvement when generating the reports (Frank Pavageau)
779 Added: <dependencies> allows you to specify group dependencies in testng.xml
780 Added: Blow up early if trying to include/exclude an unknown method
781 Added: <parameters> can now be specified under <include> (Storm Qi)
782-Added: GITHUB-243: Add Reporter Output per Test in XMLReporter (dunse)
783+Added: GITHUB-243: Add Reporter Output per Test in XMLReporter (dunse)
784 Fixed: Better HTML escaping of the stack traces
785 Fixed: The failed assertions now use [] as delimiters instead of <> (better for the HTML reports)
786 Fixed: GITHUB-237: Wrong time format in XML reporter
787@@ -357,7 +818,7 @@ Eclipse:
788 Added: New quick fix "Add static import org.testng.AssertJUnit.assertXXX"
789 Added: New workspace wide setting: excluded stack traces, to provide shorter stack traces in the view
790 Added: New "Clear results" icon in the tool bar
791-Added: When the search filter is modified, don't update the tree live if it is too big
792+Added: When the search filter is modified, don't update the tree live if it is too big
793 Added: Two new @Test refactorings (pull to class level, push to method level)
794 Added: JUnit conversion: @Ignore
795 Added: JUnit conversion: assertArrayEquals()
796@@ -501,10 +962,10 @@ Added: -testnames (command line) and testnames (ant)
797 Added: New ant task tag: propertyset (Todd Wells)
798 Added: ITestNGListenerFactory
799 Added: Passing command line properties via the ant task and doc update (Todd Wells)
800-Added: Hierarchical XmlSuites (Nalin Makar)
801+Added: Hierarchical XmlSuites (Nalin Makar)
802 Added: Reporter#clear()
803 Fixed: NullPointerException when a suite produces no results (Cefn Hoile)
804-Fixed: Identical configuration methods were not always invoked in the correct order in superclasses (Nalin Makar)
805+Fixed: Identical configuration methods were not always invoked in the correct order in superclasses (Nalin Makar)
806 Fixed: @DataProvider(parallel = true) was passing incorrect parameters with injection
807 Fixed: Replaced @Test(sequential) with @Test(singleThreaded)
808 Fixed: If inherited configuration methods had defined deps, they could be invoked in incorrect order (Nalin Makar)
809@@ -521,9 +982,9 @@ Fixed: Issue78 NPE with non-public class. Now throws TestNG exception
810 Fixed: NPE with @Optional null parameters (Yves Dessertine)
811 Fixed: TESTNG-387 TestNG not rerunning test method with the right data set from Data Provider (Francois Reynaud)
812 Fixed: Show correct number of pass/failed numbers for tests using @DataProvider
813-Fixed: Return correct method status and exception (if any) in InvokedMethodListener.afterInvocation()
814-Fixed: Trivial fixes: TESTNG-241 (log message at Info), Issue2 (throw SAXException and not NPE for invalid testng xml)
815-Fixed: Configuration methods couldn't depend on an abstract method (Nalin Makar)
816+Fixed: Return correct method status and exception (if any) in InvokedMethodListener.afterInvocation()
817+Fixed: Trivial fixes: TESTNG-241 (log message at Info), Issue2 (throw SAXException and not NPE for invalid testng xml)
818+Fixed: Configuration methods couldn't depend on an abstract method (Nalin Makar)
819 Fixed: TestNG#setTestClasses was not resetting m_suites
820 Fixed: Exceptions thrown by IInvokedMethodListeners were not caught (Nalin Makar)
821 Fixed: @Listeners now works on base classes as well
822@@ -567,7 +1028,7 @@ Eclipse:
823 Added: New file wizard: can now create a class with annotations, including @DataProvider
824 Added: You can now select multiple XML suites to be run in the launch dialog
825 Fixed: @Test(groups = <constant>) was taking name of the constant instead of its value.
826-Fixed: http://jira.codehaus.org/browse/GRECLIPSE-476 NPE with Groovy Tests (Andrew Eisenberg)
827+Fixed: https://jira.codehaus.org/browse/GRECLIPSE-476 NPE with Groovy Tests (Andrew Eisenberg)
828 Fixed: The custom XML file is now created in the temp directory instead of inside the project
829 Fixed: In the launch dialog, now display an error if trying to pick groups when no project is selected
830 Fixed: Was not setting the parallel attribute correctly on the temporary XML file
831@@ -638,8 +1099,8 @@ Fixed: Quick fixes no longer introduce deprecated annotations (Greg Turnquist)
832 5.9
833 2009/04/09
834
835-Added: New ant task boolean flag: delegateCommandSystemProperties (Justin)
836-Added: skipfailedinvocations under <suite> in testng-1.0.dtd (Gael Marziou / Stevo Slavic)
837+Added: New ant task boolean flag: delegateCommandSystemProperties (Justin)
838+Added: skipfailedinvocations under <suite> in testng-1.0.dtd (Gael Marziou / Stevo Slavic)
839 Added: -testrunfactory on the command line and in the ant task (Vitalyi Pamajonkov)
840 Added: TESTNG-298: parallel="classes", which allows entire classes to be run in the same thread
841 Added: @BeforeMethod can now declare Object[] as a parameter, which will be filled by the parameters of the test method
842@@ -732,10 +1193,10 @@ Added: ISuite now gives access to the current XmlSuite
843 Fixed: TESTNG-139 dependsOnMethods gets confused when dependency is "protected"
844 Fixed: TESTNG-141 junit attribute set to false in testng-failed.xml when it should be true
845 Fixed: TESTNG-142 Exceptions in DataProvider are not reported as failed test
846-Added: Improved behavior for @Before/@AfterClass when using @Factory
847-(http://forums.opensymphony.com/thread.jspa?threadID=6594&messageID=122294#122294)
848+Added: Improved behavior for @Before/@AfterClass when using @Factory
849+(https://forums.opensymphony.com/thread.jspa?threadID=6594&messageID=122294#122294)
850 Added: Support for concurrent execution for invocationCount=1 threadPoolSize>1 and @DataProvider
851-(http://forums.opensymphony.com/thread.jspa?threadID=64738&tstart=0)
852+(https://forums.opensymphony.com/thread.jspa?threadID=64738&tstart=0)
853 Added: New TestNG specific XML report, generated by default in 'xml' subdirectory of test-output
854 Added: support in strprotocol for passing the ITest.getTestName() information
855 Fixed: TESTNG-152 If DataProvider is not found, the exception message should tell exactly what happened
856@@ -768,7 +1229,7 @@ Added: Method selectors receive a Context and can stop the chain with setStopped
857 Fixed: XmlMethodSelector was always run first regardless of its priority
858 Added: @BeforeGroups/@AfterGroups can live in classes without @Test methods
859 Added: DataProvider can now take an ITestContext parameter
860-Fixed: Wasn't parsing <selector-class-name> correctly
861+Fixed: Wasn't parsing <selector-class-name> correctly
862 Fixed: Annotation Transformers now work on class-level annotations
863 Fixed: Some class-level @Test attributes were not always honored
864 Added: Clean separation between @Test invocation events and @Configuration invocation events
865@@ -805,7 +1266,7 @@ Eclipse plug-in
866 Fixed: groups with multi-attribute javadoc annotations
867 Fixed: consistent behavior for dependsOnMethods
868 Fixed: consistent behavior for tests with dependsOnGroups (a warning is emitted)
869-Fixed: consistent merge of configuration arguments when an existing launch configuration exists
870+Fixed: consistent merge of configuration arguments when an existing launch configuration exists
871 ===========================================================================
872 5.3
873 2006/10/30
874@@ -855,7 +1316,7 @@ Fixed: Throw proper exception when a DataProvider declares parameters
875 Added: completely revamped JUnit support (should run all kind of JUnit tests)
876 Fixed: TESTNG-40 (Bug in testng-failed.xml generation)
877 Fixed: TESTNG-106 (Failed "@BeforeSuite" method just skipps the last test in xml-file)
878-Fixed: Success on 0 tests (http://forums.opensymphony.com/thread.jspa?threadID=41213)
879+Fixed: Success on 0 tests (https://forums.opensymphony.com/thread.jspa?threadID=41213)
880
881 Eclipse plug-in
882 Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable
883@@ -867,7 +1328,7 @@ Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable
884 Added: @Test(sequential = true)
885 Fixed: TESTNG-102 (Incorrect ordering of @BeforeMethod calls when a dependency is specified)
886 Fixed: TESTNG-101 (HTML output contains nested <P> tags and a missing <tr> tag)
887-Added: support for specifying test-only classpath (http://forums.opensymphony.com/thread.jspa?messageID=78048&tstart=0)
888+Added: support for specifying test-only classpath (https://forums.opensymphony.com/thread.jspa?messageID=78048&tstart=0)
889 Fixed: TESTNG-93 (method selectors filtering @BeforeMethod)
890 Fixed: TESTNG-81 (Assert.assertFalse() displays wrong expected, actual value)
891 Fixed: TESTNG-59 (multiple method selectors usage results in no tests run)
892@@ -909,7 +1370,7 @@ Added: Can now specify listener classes
893 5.0.1
894
895 Fixed: reports generated by SuiteHTMLReporter do not work with JDK1.4
896-
897+
898 ===========================================================================
899
900 5.0
901@@ -921,9 +1382,9 @@ Added: Link to testng.xml in the reports
902 Added: New structure for reports, suites go in their individual directory
903 Added: @Test(suiteName) and @Test(testName)
904 Added: The stack traces in reports do not include TestNG frames (system property testng.exception)
905- (see: http://groups.google.com/group/testng-dev/browse_thread/thread/9f4d46ade10b0fda)
906+ (see: https://groups.google.com/group/testng-dev/browse_thread/thread/9f4d46ade10b0fda)
907 Fixed: Exit with error when no methods are run
908- (see: http://groups.google.com/group/testng-dev/browse_thread/thread/3c26e8a5658f22ac)
909+ (see: https://groups.google.com/group/testng-dev/browse_thread/thread/3c26e8a5658f22ac)
910 Added: List of methods in alphabetical order
911 Fixed: Class-scoped annotations were not recognized when inherited
912 Added: Deprecated @Configuration and introduced @BeforeSuite/Test/Class/TestMethod
913@@ -951,14 +1412,14 @@ Added: if patch-testng-sourcedir.properties is found in the classpath
914 Added: Maven 2 plug-in
915 Fixed: Message formattings in TestNG assertion utility class
916 Fixed: @Factory methods were counted as @Test as well
917- http://jira.opensymphony.com/browse/TESTNG-51
918+ https://jira.opensymphony.com/browse/TESTNG-51
919 Fixed: All DataProvider parameters were shown in the HTML report
920 Fixed: Bug in testng-failed.xml generation
921 Fixed: <packages> bug when using a jar file to load the test classes
922 Added: alwaysRun for before @Configuration methods
923- http://jira.opensymphony.com/browse/TESTNG-35
924+ https://jira.opensymphony.com/browse/TESTNG-35
925 Fixed: groupless @Configurations were not invoked if a method depends on a group
926- http://jira.opensymphony.com/browse/TESTNG-45
927+ https://jira.opensymphony.com/browse/TESTNG-45
928 Added: beforeGroups/afterGroups to @Configuration
929
930 Eclipse plugin:
931@@ -994,8 +1455,8 @@ Fixed: TESTNG-24: 'Run as testng test' does not appear of the Test annotation do
932 Fixed: TESTNG-18: Eclipse plugin ignores Factory annotation
933 Fixed: TESTNG-21: Show differences when double clicking assertion exceptions
934 Added: UI allows setting orientation (even more space)
935- http://forums.opensymphony.com/thread.jspa?threadID=17225&messageID=33805#33805
936-
937+ https://forums.opensymphony.com/thread.jspa?threadID=17225&messageID=33805#33805
938+
939 ===========================================================================
940
941 4.5
942@@ -1098,8 +1559,8 @@ Fixed: dependsOnGroups wasn't working on regular expressions
943 Fixed: Bug in <package> when directories contain spaces in their names
944 Fixed: Introduced a JDK5 dependency in the JDK1.4 build (getEnclosingClass())
945 Fixed: Output directory in ant task was not honored if it didn't exist
946-Fixed: Problem with timeout according to
947- http://forums.opensymphony.com/thread.jspa?threadID=6707
948+Fixed: Problem with timeout according to
949+ https://forums.opensymphony.com/thread.jspa?threadID=6707
950
951 Eclipse plug-in:
952
953@@ -1108,7 +1569,7 @@ Fixed: Bug in QuickFix implementation
954 Added: Quick Fix for JUnit conversion (Annotations and JavaDoc)
955 Fixed: Methods Run as TestNG test
956 Added: Package level Run as TestNG test
957-Fixed: Resources from the linked directories are using a wrong path when
958+Fixed: Resources from the linked directories are using a wrong path when
959 passed to command line TestNG
960
961 IDEA plug-in:
962@@ -1173,7 +1634,7 @@ Fixed: TestNGException thrown when TestNG conditions are not fulfilled
963
964 Documentation:
965 - New assert classes
966-- New ways to launch
967+- New ways to launch
968 - JUnitConverter documentation
969 - new beforeSuite/afterSuite
970
971@@ -1255,7 +1716,7 @@ Added: <fileset> to <testng>
972
973 1.0
974 2004/04/28
975-http://beust.com/weblog/2004/04/28/
976+https://beust.com/weblog/2004/04/28/
977
978 Fixed: Updated to the new DTD
979 Fixed: Suite table of contents displays failures first
980diff --git a/CHECKLIST b/CHECKLIST
981deleted file mode 100644
982index e9488f1..0000000
983--- a/CHECKLIST
984+++ /dev/null
985@@ -1,10 +0,0 @@
986-Check list for releases:
987-
988-pom.xml
989-pom-test.xml
990-Version.java
991-build.properties
992-
993-doc/index.html
994-doc/documentation-main.html
995-doc/maven.html
996diff --git a/FILES b/FILES
997deleted file mode 100644
998index 482af74..0000000
999--- a/FILES
1000+++ /dev/null
1001@@ -1,11 +0,0 @@
1002-build.properties
1003-build.xml
1004-lib/DTDDoc.jar
1005-examples/build.xml
1006-examples/testng.properties
1007-examples/testng.xml
1008-examples/src/
1009-maven-testng-plugin-1.1.jar
1010-CHANGES.txt
1011-LICENSE.txt
1012-README
1013diff --git a/LICENSE.txt b/LICENSE.txt
1014index 261eeb9..20e4bd8 100644
1015--- a/LICENSE.txt
1016+++ b/LICENSE.txt
1017@@ -1,6 +1,6 @@
1018 Apache License
1019 Version 2.0, January 2004
1020- http://www.apache.org/licenses/
1021+ https://www.apache.org/licenses/
1022
1023 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1024
1025@@ -192,7 +192,7 @@
1026 you may not use this file except in compliance with the License.
1027 You may obtain a copy of the License at
1028
1029- http://www.apache.org/licenses/LICENSE-2.0
1030+ https://www.apache.org/licenses/LICENSE-2.0
1031
1032 Unless required by applicable law or agreed to in writing, software
1033 distributed under the License is distributed on an "AS IS" BASIS,
1034diff --git a/NOTES b/NOTES
1035deleted file mode 100644
1036index 07c2aa1..0000000
1037--- a/NOTES
1038+++ /dev/null
1039@@ -1,38 +0,0 @@
1040-=====
1041-Maven
1042-=====
1043-
1044-If you ran the full dist build, it should have generated a file on your hard drive called
1045-"testng-5.12-bundle.jar".
1046-
1047-Testing:
1048-
1049--> Update <version>5.12</version> in bundle-pom.xml to the correct version
1050- mvn install:install-file -DpomFile=bundle-pom.xml -Dfile=testng-5.12.1.jar
1051- cd /tmp
1052- svn co http://svn.apache.org/repos/asf/maven/surefire/trunk/surefire-integration-tests/src/test/resources/testng-simple/
1053- cd testng-simple
1054--> Update <testNgVersion> in pom.xml to the correct version
1055--> Remove <classifier> in pom.xml if it's still there
1056- mvn -DtestNgVersion=5.12.1 -Dsurefire.version=2.5 clean test
1057--> Send bundle to Brett Porter <brett.porter@gmail.com>
1058-
1059-=======
1060-Eclipse
1061-=======
1062-
1063-I ended up doing the launch configuration, and just for information, here are the parameters:
1064-
1065-Run Configuration / Eclipse application.
1066-
1067-Check "Run an application" in "Program to run", and select org.eclipse.equinox.p2.metadata.generator.EclipseGenerator
1068-
1069-The program arguments are (replace the update site directory appropriately):
1070-
1071-Linux:
1072--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
1073-
1074-Mac
1075--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
1076-
1077-This will generate the site in ~/java/testng-eclipse-update-site
1078diff --git a/README b/README
1079deleted file mode 100644
1080index ae34ca2..0000000
1081--- a/README
1082+++ /dev/null
1083@@ -1,12 +0,0 @@
1084-[![Build Status](https://travis-ci.org/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
1085-
1086-Welcome to TestNG 6.8beta
1087-
1088-Please note that even though the .zip distribution contains the TestNG sources,
1089-you will not be able to build the software with them because we decided
1090-not to include the external jar files in order to keep the size down.
1091-
1092-If you want to build TestNG, please sync to the GitHub repository at https://github.com/cbeust/testng.
1093-
1094---
1095-The TestNG team
1096diff --git a/README-publish b/README-publish
1097deleted file mode 100644
1098index 621ed43..0000000
1099--- a/README-publish
1100+++ /dev/null
1101@@ -1,9 +0,0 @@
1102-To publish:
1103-
1104-- ./gradlew bintrayUpload will upload the release to JCenter. It will fail if the version is a SNAPSHOT
1105-- ./gradlew uploadArchives will upload
1106- - the snapshot to https://oss.sonatype.org/content/repositories/snapshots
1107- - the release to https://oss.sonatype.org/service/local/staging/deploy/maven2
1108-For a release, you then need to go to https://oss.sonatype.org/index.html#stagingRepositories to manually close and release the distribution.
1109-
1110-Note 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.
1111diff --git a/README.build b/README.build
1112deleted file mode 100644
1113index 8b10e0d..0000000
1114--- a/README.build
1115+++ /dev/null
1116@@ -1,7 +0,0 @@
1117-You need to install ivy in order to build.
1118-
1119-You can either download it from the ivy site or more simply,
1120-copy ivy-2.1.0.jar included in the root directory to ~/.ant/lib.
1121-
1122-After this, "ant" will build the distribution and run the tests.
1123-
1124diff --git a/README.dev b/README.dev
1125deleted file mode 100644
1126index c74f7e5..0000000
1127--- a/README.dev
1128+++ /dev/null
1129@@ -1,36 +0,0 @@
1130-New installation:
1131-
1132-Install GPG at http://www.gpgtools.org/gpgmail/index.html
1133-Generate new key with gpg --gen-key
1134-build-with-maven
1135-gpg --list-keys
1136-Send the public key:
1137- gpg --keyserver hkp://pool.sks-keyservers.net --send-keys <public_key>
1138- or wwwkeys.at.pgp.net
1139-
1140-
1141- instructions at https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
1142-
1143-
1144-Configure ~/.m2/settings.xml with Nexus user/password:
1145-
1146- <settings>
1147- <servers>
1148- <server>
1149- <id>sonatype-nexus-snapshots</id>
1150- <username>***</username>
1151- <password>***</password>
1152- </server>
1153- <server>
1154- <id>sonatype-nexus-staging</id>
1155- <username>***</username>
1156- <password>***</password>
1157- </server>
1158- </servers>
1159- </settings>
1160-
1161-Snaphot deploy:
1162-mvn -Dgpg.passphrase= -Dgpg.keyname=<public_key> deploy
1163-
1164-Staging deploy:
1165-mvn -Dgpg.passphrase= -Dgpg.keyname=<public_key> release:clean release:prepare release:perform
1166diff --git a/README.md b/README.md
1167index 53879e4..1168afb 100644
1168--- a/README.md
1169+++ b/README.md
1170@@ -1,11 +1,49 @@
1171-[![Build Status](http://img.shields.io/travis/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
1172-[![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)
1173-[![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)
1174-[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/cbeust/testng?svg=true)](https://ci.appveyor.com/project/cbeust/testng)
1175-[![Dependency Status](https://www.versioneye.com/user/projects/553a031c4e5d2e9408000059/badge.svg)](https://www.versioneye.com/user/projects/553a031c4e5d2e9408000059)
1176-[![Reference Status](https://www.versioneye.com/java/org.testng:testng/reference_badge.svg)](https://www.versioneye.com/java/org.testng:testng/references)
1177 [![Maven Central](https://img.shields.io/maven-central/v/org.testng/testng.svg)](https://maven-badges.herokuapp.com/maven-central/org.testng/testng)
1178 [![License](https://img.shields.io/github/license/cbeust/testng.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
1179-[![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)
1180+[![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)
1181+[![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)
1182
1183-Documentation available at [TestNG's main web site](http://testng.org).
1184+Documentation available at [TestNG's main web site](https://testng.org).
1185+
1186+### Release Notes
1187+
1188+* [7.4.0](https://groups.google.com/g/testng-users/c/dwSJ04qeu8k)
1189+* [7.3.0](https://groups.google.com/forum/#!topic/testng-users/a81uaZvtEZI)
1190+* [7.1.0](https://groups.google.com/forum/#!topic/testng-users/84bYPJ1rjno)
1191+* [7.0.0](https://groups.google.com/forum/#!topic/testng-users/HKujuefBhXA)
1192+
1193+### Need help?
1194+Before opening a new issue, did you ask your question on
1195+* [Google group](https://groups.google.com/group/testng-users)
1196+* [StackOverflow](https://stackoverflow.com/questions/tagged/testng)
1197+
1198+If you posted on both sites, please provide the link to the other question to avoid duplicating the answer.
1199+
1200+### Are you sure it is a TestNG bug?
1201+Before posting the issue, try to reproduce the issue in [a shell window](https://testng.org/doc/documentation-main.html#running-testng).
1202+
1203+If 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:
1204+* Eclipse: https://github.com/cbeust/testng-eclipse/issues
1205+* IntelliJ: [https://youtrack.jetbrains.com/issues](https://youtrack.jetbrains.com/issues?q=Subsystem:%20%7BJava.%20Tests.%20TestNG%7D)
1206+* Maven: https://issues.apache.org/jira/browse/SUREFIRE
1207+* Gradle: https://issues.gradle.org/projects/GRADLE
1208+
1209+### Which version are you using?
1210+Always make sure your issue is happening on the latest TestNG version. Bug reports occurring on older versions will not be looked at quickly.
1211+
1212+### Have you considered sending a pull request instead of filing an issue?
1213+The best way to report a bug is to provide the TestNG team with a full test case reproducing the issue.
1214+Maybe you can write a runnable test case (check the `src/test/` folder for examples) and propose it in a pull request
1215+Don't worry if the CI fails because it is the expected behavior.
1216+This pull request will be a perfect start to find the fix :)
1217+
1218+### How to create a pull request?
1219+Refer our [Contributing](.github/CONTRIBUTING.md) section for detailed set of steps.
1220+
1221+### We encourage pull requests that:
1222+
1223+ * Add new features to TestNG (or)
1224+ * Fix bugs in TestNG
1225+
1226+ If your pull request involves fixing SonarQube issues then we would suggest that you please discuss this with the
1227+ [TestNG-dev](https://groups.google.com/forum/#!forum/testng-dev) before you spend time working on it.
1228diff --git a/TESTNG-5.11beta b/TESTNG-5.11beta
1229deleted file mode 100644
1230index e69de29..0000000
1231--- a/TESTNG-5.11beta
1232+++ /dev/null
1233diff --git a/TODO.txt b/TODO.txt
1234deleted file mode 100644
1235index 1013ce5..0000000
1236--- a/TODO.txt
1237+++ /dev/null
1238@@ -1,160 +0,0 @@
1239- TODO for TestNG
1240-
1241-* Pass the XmlTest in @Before/@After methods
1242-* Allow a testng.xml file to be passed when -testjar is used
1243-* Add onStart to IConfigurationListener (create a new interface, actually)
1244-* Add timeout to @Before/@After
1245-* Pass parameters from ant
1246-* Make it possible to specify groups on command line and classes in testng.xml
1247-(and any combinations thereof: command line, ant, testng.xml)
1248-* DataProvider index in testng.xml
1249-* Create a servlet for remote driving
1250-* Add time-outs at the testng.xml. Also: test and suite time-outs? http://tinyurl.com/kbwxq
1251-* Add working dir to the ant task
1252-* Add a servlet so TestNG can be invoked from a web browser
1253-* Make it possible to add listeners from the Eclipse plug-in
1254-
1255-Doc:
1256-
1257-* Document the fact that @Test methods with return values are ignored.
1258-
1259-===========================================================================
1260-Older TODO's:
1261-
1262-* Show enabled=false methods in the reports, as well as methods
1263-in groups that were not run
1264-* Multi-threading for invocationCount and maybe for <test> too
1265-* Annotation to specify that a method should be called concurrently by n threads
1266-(on second thought, we should do that for an entire group)
1267-* more thread ideas: http://www.theserverside.com/news/thread.tss?thread_id=38922
1268-* package support for command line and ant
1269-* Parameters for classes (to be passed as parameters to constructors)
1270-* testng-dist.zip should contain a top-level directory
1271-* For dependent methods, if the user is trying to run an incomplete graph
1272-(A depends on B but B is being excluded from the run), what to do? Ignore
1273-the exclusion on B and run it anyway, or abort with an exception explaining
1274-what's happening?)
1275-* Make timeOut() work with milliseconds (but keep seconds for backward
1276-compatibility)
1277-* Improve the plug-in API so people can add listeners without having to
1278-modify TestRunner
1279-* Use factories for the programmatic API.
1280-* Add dynamic generation of tests
1281-* Make Javadoc comments over methods appear in the final report
1282-
1283-Documentation:
1284-* IHookable
1285-* List<IReporter>
1286-
1287-
1288-DONE
1289-
1290-* Retry patch
1291-* If a method with invocationCount fails, don't run the others
1292-* Allow multiple listeners in ant task
1293-* Add working dir to the ant task
1294-* Introduce "test" and "suite" parameters to @Test at the class level to
1295-avoid having to use testng.xml
1296-* Remove TestNG stack traces from the report
1297-* When 0 tests were run, exit with an error http://tinyurl.com/ftng6
1298-* Show all the extra output for all methods in a single
1299-dedicated page
1300-* report API
1301-* Show parameters used to invoke a specific test
1302-* show skipped groups/methods in HTML report
1303-* beforeTestGroups
1304-* <testng classfileset> doesn't add to classpath
1305-* threadPoolSize
1306-* Parameter logging
1307-* JavaDoc for org.testng.TestNG
1308-* org.testng.Reporter in the HTML report (screenshot ready)
1309-* Document @Parameters only works for @Test (should mention @Factory and @Configuration)
1310-* Document: <testng classfileset> doesn't add to classpath
1311-* Document org.testng.Reporter in the HTML report (screenshot ready)
1312-* Document parameter logging
1313-* JavaDoc for org.testng.TestNG
1314-* Document threadPoolSize
1315-* Make sure it can run several times in the same JVM
1316-* Implement invocationCount and successPercentage
1317-* Support multiple testng.xml (TestNG allows it but not the reporters
1318-yet)
1319-* The HTML reporter collapses all the suites into one report, we should
1320-create one HTML report per suite
1321-* testng-failed.xml should contain the parameters of testng.xml (if any)
1322-* Create a testng-failed.xml that includes dependent methods
1323-* Generic reported with compare(ITestResult, ITestResult) for
1324-easier reporter for "slowest method first" or generate testng-failed.xml
1325-* Iterator factories
1326-* configuration methods don't respect inheritance
1327-- build.xml should issue a clear error message if trying to build with JDK1.4
1328-- Implement <tasdkdef resource="testnganttasks"> so we can define
1329-ant tasks for TestNG and JUnitConverter automatically
1330-- Write documentation to declare ant task in section 3.2.8
1331-- Documentation for alwaysRun
1332-- Allow to specify packages or prefix in the <classes> tag:
1333- <classes prefix="com.beust.testng"><class name="A"><class name="B"> />
1334-- New assert classes
1335-- New ways to launch
1336-- JUnitConverter documentation
1337-- new beforeSuite/afterSuite
1338-
1339-* in testng-failures.xml include the beforeSuite/afterSuite methods (very tricky)
1340-* Provide log.properties configuration (not using log any more)
1341-* Make @ExpectedExceptions fail if no exception is thrown
1342-* Make timeOut() work in non-parallel mode (the default mode needs to become
1343-parallel=true thread-count=1
1344-* The exception thrown when a test passes with a @ExpectedExceptions is not
1345-available via the TestNG API: ITestResult.getThrowable().
1346-* Add assert API for arrays and collections (undecided yet: partial asserting)
1347-* dependsOnMethods
1348-Allow to specify <groups> at the <suite> level
1349-Make TestNG run on class files and not just on testng.xml
1350-Make TestNG run on a jar file that has a testng.xml file in its root or just on all
1351- the classes inside that jar file.
1352-
1353-Implement parameter passing of tests: define a property in the properties
1354-file and pass it to the test method:
1355-
1356-@Test(params = { "${fn}", "${ln}" }
1357-public void testNames(String firstName, String lastName) {
1358-}
1359-
1360-Run groups of groups
1361-List all tests that will be run, or show methods per group
1362-HTML generation
1363-Make test and class methods discoverable
1364- JUnit adapter
1365-Multiple ExpectedException
1366-Inheritance
1367-Test listeners
1368-Group regexps for launching
1369-
1370-====
1371-
1372-A new comment has been posted on your blog Otaku, Cedric's weblog, on entry
1373-#149 (The poor shape of Unit Testing).
1374-http://beust.com/weblog/archives/000149.html
1375-
1376-IP Address: 68.72.49.189
1377-Name: Curt Cox
1378-Email Address: curtcox@gmail.com
1379-URL:
1380-
1381-Comments:
1382-
1383-For whatever its worth, here are my problems with JUnit. I've largely developed work-arounds.
1384-
1385-1. Interface-based testing is awkward.
1386-2. Only fast-fail tests are supported.
1387-3. The design is brittle, poorly documented, and thus hard to extend.
1388-
1389-How 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:
1390-- all classes will fail a (supressible) test if they violate the contract for equals() and hashCode()
1391-- classes that implement Comparable will fail a test if they fail to implement Comparable
1392-- and likewise for java.io.Serializable, java.util.Map, java.util.List, etc...
1393-
1394-When 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.
1395-
1396-As 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.
1397-
1398-
1399diff --git a/ant/README.template b/ant/README.template
1400deleted file mode 100644
1401index fe25c22..0000000
1402--- a/ant/README.template
1403+++ /dev/null
1404@@ -1,12 +0,0 @@
1405-[![Build Status](https://travis-ci.org/cbeust/testng.svg)](https://travis-ci.org/cbeust/testng)
1406-
1407-Welcome to TestNG ${version}
1408-
1409-Please note that even though the .zip distribution contains the TestNG sources,
1410-you will not be able to build the software with them because we decided
1411-not to include the external jar files in order to keep the size down.
1412-
1413-If you want to build TestNG, please sync to the GitHub repository at https://github.com/cbeust/testng.
1414-
1415---
1416-The TestNG team
1417diff --git a/ant/build-ant.xml b/ant/build-ant.xml
1418deleted file mode 100644
1419index 4502117..0000000
1420--- a/ant/build-ant.xml
1421+++ /dev/null
1422@@ -1,74 +0,0 @@
1423-<project name="testng" default="all" basedir=".">
1424-
1425- <property file="build.properties"/>
1426- <property name="this.directory" value="${test.dir}" />
1427- <property name="test-output" value="${this.directory}/test-output" />
1428-
1429- <taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${testng.jar}" />
1430-
1431- <target name="all">
1432- <echo>This dir: ${this.directory}</echo>
1433- <delete failonerror="false" dir="${this.directory}/build" />
1434- <mkdir dir="${this.directory}/build" />
1435-
1436- <javac classpath="${testng.jar}"
1437- destdir="${this.directory}/build" srcdir="${this.directory}" includes="test/ant/*.java" />
1438-
1439-<!--
1440- <testng classpath="build;../../testng-5.2beta-jdk15.jar"
1441- outputdir="test-output"
1442- dumpcommand="true">
1443- <xmlfileset dir="." includes="testng.xml"/>
1444- </testng>
1445--->
1446- <delete failonerror="false">
1447- <fileset dir="${test-output}" includes="**"/></delete>
1448-
1449- <testng classpath="${this.directory}/build;${testng.jar}"
1450- outputdir="${test-output}"
1451- parallel="methods"
1452- threadcount="5"
1453- listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
1454- haltonfailure="true"
1455- >
1456- <classfileset dir="${this.directory}/build">
1457- <include name="test/ant/NoPackageTest.class" />
1458- <include name="test/ant/MultipleThreadTest.class" />
1459- </classfileset>
1460- </testng>
1461-
1462- <available file="${test-output}/Ant suite/Ant test.xml"
1463- type="file" property="test.exists"/>
1464- <fail unless="test.exists"
1465- message="The appropriately named output should have been created"/>
1466-
1467- <testng classpath="${this.directory}/build;${testng.jar}"
1468- outputdir="${test-output}"
1469- listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
1470- haltonfailure="true"
1471- suitename="Test Ant Suite"
1472- testname="Test Ant Test"
1473- >
1474- <classfileset dir="${this.directory}/build">
1475- <include name="test/ant/DontOverrideSuiteNameTest.class" />
1476- </classfileset>
1477- </testng>
1478-
1479- <available file="${test-output}/Test Ant Suite/Test Ant Test.xml"
1480- type="file" property="test2.exists"/>
1481- <fail unless="test2.exists" message="The appropriately named output should have been created"/>
1482-
1483- <!-- Ensure standard tests get run -->
1484- <testng classpath="${this.directory}/build;${testng.jar}"
1485- outputdir="${test-output}"
1486- listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
1487- haltonfailure="true"
1488- >
1489- <xmlfileset file="${test.resources.dir}/testng-ant.xml"/>
1490- </testng>
1491- <available file="${test-output}/Suitename from xml/TestName.xml"
1492- type="file" property="test3.exists"/>
1493- <fail unless="test3.exists" message="The appropriately named output should have been created"/>
1494-
1495- </target>
1496-</project>
1497diff --git a/ant/build-tests.xml b/ant/build-tests.xml
1498deleted file mode 100644
1499index 4f51c47..0000000
1500--- a/ant/build-tests.xml
1501+++ /dev/null
1502@@ -1,187 +0,0 @@
1503-<project name="testng" default="all" basedir=".">
1504-
1505- <property file="build.properties"/>
1506-
1507- <property name="report.dir" value="${test.output.dir}"/>
1508- <property name="junit.report.dir" value="${report.dir}/test-tmp"/>
1509- <property name="testng.report.dir" value="${report.dir}"/>
1510-
1511- <target name="all" depends="prepare,compile,run,reports,done"/>
1512-
1513- <!-- ==================================================================== -->
1514- <!-- Compile -->
1515- <!-- ==================================================================== -->
1516- <path id="compile.cp">
1517- <pathelement location="${testng.jar}" />
1518- <fileset dir="${lib.dir}" includes="${guice2.jar}" />
1519- <fileset dir="${lib.dir}" includes="${junit.jar}" />
1520- <fileset dir="${lib.dir}" includes="aopalliance-1.0.jar" />
1521- </path>
1522-
1523- <target name="env:info">
1524- <echo>
1525-BASEDIR =${basedir}
1526-TEST.DIR =${test.dir}
1527-TEST.BUILD.DIR =${test.build.dir}
1528-REPORT.DIR =${report.dir}
1529-JUNIT.REPORT.DIR =${junit.report.dir}
1530-TESTNG.REPORT.DIR=${testng.report.dir}
1531- </echo>
1532- </target>
1533-
1534- <target name="compile" depends="prepare">
1535- <echo message=" -- Compiling tests --"/>
1536-
1537- <property name="build.compiler" value="modern"/>
1538- <javac debug="true"
1539- source="1.7"
1540- classpathref="compile.cp"
1541- srcdir="${test.dir}"
1542- destdir="${test.build.dir}"
1543- />
1544-
1545- </target>
1546-
1547- <target name="prepare">
1548- <tstamp/>
1549- <mkdir dir="${test.build.dir}"/>
1550- <mkdir dir="${junit.report.dir}"/>
1551- <mkdir dir="${testng.report.dir}"/>
1552-
1553- <taskdef name="testng"
1554- classname="org.testng.TestNGAntTask"
1555- classpath="${build.dir}"/>
1556- </target>
1557-
1558-<!--
1559- <property name="cobertura.dir" value="../cobertura-1.9.4.1" />
1560-
1561- <path id="cobertura.classpath">
1562- <fileset dir="${cobertura.dir}">
1563- <include name="cobertura.jar" />
1564- <include name="lib/**/*.jar" />
1565- </fileset>
1566- </path>
1567--->
1568-
1569- <!-- ==================================================================== -->
1570- <!-- Run -->
1571- <!-- ==================================================================== -->
1572-
1573- <path id="run.cp">
1574-<!--
1575- <path location="target/instrumented-classes" />
1576- <path refid="cobertura.classpath" />
1577--->
1578- <path refid="compile.cp"/>
1579- <pathelement location="${test.build.dir}"/>
1580- </path>
1581-
1582- <target name="run" description="Run tests" depends="compile,copy-resources">
1583- <echo message=" -- Running tests --"/>
1584- <echo message=" -- ${testng.jar} --" />
1585- <testng classpathref="run.cp"
1586- outputdir="${testng.report.dir}">
1587- <xmlfileset dir="${test.resources.dir}" includes="testng.xml"/>
1588- <jvmarg value="-Dtest.resources.dir=${test.resources.dir}" />
1589- <jvmarg value="-Dsun.io.serialization.extendedDebugInfo=true" />
1590- </testng>
1591- </target>
1592-
1593- <target name="copy-resources" description="Copies resources.">
1594- <copy verbose="false"
1595- file="${src.resources.dir}/testngtasks"
1596- todir="${build.dir}" />
1597- <copy todir="${build.dir}">
1598- <fileset dir="${src.resources.dir}">
1599- <exclude name="**/.*" />
1600- <exclude name="**/CVS/*" />
1601- </fileset>
1602- </copy>
1603- </target>
1604-
1605- <target name="run:single" description="Run 1 property file named with the ant property test" depends="compile">
1606- <echo message=" -- testng-tests-run1 --"/>
1607-
1608- <testng outputdir="${testng.report.dir}"
1609- classpathref="run.cp"
1610- useDefaultListeners="true"
1611- outputDir="${testng.report.dir}">
1612- <xmlfileset dir="${test.resources.dir}" includes="testng-single.xml"/>
1613- </testng>
1614-
1615- <echo>Report created in open ${testng.report.dir}/index.html</echo>
1616- </target>
1617-
1618- <target name="run:antprop" description="Run a test to see if ant system propertes are passed correctly" depends="compile">
1619- <echo message=" -- testng-tests-run-antprop --"/>
1620- <property name="syspropset1" value="value 1"/>
1621- <property name="syspropset2" value="value 2"/>
1622- <propertyset id="propset1">
1623- <propertyref name="syspropset1"/>
1624- <propertyref name="syspropset2"/>
1625- </propertyset>
1626-
1627- <testng outputdir="${testng.report.dir}"
1628- classpathref="run.cp">
1629- <xmlfileset dir="${test.resources.dir}" includes="testng-single3.xml"/>
1630- <propertyset refid="propset1"/>
1631- <sysproperty key="sysprop1" value="value 3"/>
1632- </testng>
1633- </target>
1634-
1635- <!-- ==================================================================== -->
1636- <!-- Run specific configuration -->
1637- <!-- ==================================================================== -->
1638- <target name="run:conf"
1639- if="testng.conf"
1640- depends="clean:reports,compile"
1641- description="Run specified tests">
1642- <echo message=" -- testng-tests-run --"/>
1643- <echo message="using: ${testng.conf}.xml"/>
1644-
1645- <testng classpathref="run.cp"
1646- outputDir="${testng.report.dir}">
1647- <xmlfileset dir="${test.resources.dir}" includes="${testng.conf}.xml"/>
1648- </testng>
1649-
1650- <antcall target="clean.tmp"/>
1651- </target>
1652-
1653-
1654- <!-- ==================================================================== -->
1655- <!-- Reports -->
1656- <!-- ==================================================================== -->
1657-
1658- <target name="reports">
1659- <junitreport todir="${junit.report.dir}">
1660- <fileset dir="${testng.report.dir}">
1661- <include name="*.xml"/>
1662- <exclude name="testng-failed.xml"/>
1663- <exclude name="testng-results.xml" />
1664- </fileset>
1665- <report format="noframes" todir="${junit.report.dir}"/>
1666- </junitreport>
1667- </target>
1668-
1669-
1670- <target name="clean.tmp">
1671- <delete dir="${test.output.dir}"/>
1672- </target>
1673-
1674- <target name="clean:reports">
1675- <delete dir="${report.dir}"/>
1676- <delete dir="${junit.report.dir}"/>
1677- </target>
1678-
1679- <target name="clean" depends="clean.tmp,clean:reports">
1680- <echo message=" -- test clean --"/>
1681-
1682- <delete dir="${test.build.dir}"/>
1683- </target>
1684-
1685- <target name="done">
1686- <echo>Reports can be found in: open ${testng.report.dir}/index.html</echo>
1687- </target>
1688-
1689-</project>
1690diff --git a/ant/build.properties b/ant/build.properties
1691deleted file mode 100644
1692index f4309d8..0000000
1693--- a/ant/build.properties
1694+++ /dev/null
1695@@ -1,76 +0,0 @@
1696-#
1697-# TestNG distribution
1698-#
1699-testng.basename=testng
1700-testng.version=6.8.14-SNAPSHOT
1701-testng.fullname=${testng.basename}-${testng.version}
1702-
1703-#
1704-# Global directories
1705-#
1706-root.dir=${basedir}
1707-build.3rdparty.dir=${root.dir}/build3rdparty
1708-build.maven-bundle.dir=${build.dir}/maven-bundle
1709-target=${root.dir}/target
1710-lib.dir=${basedir}/lib
1711-lib-supplied.dir=${basedir}/lib-supplied
1712-src.dir=${basedir}/src/main/java
1713-src.resources.dir=${basedir}/src/main/resources
1714-build.dir=${target}/classes
1715-test.dir=${basedir}/src/test/java
1716-test.build.dir=${target}/test-classes
1717-test.output.dir=${target}/test-output
1718-test.resources.dir=${basedir}/src/test/resources
1719-example.dir=${basedir}/examples
1720-
1721-#
1722-# Jar files
1723-#
1724-beanshell.jar=bsh-2.0b4.jar
1725-guice2.jar=guice-2.0.jar
1726-junit.jar=junit-4.10.jar
1727-ant.jar=ant-1.7.0.jar
1728-jcommander.jar=jcommander-1.27.jar
1729-yaml.jar=snakeyaml-1.12.jar
1730-
1731-all.jar.files=${beanshell.jar},${junit.jar},${ant.jar},${jcommander.jar},${yaml.jar},${guice2.jar}
1732-
1733-#
1734-# Names of distributions
1735-#
1736-testng.jar=${target}/${testng.fullname}.jar
1737-testng.dist.jar=${testng.fullname}-dist.jar
1738-sources.testng.jar=${testng.fullname}-sources.jar
1739-testng.junit.jar=${testng.fullname}-junit.jar
1740-testng.nobsh.noguice.jar=${testng.fullname}-nobsh-noguice.jar
1741-testng.bsh.noguice.jar=${testng.fullname}-bsh-noguice.jar
1742-testng.nobsh.guice.jar=${testng.fullname}-nobsh-guice.jar
1743-testng.ibiblio.jar=${testng.fullname}-bundle.jar
1744-testng.zip=${target}/${testng.fullname}.zip
1745-testng.maven-bundle=${target}/${testng.fullname}-bundle.jar
1746-testng.javadoc.zip=${testng.fullname}-javadoc.zip
1747-
1748-other.jars.dir=${target}/other-jars
1749-
1750-#
1751-# Test locations
1752-#
1753-test.location.msg=Test results can be found in\n\
1754-test/test-output/index.html
1755-
1756-#
1757-# Eclipse plug-in
1758-#
1759-testng-eclipse.dir=../testng-eclipse
1760-
1761-#
1762-# Maven plug-in version
1763-# Note, this version number is appended to the resulting plug-in jar
1764-#
1765-testng-maven.version=1.2
1766-
1767-#
1768-# JDK 1.4 for sanity checking before a distribution
1769-#
1770-java14.home=jdk-1.5.0_04
1771-#java14.home=c:/java/jdk-1.4.2_08
1772diff --git a/ant/build.xml b/ant/build.xml
1773deleted file mode 100644
1774index a1e4bba..0000000
1775--- a/ant/build.xml
1776+++ /dev/null
1777@@ -1,467 +0,0 @@
1778-<project name="testng" default="dev" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
1779-
1780- <!-- ====================================================================== -->
1781- <!-- TestNG build file -->
1782- <!-- Created cbeust, April 26th, 2004 -->
1783- <!-- ====================================================================== -->
1784-
1785- <property file="build.properties" />
1786- <property name="optimize" value="false" />
1787-
1788- <!-- ====================================================================== -->
1789- <!-- PREPARE -->
1790- <!-- ====================================================================== -->
1791- <target name="prepare" depends="retrieve-dependencies"
1792- description="Performs all preparations required to build.">
1793- <tstamp />
1794- <mkdir dir="${build.dir}" />
1795- <mkdir dir="${other.jars.dir}" />
1796- </target>
1797-
1798- <!-- ====================================================================== -->
1799- <!-- DUMP -->
1800- <!-- ====================================================================== -->
1801- <target name="dump" description="Dumps all properties." depends="prepare">
1802- <echoproperties />
1803- </target>
1804-
1805- <!-- ====================================================================== -->
1806- <!-- VALIDATE -->
1807- <!-- ====================================================================== -->
1808-
1809- <target name="validate" description="Validates the build environment.">
1810- <!-- java greater than 1.6 required to build -->
1811- <condition property="requiredJavaVersion">
1812- <or>
1813- <equals arg1="${ant.java.version}" arg2="1.9" />
1814- <equals arg1="${ant.java.version}" arg2="1.8" />
1815- <equals arg1="${ant.java.version}" arg2="1.7" />
1816- </or>
1817- </condition>
1818- <fail unless="requiredJavaVersion"
1819- message="Java version 1.7 required." />
1820- <!-- validate ant version too ... -->
1821- </target>
1822-
1823- <!-- ==================================================================== -->
1824- <!-- COPY-RESOURCES -->
1825- <!-- ==================================================================== -->
1826-
1827- <target name="copy-resources" description="Copies resources.">
1828- <copy verbose="false"
1829- file="${src.resources.dir}/testngtasks"
1830- todir="${build.dir}" />
1831- <copy todir="${build.dir}">
1832- <fileset dir="${src.resources.dir}">
1833- <exclude name="**/.*" />
1834- <exclude name="**/CVS/*" />
1835- </fileset>
1836- </copy>
1837- </target>
1838-
1839-
1840- <target name="dev"
1841- depends="prepare,validate,copy-resources,build,tests" />
1842-
1843- <target name="all"
1844- depends="prepare,validate,copy-resources,build,dist,tests,test-ant,javadocs,dist" />
1845-
1846- <target name="build" depends="prepare,compile,testng-jar-all" />
1847-
1848- <target name="testng-jar-all">
1849- <antcall target="create-jar">
1850- <param name="jar.file" value="${testng.jar}" />
1851- </antcall>
1852- <jar jarfile="${testng.jar}" update="true">
1853- <zipfileset src="${lib.dir}/${beanshell.jar}" />
1854- <zipfileset src="${lib.dir}/${jcommander.jar}" />
1855- <zipfileset src="${lib.dir}/${yaml.jar}" />
1856- </jar>
1857-
1858- </target>
1859-
1860- <target name="single">
1861- <ant antfile="build-tests.xml" target="run:single"/>
1862- </target>
1863-
1864- <!-- ==================================================================== -->
1865- <!-- Compile -->
1866- <!-- ==================================================================== -->
1867-
1868- <path id="compile2.cp">
1869- <fileset dir="${lib.dir}" includes="${all.jar.files}" />
1870- </path>
1871-
1872- <target name="compile"
1873- depends="prepare,copy-resources"
1874- description="Compiles sources">
1875- <echo message=" -- Compiling sources --" />
1876-
1877- <echo>Src:${src.dir}</echo>
1878- <javac classpathref="compile2.cp"
1879- verbose="false"
1880- target="1.7"
1881- debug="true"
1882- optimize="${optimize}"
1883- destdir="${build.dir}">
1884- <src path="${src.dir}" />
1885- </javac>
1886- </target>
1887-
1888- <target name="compile:all" depends="compile" />
1889-
1890- <target name="examples">
1891- <ant inheritall="no" antfile="examples/build.xml" />
1892- </target>
1893-
1894- <target name="tests" depends="build" description="runs all JDK5 tests with JDK5 distro">
1895- <ant inheritall="no" antfile="build-tests.xml" />
1896- </target>
1897-
1898- <target name="test-ant" depends="build">
1899- <echo message=" -- Testing ant testng task functionality --" />
1900- <ant inheritall="no" antfile="build-ant.xml" />
1901- </target>
1902-
1903- <!-- ==================================================================== -->
1904- <!-- Documentation -->
1905- <!-- ==================================================================== -->
1906-
1907- <target name="javadocs" depends="build,javadocs-current" />
1908-
1909- <target name="doclava">
1910- <javadoc
1911- docletpath="3rdparty/doclava-1.0.3.jar"
1912- bootclasspath="${javahome}/jre/lib/rt.jar"
1913- classpath="${testng.jar}:lib/${ant.jar}:lib/${guice2.jar}:lib/aopalliance-1.0.jar"
1914- maxmemory="2048M"
1915- additionalparam="-quiet"
1916- verbose="false"
1917- destdir="javadocs"
1918- >
1919- <fileset dir="${src.dir}" defaultexcludes="yes">
1920- <include name="org/testng/*.java" />
1921- </fileset>
1922- <fileset dir="${src.dir}" defaultexcludes="yes">
1923- <include name="org/testng/xml/Xml*.java" />
1924- </fileset>
1925- <fileset dir="${src.dir}" defaultexcludes="yes">
1926- <include name="org/testng/annotations/**" />
1927- </fileset>
1928- <doclet name="com.google.doclava.Doclava">
1929- <param name="-stubs" value="build/stubs" />
1930- <param name="-hdf"/>
1931- <param name="project.name" value="TestNG" />
1932- <!-- versioning -->
1933- <param name="-since"/>
1934- <param name="doclava/previous.xml"/>
1935- <param name="v1" />
1936- <param name="-apiversion" value="v2"/>
1937- <!-- federation -->
1938- <param name="-federate" />
1939- <param name="JDK"/>
1940- <param name="http://download.oracle.com/javase/6/docs/api/index.html?"/>
1941- <param name="-federationxml"/><param name="JDK"/>
1942- <param name="http://doclava.googlecode.com/svn/static/api/openjdk-6.xml"/>
1943- </doclet>
1944- </javadoc>
1945- </target>
1946-
1947- <target name="javadocs-current">
1948- <javadoc additionalparam="-quiet" destdir="javadocs" source="1.7" windowtitle="TestNG"
1949- classpath="${testng.jar}" classpathref="compile2.cp" verbose="false">
1950- <fileset dir="${src.dir}" defaultexcludes="yes">
1951- <include name="org/testng/*.java" />
1952- </fileset>
1953- <fileset dir="${src.dir}" defaultexcludes="yes">
1954- <include name="org/testng/xml/Xml*.java" />
1955- </fileset>
1956- <fileset dir="${src.dir}" defaultexcludes="yes">
1957- <include name="org/testng/annotations/**" />
1958- </fileset>
1959- </javadoc>
1960- </target>
1961-
1962- <!-- ==================================================================== -->
1963- <!-- Distribution -->
1964- <!-- ==================================================================== -->
1965-
1966- <target name="dist" depends="build,all-jar-flavors,dist-all-zip,eclipse" />
1967-
1968- <target name="all-jar-flavors" depends="dist-junit,dist-nobsh-guice,dist-bsh-noguice,dist-nobsh-noguice,dist-testng-dist,dist-testng-javadoc" />
1969-
1970- <target name="dist-junit">
1971- <antcall target="create-jar">
1972- <param name="jar.file" value="${other.jars.dir}/${testng.junit.jar}" />
1973- </antcall>
1974- <jar jarfile="${other.jars.dir}/${testng.junit.jar}" update="true">
1975- <zipfileset src="${lib.dir}/${beanshell.jar}" />
1976- <zipfileset src="${lib.dir}/${jcommander.jar}" />
1977- <zipfileset src="${lib.dir}/${junit.jar}" />
1978- <zipfileset src="${lib.dir}/${yaml.jar}" />
1979- </jar>
1980- </target>
1981-
1982- <target name="dist-nobsh-guice">
1983- <antcall target="create-jar">
1984- <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.guice.jar}" />
1985- </antcall>
1986- <jar jarfile="${other.jars.dir}/${testng.nobsh.guice.jar}" update="true">
1987- <zipfileset src="${lib.dir}/${guice2.jar}" />
1988- <zipfileset src="${lib.dir}/${jcommander.jar}" />
1989- <zipfileset src="${lib.dir}/${junit.jar}" />
1990- </jar>
1991- </target>
1992-
1993- <target name="dist-bsh-noguice">
1994- <antcall target="create-jar">
1995- <param name="jar.file" value="${other.jars.dir}/${testng.bsh.noguice.jar}" />
1996- </antcall>
1997- <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
1998- <zipfileset src="${lib.dir}/${beanshell.jar}" />
1999- <zipfileset src="${lib.dir}/${jcommander.jar}" />
2000- <zipfileset src="${lib.dir}/${junit.jar}" />
2001- </jar>
2002- </target>
2003-
2004- <target name="dist-nobsh-noguice">
2005- <antcall target="create-jar">
2006- <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.noguice.jar}" />
2007- </antcall>
2008- <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
2009- <zipfileset src="${lib.dir}/${jcommander.jar}" />
2010- <zipfileset src="${lib.dir}/${junit.jar}" />
2011- </jar>
2012- </target>
2013-
2014- <target name="dist-testng-dist">
2015- <antcall target="create-jar">
2016- <param name="jar.file" value="${other.jars.dir}/${testng.dist.jar}" />
2017- </antcall>
2018- <jar jarfile="${other.jars.dir}/${testng.dist.jar}" update="true">
2019- <zipfileset src="${lib.dir}/${jcommander.jar}" />
2020- </jar>
2021- </target>
2022-
2023- <target name="dist-testng-javadoc" depends="javadocs">
2024- <zip destfile="${other.jars.dir}/${testng.javadoc.zip}">
2025- <fileset dir="javadocs"/>
2026- </zip>
2027- </target>
2028-
2029- <target name="create-jar" description="Create a jar file with the Testng classes and nothing else"
2030- depends="compile">
2031- <delete file="${jar.file}" />
2032- <jar destfile="${jar.file}" >
2033- <manifest>
2034- <attribute name="Main-Class" value="org.testng.TestNG" />
2035- <attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
2036- </manifest>
2037- <fileset dir="${build.dir}" />
2038- <fileset file="TESTNG-${testng.version}" />
2039- </jar>
2040- </target>
2041-
2042- <target name="dist-all-zip" depends="dist-prepare,javadocs">
2043- <property name="zip.dir" value="testng-${testng.version}" />
2044- <echo>Adding ${testng.fullname}</echo>
2045- <zip zipfile="${testng.zip}">
2046- <zipfileset prefix="${zip.dir}" dir="${target}">
2047- <include name="${testng.fullname}.jar" />
2048- </zipfileset>
2049- <zipfileset prefix="${zip.dir}" dir="${basedir}" includesfile="FILES" />
2050- <zipfileset dir="${other.jars.dir}" prefix="${zip.dir}/other-jars"/>
2051- <zipfileset dir="javadocs" prefix="${zip.dir}/javadocs" />
2052- <zipfileset dir="src" prefix="${zip.dir}/src" />
2053- <zipfileset dir="spring" prefix="${zip.dir}/spring" />
2054- <zipfileset dir="doc" prefix="${zip.dir}/doc" />
2055- <zipfileset dir="${src.resources.dir}"
2056- prefix="${zip.dir}/resources"
2057- includes="**/*.css"/>
2058- </zip>
2059- </target>
2060-
2061-<!--
2062- <target name="dist-maven-bundle" depends="dist-all-zip">
2063- <mkdir dir="${build.maven-bundle.dir}" />
2064- <copy file="bundle-pom.xml" tofile="${build.maven-bundle.dir}/pom.xml" overwrite="true">
2065- <filterchain>
2066- <expandproperties/>
2067- </filterchain>
2068- </copy>
2069- <jar destfile="${build.maven-bundle.dir}/${sources.testng.jar}">
2070- <fileset dir="${src.dir}" />
2071- </jar>
2072-
2073- <exec executable="gpg">
2074- <arg value="- -yes" />
2075- <arg value="-ab" />
2076- <arg value="${testng.jar}" />
2077- </exec>
2078-
2079- <exec executable="gpg">
2080- <arg value="- -yes" />
2081- <arg value="-ab" />
2082- <arg value="${build.maven-bundle.dir}/pom.xml" />
2083- </exec>
2084-
2085- <exec executable="gpg">
2086- <arg value="- -yes" />
2087- <arg value="-ab" />
2088- <arg value="${build.maven-bundle.dir}/${sources.testng.jar}" />
2089- </exec>
2090-
2091- <jar destfile="${testng.maven-bundle}">
2092- <fileset file="${build.maven-bundle.dir}/pom.xml" />
2093- <fileset file="${build.maven-bundle.dir}/${sources.testng.jar}" />
2094- <fileset file="${build.maven-bundle.dir}/*asc" />
2095- <fileset file="${testng.jar}" />
2096- <fileset file="${testng.jar}.asc" />
2097- </jar>
2098- </target>
2099--->
2100-
2101- <target name="dist-prepare" depends="update-readme">
2102- <delete file="{other.jars.dir}/${testng.nobsh.jar}" />
2103- <mkdir dir="${other.jars.dir}" />
2104- </target>
2105-
2106- <target name="update-readme">
2107- <copy file="README.template" tofile="README.md" />
2108- <replace file="README.md" token="${version}" value="${testng.version}" />
2109- <touch file="TESTNG-${testng.version}" />
2110- </target>
2111-
2112- <target name="eclipse" description="Used by Cedric to build distributions">
2113- <property name="jdk15.jar"
2114- value="${testng-eclipse.dir}/lib/testng.jar" />
2115-
2116- <delete file="${jdk15.jar}" />
2117- <copy file="${testng.jar}" tofile="${jdk15.jar}" />
2118-
2119- <!-- sources -->
2120- <property name="sources" value="${testng-eclipse.dir}/lib/testng-sources.jar"/>
2121- <echo>Sources: ${sources}</echo>
2122- <jar destfile="${sources}" basedir="src/main/java/" />
2123- </target>
2124-
2125- <target name="ftp">
2126- <!--
2127- <ftp action="put"
2128- server="beust.com"
2129- remotedir="w/testng/test-output"
2130- userid="${userid}"
2131- password="${password}">
2132- <fileset dir="c:\weblogic\dev\sandbox\cbeust\testng\test\test-output">
2133- <include name="index.html" />
2134- <include name="main.html" />
2135- <include name="toc.html" />
2136- <include name="*egression*" />
2137- </fileset>
2138- </ftp>
2139- -->
2140- <ftp action="put"
2141- server="beust.com"
2142- remotedir="w/testng"
2143- userid="${userid}"
2144- password="${password}">
2145- <fileset dir="${root.dir}">
2146- <include name="${testng.zip}" />
2147- <include name="javadocs/**" />
2148- <include name="testng-1.0.dtd" />
2149- </fileset>
2150- <fileset dir="${root.dir}/doc">
2151- <include name="*.html" />
2152- </fileset>
2153- </ftp>
2154-
2155- </target>
2156-
2157- <target name="ftp2">
2158- <ftp action="put"
2159- server="beust.com"
2160- remotedir="w/testng"
2161- userid="${userid}"
2162- password="${password}">
2163- <fileset dir="${root.dir}/test">
2164- <include name="test-output/*" />
2165- </fileset>
2166- <fileset dir="${root.dir}/test">
2167- <include name="test-report/*" />
2168- </fileset>
2169- </ftp>
2170- </target>
2171-
2172- <target name="clean">
2173- <delete dir="${build.dir}" />
2174- <delete dir="${target}" />
2175- <delete dir="${build.maven-bundle.dir}" />
2176- <delete failonerror="false">
2177- <fileset dir="." includes="testng*.jar,*.zip" />
2178- </delete>
2179- <delete dir="test-output" failonerror="false" />
2180- <delete dir="test-output-tests" failonerror="false" />
2181- <ant antfile="build-tests.xml" target="clean" />
2182- <ant dir="examples" target="clean" />
2183- </target>
2184-
2185- <!-- ==================================================================== -->
2186- <!-- Maven1/2 Distribution -->
2187- <!-- ==================================================================== -->
2188-
2189-<!--
2190- <target name="maven-plugin">
2191- <jar destfile="maven-testng-plugin-${testng-maven.version}.jar"
2192- basedir="./maven/" />
2193- </target>
2194--->
2195-
2196- <!-- ==================================================================== -->
2197- <!-- Ivy -->
2198- <!-- ==================================================================== -->
2199-
2200- <target name="retrieve-dependencies" description="Retrieve dependencies with ivy">
2201- <ivy:retrieve log="quiet" />
2202- </target>
2203-
2204- <target name="publish">
2205- <ivy:resolve />
2206- <mkdir dir="dist/jars" />
2207- <copy file="${testng.jar}" todir="dist/jars" />
2208- <ivy:publish organisation="org.testng" resolver="local" overwrite="true"/>
2209- </target>
2210-
2211- <target name="pom">
2212- <ivy:makepom ivyfile="ivy.xml" pomfile="ivy-pom.xml" />
2213- </target>
2214-
2215- <!-- ==================================================================== -->
2216- <!-- Code coverage -->
2217- <!-- ==================================================================== -->
2218-
2219-<!--
2220- <property name="cobertura.dir" value="../cobertura-1.9.4.1" />
2221-
2222- <path id="cobertura.classpath">
2223- <fileset dir="${cobertura.dir}">
2224- <include name="cobertura.jar" />
2225- <include name="lib/**/*.jar" />
2226- </fileset>
2227- </path>
2228-
2229- <taskdef classpathref="cobertura.classpath" resource="tasks.properties" />
2230-
2231- <target name="coverage:create">
2232- <cobertura-instrument classpath="cobertura-1.9.4.1/lib/*" todir="target/instrumented-classes">
2233- <fileset dir="${build.dir}">
2234- <include name="**/*.class" />
2235- </fileset>
2236- </cobertura-instrument>
2237- </target>
2238-
2239- <target name="coverage">
2240- <cobertura-report srcdir="${src.dir}" destdir="target/coverage-report"/>
2241- </target>
2242--->
2243-
2244-</project>
2245diff --git a/ant/ivy.xml b/ant/ivy.xml
2246deleted file mode 100644
2247index c6a5a97..0000000
2248--- a/ant/ivy.xml
2249+++ /dev/null
2250@@ -1,13 +0,0 @@
2251-<ivy-module version="2.0">
2252- <info organisation="org.testng" module="testng" revision="6.5beta"/>
2253-
2254- <dependencies>
2255- <dependency org="org.apache.ant" name="ant" rev="1.7.0" />
2256- <dependency org="junit" name="junit" rev="4.10" />
2257- <dependency org="org.beanshell" name="bsh" rev="2.0b4" />
2258- <dependency org="com.google.inject" name="guice" rev="2.0" />
2259- <dependency org="org.yaml" name="snakeyaml" rev="1.15" />
2260- <dependency org="com.beust" name="jcommander" rev="1.48" />
2261- </dependencies>
2262-</ivy-module>
2263-
2264diff --git a/ant/old/build-dogfood.xml b/ant/old/build-dogfood.xml
2265deleted file mode 100644
2266index 0e39867..0000000
2267--- a/ant/old/build-dogfood.xml
2268+++ /dev/null
2269@@ -1,30 +0,0 @@
2270-<project name="testng" default="run" basedir=".">
2271- <property name="testng.home" value="${basedir}/../" />
2272- <property name="lib.dir" value="${testng.home}/3rdparty"/>
2273- <property file="../build.properties"/>
2274-
2275- <path id="run.cp">
2276- <pathelement location="../z_build" />
2277- <fileset dir="${lib.dir}">
2278- <include name="junit.jar"/>
2279- <include name="${beanshell.jar}"/>
2280- <include name="${qdox.jar}"/>
2281- </fileset>
2282- <pathelement location="${java.home}/../lib/tools.jar"/>
2283- </path>
2284-
2285- <target name="run" description="Run tests" >
2286- <echo>Defining task from ${basedir}/../${jdk15.testng.jar}</echo>
2287- <taskdef name="testng"
2288- classname="org.testng.TestNGAntTask"
2289- classpath="${basedir}/../${jdk15.testng.jar}" />
2290-
2291- <testng classpathref="run.cp"
2292- dumpcommand="true" verbose="9" outputdir="test-outputs" haltonfailure="true">
2293- <xmlfileset dir="${basedir}">
2294- <include name="testng-single.xml" />
2295- </xmlfileset>
2296- </testng>
2297- </target>
2298-
2299-</project>
2300diff --git a/ant/old/build-sample.xml b/ant/old/build-sample.xml
2301deleted file mode 100644
2302index 3ffea58..0000000
2303--- a/ant/old/build-sample.xml
2304+++ /dev/null
2305@@ -1,30 +0,0 @@
2306-<project name="testng" default="run" basedir=".">
2307-
2308- <property name="testng.home" value="c:/java/testng" />
2309- <property name="lib.dir" value="${testng.home}/lib"/>
2310- <property name="testng.jar" value="${testng.home}/testng-2.5-jdk15.jar" />
2311-
2312- <path id="run.cp">
2313- <!--
2314- <path refid="compile.cp"/>
2315--->
2316- <pathelement location="build" />
2317- <pathelement location="${lib.dir}/qdox-1.5.jar"/>
2318- <pathelement location="${java.home}/../lib/tools.jar"/>
2319- </path>
2320-
2321- <target name="run" description="Run tests" >
2322- <echo>Defining task from ${testng.jar}</echo>
2323- <taskdef name="testng"
2324- classname="org.testng.TestNGAntTask"
2325- classpath="${testng.jar}" />
2326-
2327- <testng classpathref="run.cp"
2328- dumpcommand="true" verbose="9" outputdir="test-outputs">
2329- <classfileset dir="build">
2330- <include name="**/justin/*Test*.class" />
2331- </classfileset>
2332- </testng>
2333- </target>
2334-
2335-</project>
2336diff --git a/appveyor.yml b/appveyor.yml
2337deleted file mode 100644
2338index 3212f2d..0000000
2339--- a/appveyor.yml
2340+++ /dev/null
2341@@ -1,25 +0,0 @@
2342-version: "{branch} {build}"
2343-skip_tags: true
2344-clone_depth: 10
2345-
2346-build:
2347- verbosity: detailed
2348-
2349-build_script:
2350- - gradlew.bat assemble --info --no-daemon
2351-
2352-test_script:
2353- - gradlew.bat test --info --no-daemon
2354-
2355-environment:
2356- matrix:
2357- - JAVA_HOME: C:\Program Files\Java\jdk1.7.0
2358- - JAVA_HOME: C:\Program Files\Java\jdk1.8.0
2359- - JAVA_HOME: C:\Program Files (x86)\Java\jdk1.7.0
2360- - JAVA_HOME: C:\Program Files (x86)\Java\jdk1.8.0
2361-
2362-matrix:
2363- fast_finish: true
2364-
2365-cache:
2366- - C:\Users\appveyor\.gradle
2367\ No newline at end of file
2368diff --git a/build-logic/basics/build.gradle.kts b/build-logic/basics/build.gradle.kts
2369new file mode 100644
2370index 0000000..bc0172f
2371--- /dev/null
2372+++ b/build-logic/basics/build.gradle.kts
2373@@ -0,0 +1,3 @@
2374+plugins {
2375+ `kotlin-dsl`
2376+}
2377diff --git a/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts b/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts
2378new file mode 100644
2379index 0000000..1e4717f
2380--- /dev/null
2381+++ b/build-logic/basics/src/main/kotlin/testng.repositories.gradle.kts
2382@@ -0,0 +1,10 @@
2383+// Can't use settings plugin: https://github.com/gradle/gradle/issues/17295
2384+// dependencyResolutionManagement {
2385+// repositories {
2386+// mavenCentral()
2387+// }
2388+//}
2389+
2390+repositories {
2391+ mavenCentral()
2392+}
2393diff --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
2394new file mode 100644
2395index 0000000..cab1514
2396--- /dev/null
2397+++ b/build-logic/basics/src/main/kotlin/testng.reproducible-builds.gradle.kts
2398@@ -0,0 +1,7 @@
2399+tasks.withType<AbstractArchiveTask>().configureEach {
2400+ // Ensure builds are reproducible
2401+ isPreserveFileTimestamps = false
2402+ isReproducibleFileOrder = true
2403+ dirMode = "775".toInt(8)
2404+ fileMode = "664".toInt(8)
2405+}
2406diff --git a/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts b/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts
2407new file mode 100644
2408index 0000000..09eb6c9
2409--- /dev/null
2410+++ b/build-logic/basics/src/main/kotlin/testng.versioning.gradle.kts
2411@@ -0,0 +1,5 @@
2412+if (project != rootProject) {
2413+ // The root project takes its version from /gradle.properties -> testng.version
2414+ // All the rest projects take the version from the root
2415+ version = rootProject.version
2416+}
2417diff --git a/build-logic/code-quality/build.gradle.kts b/build-logic/code-quality/build.gradle.kts
2418new file mode 100644
2419index 0000000..3955765
2420--- /dev/null
2421+++ b/build-logic/code-quality/build.gradle.kts
2422@@ -0,0 +1,12 @@
2423+plugins {
2424+ `kotlin-dsl`
2425+}
2426+
2427+repositories {
2428+ gradlePluginPortal()
2429+}
2430+
2431+dependencies {
2432+ implementation("org.sonarqube:org.sonarqube.gradle.plugin:2.8")
2433+ implementation("com.github.autostyle:autostyle-plugin-gradle:3.1")
2434+}
2435diff --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
2436new file mode 100644
2437index 0000000..7551b01
2438--- /dev/null
2439+++ b/build-logic/code-quality/src/main/kotlin/testng.sonarqube.gradle.kts
2440@@ -0,0 +1,12 @@
2441+plugins {
2442+ id("org.sonarqube")
2443+}
2444+
2445+sonarqube {
2446+ properties {
2447+ property("sonar.host.url", "https://sonarcloud.io/")
2448+ property("sonar.organization", "testng-team")
2449+ property("sonar.github.repository", "cbeust/testng")
2450+ property("sonar.github.login", "testng-bot")
2451+ }
2452+}
2453diff --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
2454new file mode 100644
2455index 0000000..709e849
2456--- /dev/null
2457+++ b/build-logic/code-quality/src/main/kotlin/testng.style.gradle.kts
2458@@ -0,0 +1,13 @@
2459+plugins {
2460+ id("com.github.autostyle")
2461+}
2462+
2463+autostyle {
2464+ java {
2465+ importOrder()
2466+ removeUnusedImports()
2467+ trimTrailingWhitespace()
2468+ endWithNewline()
2469+ googleJavaFormat()
2470+ }
2471+}
2472diff --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
2473new file mode 100644
2474index 0000000..ff097f5
2475--- /dev/null
2476+++ b/build-logic/code-quality/src/main/kotlin/testng.testing.gradle.kts
2477@@ -0,0 +1,40 @@
2478+import org.gradle.api.tasks.testing.Test
2479+
2480+plugins {
2481+ `java-library`
2482+}
2483+
2484+dependencies {
2485+ testImplementation("org.assertj:assertj-core:_")
2486+}
2487+
2488+tasks.withType<Test>().configureEach {
2489+ useTestNG()
2490+ providers.gradleProperty("testng.test.extra.jvmargs")
2491+ .forUseAtConfigurationTime()
2492+ .orNull?.toString()?.trim()
2493+ ?.takeIf { it.isNotEmpty() }
2494+ ?.let {
2495+ // TODO: support quoted arguments
2496+ jvmArgs(it.split(Regex("\\s+")))
2497+ }
2498+ systemProperty("test.resources.dir", "build/resources/test")
2499+ fun passProperty(name: String, default: String? = null) {
2500+ val value = System.getProperty(name) ?: default
2501+ value?.let { systemProperty(name, it) }
2502+ }
2503+ // Default verbose is 0, however, it can be adjusted vi -Dtestng.default.verbose=2
2504+ passProperty("testng.default.verbose", "0")
2505+ // Allow running tests in a custom locale with -Duser.language=...
2506+ passProperty("user.language")
2507+ passProperty("user.country")
2508+
2509+ @Suppress("unchecked_cast")
2510+ val props = System.getProperties().propertyNames() as `java.util`.Enumeration<String>
2511+ // Pass testng.* properties to the test JVM
2512+ for (e in props) {
2513+ if (e.startsWith("testng.")) {
2514+ passProperty(e)
2515+ }
2516+ }
2517+}
2518diff --git a/build-logic/jvm/build.gradle.kts b/build-logic/jvm/build.gradle.kts
2519new file mode 100644
2520index 0000000..5323a4e
2521--- /dev/null
2522+++ b/build-logic/jvm/build.gradle.kts
2523@@ -0,0 +1,14 @@
2524+plugins {
2525+ `kotlin-dsl`
2526+}
2527+
2528+repositories {
2529+ gradlePluginPortal()
2530+}
2531+
2532+dependencies {
2533+ implementation(project(":basics"))
2534+ implementation(project(":code-quality"))
2535+ implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.74")
2536+ implementation("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.5.10")
2537+}
2538diff --git a/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt b/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt
2539new file mode 100644
2540index 0000000..2b3df5b
2541--- /dev/null
2542+++ b/build-logic/jvm/src/main/kotlin/buildlogic/CopySpecExtensions.kt
2543@@ -0,0 +1,16 @@
2544+package buildlogic
2545+
2546+import org.apache.tools.ant.filters.FixCrLfFilter
2547+import org.gradle.api.file.CopySpec
2548+import org.gradle.kotlin.dsl.filter
2549+
2550+fun CopySpec.filterEolSimple(eol: String) {
2551+ filteringCharset = "UTF-8"
2552+ filter(
2553+ FixCrLfFilter::class, mapOf(
2554+ "eol" to FixCrLfFilter.CrLf.newInstance(eol),
2555+ "fixlast" to true,
2556+ "ctrlz" to FixCrLfFilter.AddAsisRemove.newInstance("asis")
2557+ )
2558+ )
2559+}
2560diff --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
2561new file mode 100644
2562index 0000000..8ccc1a1
2563--- /dev/null
2564+++ b/build-logic/jvm/src/main/kotlin/testng.java-library.gradle.kts
2565@@ -0,0 +1,64 @@
2566+import buildlogic.filterEolSimple
2567+
2568+plugins {
2569+ `java-library`
2570+ id("testng.java")
2571+ id("testng.testing")
2572+}
2573+
2574+tasks.withType<Javadoc>().configureEach {
2575+ excludes.add("org/testng/internal/**")
2576+}
2577+
2578+tasks.withType<JavaCompile>().configureEach {
2579+ inputs.property("java.version", System.getProperty("java.version"))
2580+ inputs.property("java.vm.version", System.getProperty("java.vm.version"))
2581+ options.apply {
2582+ encoding = "UTF-8"
2583+ compilerArgs.add("-Xlint:deprecation")
2584+ compilerArgs.add("-Werror")
2585+ }
2586+}
2587+
2588+tasks.withType<Jar>().configureEach {
2589+ into("META-INF") {
2590+ filterEolSimple("crlf")
2591+ from("$rootDir/LICENSE.txt")
2592+ from("$rootDir/NOTICE")
2593+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
2594+ }
2595+ manifest {
2596+ // providers.gradleProperty does not work
2597+ // see https://github.com/gradle/gradle/issues/14972
2598+ val name = rootProject.findProperty("project.name")
2599+ val vendor = rootProject.findProperty("project.vendor.name")
2600+ attributes(mapOf(
2601+ "Specification-Title" to name,
2602+ "Specification-Version" to project.version,
2603+ "Specification-Vendor" to vendor,
2604+ "Implementation-Title" to name,
2605+ "Implementation-Version" to project.version,
2606+ "Implementation-Vendor" to vendor,
2607+ "Implementation-Vendor-Id" to rootProject.findProperty("project.vendor.id"),
2608+ "Implementation-Url" to rootProject.findProperty("project.url"),
2609+ ))
2610+ }
2611+}
2612+
2613+@Suppress("unused")
2614+val transitiveSourcesElements by configurations.creating {
2615+ description = "Share sources folder with other projects for aggregation (e.g. sources, javadocs, etc)"
2616+ isVisible = false
2617+ isCanBeResolved = false
2618+ isCanBeConsumed = true
2619+ extendsFrom(configurations.implementation.get())
2620+ attributes {
2621+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
2622+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
2623+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("source-folders"))
2624+ }
2625+ // afterEvaluate is to allow creation of the new source sets
2626+ afterEvaluate {
2627+ sourceSets.main.get().java.srcDirs.forEach { outgoing.artifact(it) }
2628+ }
2629+}
2630diff --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
2631new file mode 100644
2632index 0000000..7b0fb95
2633--- /dev/null
2634+++ b/build-logic/jvm/src/main/kotlin/testng.java-platform.gradle.kts
2635@@ -0,0 +1,4 @@
2636+plugins {
2637+ id("testng.java")
2638+ `java-platform`
2639+}
2640diff --git a/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts b/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts
2641new file mode 100644
2642index 0000000..85e0d6d
2643--- /dev/null
2644+++ b/build-logic/jvm/src/main/kotlin/testng.java.gradle.kts
2645@@ -0,0 +1,28 @@
2646+plugins {
2647+ `java-base`
2648+ id("testng.versioning")
2649+ id("testng.style")
2650+ id("testng.repositories")
2651+ // Improves Gradle Test logging
2652+ // See https://github.com/vlsi/vlsi-release-plugins/tree/master/plugins/gradle-extensions-plugin
2653+ id("com.github.vlsi.gradle-extensions")
2654+}
2655+
2656+java {
2657+ sourceCompatibility = JavaVersion.VERSION_1_8
2658+ targetCompatibility = JavaVersion.VERSION_1_8
2659+}
2660+
2661+tasks.withType<JavaCompile>().configureEach {
2662+ inputs.property("java.version", System.getProperty("java.version"))
2663+ inputs.property("java.vendor", System.getProperty("java.vendor"))
2664+ inputs.property("java.vm.version", System.getProperty("java.vm.version"))
2665+ inputs.property("java.vm.vendor", System.getProperty("java.vm.vendor"))
2666+}
2667+
2668+tasks.withType<Test>().configureEach {
2669+ inputs.property("java.version", System.getProperty("java.version"))
2670+ inputs.property("java.vendor", System.getProperty("java.vendor"))
2671+ inputs.property("java.vm.version", System.getProperty("java.vm.version"))
2672+ inputs.property("java.vm.vendor", System.getProperty("java.vm.vendor"))
2673+}
2674diff --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
2675new file mode 100644
2676index 0000000..e4ad87d
2677--- /dev/null
2678+++ b/build-logic/jvm/src/main/kotlin/testng.kotlin-library.gradle.kts
2679@@ -0,0 +1,17 @@
2680+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2681+
2682+plugins {
2683+ id("testng.java-library")
2684+ kotlin("jvm")
2685+}
2686+
2687+dependencies {
2688+ testImplementation(platform("org.jetbrains.kotlin:kotlin-bom:1.5.10"))
2689+ testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
2690+}
2691+
2692+tasks.withType<KotlinCompile>().configureEach {
2693+ kotlinOptions {
2694+ jvmTarget = "1.8"
2695+ }
2696+}
2697diff --git a/build-logic/publishing/build.gradle.kts b/build-logic/publishing/build.gradle.kts
2698new file mode 100644
2699index 0000000..5bc085b
2700--- /dev/null
2701+++ b/build-logic/publishing/build.gradle.kts
2702@@ -0,0 +1,14 @@
2703+plugins {
2704+ `kotlin-dsl`
2705+}
2706+
2707+repositories {
2708+ gradlePluginPortal()
2709+}
2710+
2711+dependencies {
2712+ implementation(project(":jvm"))
2713+ implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.74")
2714+ implementation("com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:7.0.0")
2715+ implementation("org.jetbrains.kotlin:kotlin-gradle-plugin")
2716+}
2717diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt
2718new file mode 100644
2719index 0000000..e677b36
2720--- /dev/null
2721+++ b/build-logic/publishing/src/main/kotlin/buildlogic/ConfigurationExtensions.kt
2722@@ -0,0 +1,19 @@
2723+package buildlogic
2724+
2725+import org.gradle.api.artifacts.Configuration
2726+import org.gradle.api.attributes.Category
2727+import org.gradle.api.attributes.Usage
2728+import org.gradle.api.model.ObjectFactory
2729+import org.gradle.kotlin.dsl.named
2730+
2731+fun Configuration.javaLibrary(objects: ObjectFactory, usage: String) =
2732+ attributes {
2733+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
2734+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(usage))
2735+ }
2736+
2737+fun Configuration.javaLibraryApi(objects: ObjectFactory) =
2738+ javaLibrary(objects, Usage.JAVA_API)
2739+
2740+fun Configuration.javaLibraryRuntime(objects: ObjectFactory) =
2741+ javaLibrary(objects, Usage.JAVA_RUNTIME)
2742diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt
2743new file mode 100644
2744index 0000000..2b3df5b
2745--- /dev/null
2746+++ b/build-logic/publishing/src/main/kotlin/buildlogic/CopySpecExtensions.kt
2747@@ -0,0 +1,16 @@
2748+package buildlogic
2749+
2750+import org.apache.tools.ant.filters.FixCrLfFilter
2751+import org.gradle.api.file.CopySpec
2752+import org.gradle.kotlin.dsl.filter
2753+
2754+fun CopySpec.filterEolSimple(eol: String) {
2755+ filteringCharset = "UTF-8"
2756+ filter(
2757+ FixCrLfFilter::class, mapOf(
2758+ "eol" to FixCrLfFilter.CrLf.newInstance(eol),
2759+ "fixlast" to true,
2760+ "ctrlz" to FixCrLfFilter.AddAsisRemove.newInstance("asis")
2761+ )
2762+ )
2763+}
2764diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt b/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt
2765new file mode 100644
2766index 0000000..3b4100d
2767--- /dev/null
2768+++ b/build-logic/publishing/src/main/kotlin/buildlogic/DependencyHandlerExtensions.kt
2769@@ -0,0 +1,34 @@
2770+package buildlogic
2771+
2772+import org.gradle.api.artifacts.Dependency
2773+import org.gradle.api.artifacts.component.ModuleComponentIdentifier
2774+import org.gradle.api.artifacts.component.ProjectComponentIdentifier
2775+import org.gradle.api.artifacts.dsl.DependencyHandler
2776+import org.gradle.api.artifacts.result.ResolvedVariantResult
2777+import org.gradle.api.attributes.Category
2778+import org.gradle.kotlin.dsl.create
2779+import org.gradle.kotlin.dsl.project
2780+
2781+/**
2782+ * Converts the resolved result back to a dependency notation, so it can be resolved again.
2783+ * Note: the conversion does not support "classifiers"
2784+ */
2785+fun DependencyHandler.reconstruct(variant: ResolvedVariantResult): Dependency {
2786+ val category = variant.attributes.run {
2787+ keySet().firstOrNull { it.name == Category.CATEGORY_ATTRIBUTE.name }?.let { getAttribute(it) }
2788+ }
2789+
2790+ val id = variant.owner
2791+ return when (id) {
2792+ is ProjectComponentIdentifier -> project(id.projectPath)
2793+ is ModuleComponentIdentifier -> create(id.group, id.module, id.version)
2794+ else -> throw IllegalArgumentException("Can't convert $id to dependency")
2795+ }.let {
2796+ when (category) {
2797+ Category.REGULAR_PLATFORM -> platform(it)
2798+ Category.ENFORCED_PLATFORM -> enforcedPlatform(it)
2799+ Category.LIBRARY -> it
2800+ else -> throw IllegalStateException("Unexpected dependency type $category for id $id")
2801+ }
2802+ }
2803+}
2804diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt b/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt
2805new file mode 100644
2806index 0000000..af43dfa
2807--- /dev/null
2808+++ b/build-logic/publishing/src/main/kotlin/buildlogic/FirstLayerDependencies.kt
2809@@ -0,0 +1,89 @@
2810+package buildlogic
2811+
2812+import org.gradle.api.Project
2813+import org.gradle.api.artifacts.Configuration
2814+import org.gradle.api.artifacts.result.ResolvedComponentResult
2815+import org.gradle.api.artifacts.result.ResolvedDependencyResult
2816+import org.gradle.api.artifacts.result.ResolvedVariantResult
2817+import org.gradle.api.artifacts.result.UnresolvedDependencyResult
2818+import org.gradle.api.plugins.ExtensionAware
2819+import org.gradle.api.plugins.JavaPluginExtension
2820+import org.gradle.kotlin.dsl.the
2821+
2822+/**
2823+ * Walks over the dependency tree and selects the first non-shaded dependencies.
2824+ */
2825+fun ResolvedComponentResult.filterFirstLayerDependenciesTo(
2826+ set: MutableSet<ResolvedVariantResult>,
2827+ isShaded: (ResolvedVariantResult) -> Boolean
2828+): MutableSet<ResolvedVariantResult> {
2829+ for (dependency in dependencies) {
2830+ when (dependency) {
2831+ is UnresolvedDependencyResult -> throw IllegalStateException(
2832+ "Unresolved dependency $dependency: ${dependency.failure}",
2833+ dependency.failure
2834+ )
2835+ is ResolvedDependencyResult -> {
2836+ val resolvedVariant = dependency.resolvedVariant
2837+ if (resolvedVariant in set) {
2838+ continue
2839+ }
2840+ if (isShaded(resolvedVariant)) {
2841+ dependency.selected.filterFirstLayerDependenciesTo(set, isShaded)
2842+ continue
2843+ }
2844+ // Ok, we detected the first non-shaded dependency, so we do not need to dig its dependencies
2845+ set += resolvedVariant
2846+ }
2847+ }
2848+ }
2849+ return set
2850+}
2851+
2852+fun ResolvedComponentResult.filterFirstLayerDependencies(isShaded: (ResolvedVariantResult) -> Boolean) =
2853+ filterFirstLayerDependenciesTo(mutableSetOf(), isShaded)
2854+
2855+/**
2856+ * Prepares a configuration that selects the first non-shaded dependencies:
2857+ * 1. It resolves "AllDependencies" configuration
2858+ * 2. Then the function walks over the dependency tree and finds the first non-shaded dependencies
2859+ * 3. Then it converts the resolution results to dependency notation
2860+ * 4. The collected dependencies are added to "FirstNonMergedDependencies" configuration.
2861+ * Note: the trigger for all this computation is withDependencies, so the resolution performed only when it is required.
2862+ */
2863+fun Project.firstLayerDependencies(
2864+ usage: String,
2865+ conf: Configuration,
2866+ vararg rest: Configuration,
2867+): Configuration {
2868+ val optionalFeatures = (the<JavaPluginExtension>() as ExtensionAware).the<OptionalFeaturesExtension>()
2869+ val usageKind = usage.removePrefix("java-").capitalize()
2870+
2871+ val allDependencies = configurations.create(conf.name + "${usageKind}AllDependencies") {
2872+ description = "Resolves the list of all dependencies for $usage in ${conf.name}"
2873+ isCanBeConsumed = false
2874+ isCanBeResolved = true
2875+ isVisible = false
2876+ extendsFrom(conf)
2877+ extendsFrom(*rest)
2878+ javaLibrary(objects, usage)
2879+ }
2880+
2881+ return configurations.create(conf.name + "${usageKind}FirstNonMergedDependencies") {
2882+ description = "Resolves the list of external dependencies for $usage in ${conf.name}"
2883+ isCanBeConsumed = false
2884+ isCanBeResolved = true
2885+ isTransitive = false
2886+ isVisible = false
2887+ javaLibrary(objects, usage)
2888+ withDependencies {
2889+ // Clear any user-added-by-mistake dependencies
2890+ clear()
2891+ addAll(
2892+ allDependencies.incoming.resolutionResult.root
2893+ .filterFirstLayerDependencies(optionalFeatures.shadedDependenciesFilter.get())
2894+ .map { project.dependencies.reconstruct(it) }
2895+ )
2896+ }
2897+ }
2898+}
2899diff --git a/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt b/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt
2900new file mode 100644
2901index 0000000..05bbf2a
2902--- /dev/null
2903+++ b/build-logic/publishing/src/main/kotlin/buildlogic/OptionalFeaturesExtension.kt
2904@@ -0,0 +1,100 @@
2905+package buildlogic
2906+
2907+import org.gradle.api.Project
2908+import org.gradle.api.artifacts.Configuration
2909+import org.gradle.api.artifacts.component.ProjectComponentIdentifier
2910+import org.gradle.api.artifacts.dsl.DependencyHandler
2911+import org.gradle.api.artifacts.result.ResolvedVariantResult
2912+import org.gradle.api.attributes.Usage
2913+import org.gradle.api.plugins.JavaPluginExtension
2914+import org.gradle.api.provider.Property
2915+import org.gradle.api.tasks.SourceSetContainer
2916+import org.gradle.kotlin.dsl.get
2917+import org.gradle.kotlin.dsl.invoke
2918+import org.gradle.kotlin.dsl.provideDelegate
2919+import org.gradle.kotlin.dsl.the
2920+
2921+/**
2922+ * DSL for declaring optional features. The dependencies are stored to plugin-local "declared-*" configurations
2923+ */
2924+class OptionalFeatureBuilder(
2925+ private val dependencyHandler: DependencyHandler,
2926+ private val declaredApi: Configuration,
2927+ private val declaredImplementation: Configuration
2928+) {
2929+ fun platform(dependencyNotation: Any) =
2930+ dependencyHandler.platform(dependencyNotation)
2931+
2932+ fun api(dependencyNotation: Any) {
2933+ dependencyHandler.add(declaredApi.name, dependencyNotation)
2934+ }
2935+
2936+ fun implementation(dependencyNotation: Any) {
2937+ dependencyHandler.add(declaredImplementation.name, dependencyNotation)
2938+ }
2939+}
2940+
2941+abstract class OptionalFeaturesExtension(private val project: Project) {
2942+ // It allows to explicitly list which modules should be merged and which will be left alone as dependencies
2943+ abstract val shadedDependenciesFilter: Property<(ResolvedVariantResult) -> Boolean>
2944+
2945+ init {
2946+ // By default, shade all modules from the current build
2947+ shadedDependenciesFilter.convention {
2948+ it.owner.let { id -> id is ProjectComponentIdentifier && id.build.isCurrentBuild }
2949+ }
2950+ }
2951+
2952+ fun create(name: String, builder: OptionalFeatureBuilder.() -> Unit) {
2953+ project.the<JavaPluginExtension>().registerFeature(name) {
2954+ val sourceSets: SourceSetContainer by project
2955+ usingSourceSet(sourceSets["main"])
2956+ }
2957+
2958+ val declaredApi = project.configurations.create("${name}DeclaredApi") {
2959+ description = "Api dependencies for feature $name"
2960+ isCanBeResolved = false
2961+ isCanBeConsumed = false
2962+ }
2963+ val declaredImplementation = project.configurations.create("${name}DeclaredImplementation") {
2964+ description = "Implementation dependencies for feature $name"
2965+ isCanBeResolved = false
2966+ isCanBeConsumed = false
2967+ }
2968+ val declaredRuntime = project.configurations.create("${name}DeclaredRuntime") {
2969+ description = "Runtime dependencies for feature $name"
2970+ isCanBeResolved = false
2971+ isCanBeConsumed = false
2972+ extendsFrom(declaredApi, declaredImplementation)
2973+ }
2974+
2975+ OptionalFeatureBuilder(
2976+ project.dependencies,
2977+ declaredApi,
2978+ declaredImplementation
2979+ ).builder()
2980+
2981+ // This is to include all testng modules (even optional) to -all.jar
2982+ project.configurations["shadedDependencyFullRuntimeClasspath"]
2983+ .extendsFrom(declaredRuntime)
2984+
2985+ // By default Gradle adds the jar as artifact, however, we won't need it
2986+ // We'll put merged jar later as a main artifact
2987+ project.configurations {
2988+ get("${name}ApiElements").apply {
2989+ // This effectively adds "optional" pom dependencies for scope=compile
2990+ extendsFrom(project.firstLayerDependencies(Usage.JAVA_API, declaredApi))
2991+ artifacts.clear()
2992+ // The feature do not provide their own classes or resources
2993+ // All the feature resources would come from the dependencies
2994+ outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
2995+ }
2996+ get("${name}RuntimeElements").apply {
2997+ // This effectively adds "optional" pom dependencies for scope=runtime
2998+ extendsFrom(project.firstLayerDependencies(Usage.JAVA_RUNTIME, declaredRuntime))
2999+ artifacts.clear()
3000+ outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
3001+ }
3002+ }
3003+ }
3004+}
3005diff --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
3006new file mode 100644
3007index 0000000..cef8f94
3008--- /dev/null
3009+++ b/build-logic/publishing/src/main/kotlin/testng.local-maven-repo.gradle.kts
3010@@ -0,0 +1,40 @@
3011+plugins {
3012+ `maven-publish`
3013+}
3014+
3015+val localRepoElements by configurations.creating {
3016+ isCanBeConsumed = true
3017+ isCanBeResolved = false
3018+ description =
3019+ "Shares local maven repository directory that contains the artifacts produced by the current project"
3020+ attributes {
3021+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named("maven-repository"))
3022+ attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
3023+ }
3024+}
3025+
3026+val localRepoDir = layout.buildDirectory.dir("local-maven-repo")
3027+
3028+publishing {
3029+ repositories {
3030+ maven {
3031+ name = "local"
3032+ url = uri(localRepoDir)
3033+ }
3034+ }
3035+}
3036+
3037+localRepoElements.outgoing.artifact(localRepoDir) {
3038+ builtBy(tasks.named("publishAllPublicationsToLocalRepository"))
3039+}
3040+
3041+val cleanLocalRepository by tasks.registering(Delete::class) {
3042+ description = "Clears local-maven-repo so timestamp-based snapshot artifacts do not consume space"
3043+ delete(localRepoDir)
3044+}
3045+
3046+tasks.withType<PublishToMavenRepository>()
3047+ .matching { it.name.contains("ToLocalRepository") }
3048+ .configureEach {
3049+ dependsOn(cleanLocalRepository)
3050+ }
3051diff --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
3052new file mode 100644
3053index 0000000..5216f3f
3054--- /dev/null
3055+++ b/build-logic/publishing/src/main/kotlin/testng.maven-publish.gradle.kts
3056@@ -0,0 +1,51 @@
3057+plugins {
3058+ `maven-publish`
3059+ id("testng.local-maven-repo")
3060+}
3061+
3062+// It takes value from root project always: https://github.com/gradle/gradle/issues/13302
3063+val scmUrl = providers.gradleProperty("scm.url")
3064+
3065+publishing {
3066+ publications {
3067+ withType<MavenPublication>().configureEach {
3068+ pom {
3069+ name.set(artifactId)
3070+ description.set(providers.provider { project.description })
3071+ // It takes value from root project always: https://github.com/gradle/gradle/issues/13302
3072+ url.set(providers.gradleProperty("project.url"))
3073+ licenses {
3074+ license {
3075+ name.set("Apache License, Version 2.0")
3076+ url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
3077+ }
3078+ }
3079+ issueManagement {
3080+ system.set("Github")
3081+ url.set(scmUrl.map { "${it.removeSuffix(".git")}/issues" })
3082+ }
3083+ developers {
3084+ developer {
3085+ id.set("cbeust")
3086+ name.set("Cedric Beust")
3087+ email.set("cedric@beust.com")
3088+ }
3089+ developer {
3090+ id.set("juherr")
3091+ name.set("Julien Herr")
3092+ email.set("julien@herr.fr")
3093+ }
3094+ developer {
3095+ id.set("krmahadevan")
3096+ name.set("Krishnan Mahadevan")
3097+ email.set("krishnan.mahadevan1978@gmail.com")
3098+ }
3099+ }
3100+ scm {
3101+ connection.set(scmUrl.map { "scm:git:$it" })
3102+ url.set(scmUrl)
3103+ }
3104+ }
3105+ }
3106+ }
3107+}
3108diff --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
3109new file mode 100644
3110index 0000000..5fc3282
3111--- /dev/null
3112+++ b/build-logic/publishing/src/main/kotlin/testng.merge-feature-jars.gradle.kts
3113@@ -0,0 +1,160 @@
3114+import buildlogic.OptionalFeaturesExtension
3115+import buildlogic.firstLayerDependencies
3116+import buildlogic.javaLibrary
3117+import buildlogic.reconstruct
3118+import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
3119+
3120+plugins {
3121+ `java-base`
3122+ `reporting-base`
3123+ id("testng.published-java-library")
3124+}
3125+
3126+val optionalFeatures = (the<JavaPluginExtension>() as ExtensionAware).extensions
3127+ .create<OptionalFeaturesExtension>("optionalFeatures", project)
3128+
3129+inline fun <reified T : Named> AttributeContainer.attribute(attr: Attribute<T>, value: String) =
3130+ attribute(attr, objects.named(value))
3131+
3132+val shadedDependencyElements by configurations.creating {
3133+ description = "Declares which modules to aggregate into ...-all.jar"
3134+ isCanBeConsumed = false
3135+ isCanBeResolved = false
3136+}
3137+
3138+fun Configuration.javaLibraryRuntime() = javaLibrary(objects, Usage.JAVA_RUNTIME)
3139+
3140+configurations["api"].extendsFrom(
3141+ firstLayerDependencies(
3142+ Usage.JAVA_API,
3143+ shadedDependencyElements
3144+ )
3145+)
3146+
3147+configurations["implementation"].extendsFrom(
3148+ firstLayerDependencies(
3149+ Usage.JAVA_RUNTIME,
3150+ shadedDependencyElements
3151+ )
3152+)
3153+
3154+val shadedDependencyFullRuntimeClasspath by configurations.creating {
3155+ description = "Resolves the list of shadedDependencyElements to testng and external dependencies"
3156+ isCanBeConsumed = false
3157+ isCanBeResolved = true
3158+ isVisible = false
3159+ extendsFrom(shadedDependencyElements)
3160+ javaLibraryRuntime()
3161+}
3162+
3163+val mergedJars by configurations.creating {
3164+ description = "Resolves the list of testng modules to include into -all jar"
3165+ isCanBeConsumed = false
3166+ isCanBeResolved = true
3167+ isTransitive = false
3168+ javaLibraryRuntime()
3169+ withDependencies {
3170+ // Clear any user-added-by-mistake dependencies
3171+ clear()
3172+ // Identifies TestNG projects in shadedDependencyFullRuntimeClasspath dependency tree
3173+ addAll(
3174+ shadedDependencyFullRuntimeClasspath.incoming.resolutionResult.allDependencies
3175+ .asSequence()
3176+ .filter { !it.isConstraint }
3177+ .filterIsInstance<ResolvedDependencyResult>()
3178+ .mapNotNull { resolved ->
3179+ resolved.resolvedVariant
3180+ .takeIf { optionalFeatures.shadedDependenciesFilter.get()(it) }
3181+ ?.let { project.dependencies.reconstruct(it) }
3182+ }
3183+ )
3184+ }
3185+}
3186+
3187+val shadedDependencyJavadocClasspath by configurations.creating {
3188+ description = "Resolves a runtime classpath of the aggregated -all dependenices"
3189+ isCanBeConsumed = false
3190+ isCanBeResolved = true
3191+ isVisible = false
3192+ extendsFrom(mergedJars)
3193+ extendsFrom(configurations["compileClasspath"])
3194+ extendsFrom(shadedDependencyFullRuntimeClasspath)
3195+ javaLibraryRuntime()
3196+ attributes {
3197+ attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, LibraryElements.JAR)
3198+ attribute(Bundling.BUNDLING_ATTRIBUTE, Bundling.EXTERNAL)
3199+ }
3200+}
3201+
3202+val mergedJar by tasks.registering(ShadowJar::class) {
3203+ group = LifecycleBasePlugin.BUILD_GROUP
3204+ description = "Builds all-project jar (third-party dependencies are left as is)"
3205+ configurations = listOf(mergedJars)
3206+ // Individual jars have their own license, and ShadowJar overrides "duplicateStrategy" option
3207+ // So we exclude LICENSE.txt from the merged jars, and let testng.java.gradle.kts to add the default one
3208+ exclude("META-INF/LICENSE.txt")
3209+ archiveClassifier.set("all")
3210+}
3211+
3212+dependencies {
3213+ "implementation"(files(mergedJar))
3214+}
3215+
3216+val sourcesToMerge by configurations.creating {
3217+ description = "Resolves the list of source directories to include into sources-all jar"
3218+ isCanBeConsumed = false
3219+ isCanBeResolved = true
3220+ isTransitive = false // jarsToMerge is a full set of modules, so no need to have transitivity here
3221+ extendsFrom(mergedJars)
3222+ attributes {
3223+ attribute(Usage.USAGE_ATTRIBUTE, Usage.JAVA_RUNTIME)
3224+ attribute(Category.CATEGORY_ATTRIBUTE, Category.DOCUMENTATION)
3225+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, "source-folders")
3226+ }
3227+}
3228+
3229+val mergedSourcesJar by tasks.registering(Jar::class) {
3230+ from(sourcesToMerge.incoming.artifactView { lenient(true) }.files)
3231+ archiveClassifier.set("sources-all")
3232+}
3233+
3234+val mergedJavadoc by tasks.registering(Javadoc::class) {
3235+ description = "Generates an aggregate javadoc"
3236+ group = LifecycleBasePlugin.BUILD_GROUP
3237+ setSource(sourcesToMerge.incoming.artifactView { lenient(true) }.files)
3238+ include("**/*.java")
3239+ setDestinationDir(reporting.file("mergedJavadoc"))
3240+ classpath = shadedDependencyJavadocClasspath
3241+}
3242+
3243+val mergedJavadocJar by tasks.registering(Jar::class) {
3244+ description = "Generates an aggregate javadoc jar"
3245+ group = LifecycleBasePlugin.BUILD_GROUP
3246+ from(mergedJavadoc)
3247+ archiveClassifier.set("javadoc-all")
3248+}
3249+
3250+// Configure merged artifacts for publication
3251+configurations.named("sourcesElements") {
3252+ artifacts.clear()
3253+ outgoing.artifact(mergedSourcesJar) {
3254+ classifier = "sources"
3255+ }
3256+}
3257+
3258+configurations.named("javadocElements") {
3259+ artifacts.clear()
3260+ outgoing.artifact(mergedJavadocJar) {
3261+ classifier = "javadoc"
3262+ }
3263+}
3264+
3265+for (name in listOf("apiElements", "runtimeElements")) {
3266+ configurations.named(name) {
3267+ artifacts.clear()
3268+ outgoing.artifact(mergedJar) {
3269+ classifier = null
3270+ }
3271+ outgoing.variants.removeIf { it.name == "classes" || it.name == "resources" }
3272+ }
3273+}
3274diff --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
3275new file mode 100644
3276index 0000000..21ff5b8
3277--- /dev/null
3278+++ b/build-logic/publishing/src/main/kotlin/testng.published-java-library.gradle.kts
3279@@ -0,0 +1,41 @@
3280+import com.github.vlsi.gradle.publishing.dsl.simplifyXml
3281+import com.github.vlsi.gradle.publishing.dsl.versionFromResolution
3282+
3283+plugins {
3284+ id("testng.reproducible-builds")
3285+ id("testng.java-library")
3286+ id("testng.maven-publish")
3287+}
3288+
3289+java {
3290+ withJavadocJar()
3291+ withSourcesJar()
3292+}
3293+
3294+dependencies {
3295+ // If the user adds core and api with different versions,
3296+ // then Gradle would select **both** core and api with the same version
3297+ // Note: un-comment when testng-bom is published
3298+ // implementation(platform(project(":testng-bom")))
3299+ // For some reason this can't be in code-quality/testng.testing :(
3300+ testImplementation(project(":testng-test-kit"))
3301+}
3302+
3303+publishing {
3304+ publications {
3305+ create<MavenPublication>("maven") {
3306+ from(components["java"])
3307+ // Gradle feature variants can't be mapped to Maven's pom
3308+ suppressAllPomMetadataWarnings()
3309+
3310+ // Use the resolved versions in pom.xml
3311+ // Gradle might have different resolution rules, so we set the versions
3312+ // that were used in Gradle build/test.
3313+ versionFromResolution()
3314+
3315+ pom {
3316+ simplifyXml()
3317+ }
3318+ }
3319+ }
3320+}
3321diff --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
3322new file mode 100644
3323index 0000000..d78cdb1
3324--- /dev/null
3325+++ b/build-logic/publishing/src/main/kotlin/testng.published-java-platform.gradle.kts
3326@@ -0,0 +1,13 @@
3327+plugins {
3328+ id("testng.reproducible-builds")
3329+ id("testng.java-platform")
3330+ id("testng.maven-publish")
3331+}
3332+
3333+publishing {
3334+ publications {
3335+ create<MavenPublication>("maven") {
3336+ from(components["javaPlatform"])
3337+ }
3338+ }
3339+}
3340diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts
3341new file mode 100644
3342index 0000000..ee7e4ab
3343--- /dev/null
3344+++ b/build-logic/settings.gradle.kts
3345@@ -0,0 +1,12 @@
3346+dependencyResolutionManagement {
3347+ repositories {
3348+ gradlePluginPortal()
3349+ }
3350+}
3351+
3352+rootProject.name = "build-logic"
3353+
3354+include(":basics")
3355+include(":code-quality")
3356+include(":jvm")
3357+include(":publishing")
3358diff --git a/build-with-gradle b/build-with-gradle
3359deleted file mode 100755
3360index 44e73f2..0000000
3361--- a/build-with-gradle
3362+++ /dev/null
3363@@ -1 +0,0 @@
3364-./gradlew --daemon --stacktrace clean build test
3365diff --git a/build-with-maven b/build-with-maven
3366deleted file mode 100755
3367index a6c135a..0000000
3368--- a/build-with-maven
3369+++ /dev/null
3370@@ -1,25 +0,0 @@
3371-# Two different POMs are needed to build TestNG with Maven because it's not
3372-# allowed to have circular dependencies.
3373-# - pom.xml defines the project version "n-SNAPSHOT", builds, jars and deploys (but doesn't
3374-# run the tests).
3375-# - pom-test.xml declares a test dependency on "n-SNAPSHOT", which it will find
3376-# in the local repository (~/.m2/repository). All it does then is run the tests.
3377-
3378-
3379-mvn clean install -Dgpg.skip=true
3380-#or if you want to sign the jar, uncomment this:
3381-#mvn clean install
3382-
3383-mvn -f pom-test.xml test
3384-
3385-
3386-echo
3387-echo "To run the tests: mvn -f pom-test.xml test"
3388-echo "To deploy to the snapshot repository: mvn deploy"
3389-echo "To deploy to the release directory: mvn release:clean release:prepare release:perform"
3390-echo "Nexus UI: https://oss.sonatype.org/index.html"
3391-echo "Wiki: https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide"
3392-
3393-# deploy without tagging: mvn deploy -DperformRelease
3394-
3395-
3396diff --git a/build.gradle b/build.gradle
3397deleted file mode 100644
3398index 76fe5da..0000000
3399--- a/build.gradle
3400+++ /dev/null
3401@@ -1,181 +0,0 @@
3402-buildscript {
3403-
3404- def a_user = hasProperty('artifactory_user') ? artifactory_user : System.getenv('artifactory_user')
3405- def a_password = hasProperty('artifactory_password') ? artifactory_password : System.getenv('artifactory_password')
3406-
3407- repositories {
3408- mavenCentral()
3409- jcenter()
3410- maven {
3411- url 'http://dl.bintray.com/cbeust/maven'
3412- }
3413- maven {
3414- url 'http://oss.jfrog.org/artifactory/plugins-release'
3415- credentials {
3416- username = "${a_user}"
3417- password = "${a_password}"
3418- }
3419- }
3420- }
3421-
3422- dependencies {
3423- classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.3"
3424- }
3425-}
3426-
3427-plugins {
3428- id "com.jfrog.bintray" version "1.6"
3429- id "com.jfrog.artifactory" version "4.3.0"
3430- id "org.sonarqube" version "2.0.1"
3431- id "nebula.optional-base" version "3.0.3"
3432- id "nebula.provided-base" version "3.0.3"
3433-}
3434-
3435-task wrapper(type: Wrapper) {
3436- gradleVersion = '2.13'
3437-}
3438-
3439-group = 'org.testng'
3440-version = '6.9.12-SNAPSHOT'
3441-
3442-apply plugin: 'java'
3443-apply plugin: 'groovy'
3444-apply plugin: 'jacoco'
3445-apply plugin: 'osgi'
3446-
3447-targetCompatibility = "1.7"
3448-sourceCompatibility = "1.7"
3449-
3450-repositories {
3451- mavenCentral()
3452- jcenter()
3453- maven {
3454- url 'http://dl.bintray.com/cbeust/maven'
3455- }
3456-}
3457-
3458-dependencies {
3459- compile 'org.beanshell:bsh:2.0b4'
3460- compile 'com.beust:jcommander:1.48'
3461-
3462- compile 'org.apache.ant:ant:1.7.0'
3463- compile 'junit:junit:4.12', optional
3464- compile 'org.yaml:snakeyaml:1.15', optional
3465-
3466- provided 'com.google.inject:guice:4.0:no_aop'
3467-
3468- testCompile 'org.assertj:assertj-core:2.0.0'
3469- testCompile 'org.testng:testng:6.9.4'
3470- testCompile 'org.codehaus.groovy:groovy-all:2.4.7'
3471- testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
3472-}
3473-
3474-task sourceJar(type: Jar) {
3475- group 'Build'
3476- description 'An archive of the source code'
3477- classifier 'sources'
3478- from sourceSets.main.allSource
3479-}
3480-
3481-artifacts {
3482- sourceJar
3483-}
3484-
3485-import org.apache.tools.ant.filters.ReplaceTokens
3486-
3487-def generatedSourcesFolder = projectDir.toString() + '/src/generated/java'
3488-
3489-def dirFrom = projectDir.toString() + '/src/main/resources/org/testng/internal'
3490-def dirTo = generatedSourcesFolder + "/org/testng/internal"
3491-def fileFrom = 'VersionTemplateJava'
3492-def fileTo = 'Version.java'
3493-
3494-task removeVersion {
3495- delete dirTo + fileTo
3496-}
3497-
3498-sourceSets {
3499- generated {
3500- java {
3501- srcDir 'src/generated/java'
3502- }
3503- resources {
3504- srcDir 'src/generated/resources'
3505- }
3506- }
3507-}
3508-
3509-sourceSets {
3510- main {
3511- compileClasspath += generated.output
3512- runtimeClasspath += generated.output
3513- }
3514-}
3515-
3516-gradle.projectsEvaluated {
3517- compileJava.dependsOn(myDir)
3518-}
3519-
3520-task myDir {
3521- delete dirTo + "/" + fileTo
3522- mkdir(dirTo)
3523-}
3524-
3525-// Include the generated Version.class in the jar
3526-jar {
3527- manifest {
3528- instruction 'Bundle-License', 'http://apache.org/licenses/LICENSE-2.0'
3529- instruction 'Bundle-Description', 'TestNG is a testing framework.'
3530- instruction 'Import-Package',
3531- 'bsh.*;version="[2.0.0,3.0.0)";resolution:=optional',
3532- 'com.beust.jcommander.*;version="[1.7.0,3.0.0)";resolution:=optional',
3533- 'com.google.inject.*;version="[1.2,1.3)";resolution:=optional',
3534- 'junit.framework;version="[3.8.1, 5.0.0)";resolution:=optional',
3535- 'org.junit.*;resolution:=optional',
3536- 'org.apache.tools.ant.*;version="[1.7.0, 2.0.0)";resolution:=optional',
3537- 'org.yaml.*;version="[1.6,2.0)";resolution:=optional',
3538- '!com.beust.testng',
3539- '!org.testng.*',
3540- '!com.sun.*',
3541- '*'
3542- }
3543- from "$buildDir/classes/generated"
3544-}
3545-
3546-task createVersion(type: Copy, dependsOn: myDir) {
3547- println("Creating Version file: ${version} in ${dirTo}")
3548- from dirFrom
3549- include fileFrom
3550- into(dirTo)
3551- rename(fileFrom, fileTo)
3552- filter(ReplaceTokens, tokens: [version: version])
3553-}
3554-
3555-compileJava.dependsOn(createVersion)
3556-
3557-test {
3558- useTestNG() {
3559- suites 'src/test/resources/testng.xml'
3560- }
3561-// testLogging.showStandardStreams = true
3562- systemProperties = System.getProperties()
3563- systemProperties['test.resources.dir'] = 'build/resources/test/'
3564-}
3565-
3566-if (JavaVersion.current().isJava8Compatible()) {
3567- allprojects {
3568- tasks.withType(Javadoc) {
3569- options.addStringOption('Xdoclint:none', '-quiet')
3570- }
3571- }
3572-}
3573-
3574-sonarqube {
3575- properties {
3576- property "sonar.host.url", "https://nemo.sonarqube.org"
3577- property "sonar.github.repository", "cbeust/testng"
3578- property "sonar.github.login", "testng-bot"
3579- }
3580-}
3581-
3582-apply from: 'gradle/publishing.gradle'
3583diff --git a/build.gradle.kts b/build.gradle.kts
3584new file mode 100644
3585index 0000000..2c43413
3586--- /dev/null
3587+++ b/build.gradle.kts
3588@@ -0,0 +1,56 @@
3589+plugins {
3590+ id("testng.repositories")
3591+ id("com.github.vlsi.stage-vote-release")
3592+ id("idea")
3593+}
3594+
3595+val String.v: String get() = rootProject.extra["$this.version"] as String
3596+val buildVersion = "testng".v + releaseParams.snapshotSuffix
3597+version = buildVersion
3598+
3599+println("Building testng $buildVersion")
3600+
3601+/**
3602+ * Release procedure:
3603+ * 1. ./gradlew prepareVote -Prc=1 -Pgh (builds artifacts, stages them to Central, closes staging repository)
3604+ * 2. ./gradlew publishDist -Prc=1 -Pgh (publishes staging repository and pushes release tag)
3605+ *
3606+ * See https://github.com/vlsi/vlsi-release-plugins#stage-vote-release-plugin
3607+ * The following properties (e.g. $HOME/.gradle/gradle.properties) configure credentials.
3608+ * The plugin would raise a warning if the property is not found.
3609+ * signing.gnupg.keyName=...
3610+ * signing.password=...
3611+ * signing.secretKeyRingFile=...
3612+ * ghNexusUsername=...
3613+ * ghNexusPassword=...
3614+ * ghGitSourceUsername=...
3615+ * ghGitSourcePassword=...
3616+ *
3617+ * You can use https://github.com/vlsi/asflike-release-environment as a playground to dry run releases.
3618+ */
3619+
3620+fun property(name: String) =
3621+ providers.gradleProperty(name).forUseAtConfigurationTime()
3622+
3623+releaseParams {
3624+ tlp.set(property("github.repository"))
3625+ organizationName.set(property("github.organization"))
3626+ componentName.set(property("project.name"))
3627+ prefixForProperties.set("gh")
3628+ svnDistEnabled.set(false)
3629+ sitePreviewEnabled.set(false)
3630+ releaseTag.set(buildVersion) // or "testng-$buildVersion"
3631+ nexus {
3632+ packageGroup.set(property("nexus.profile"))
3633+ mavenCentral()
3634+ }
3635+ voteText.set {
3636+ """
3637+ ${it.componentName} v${it.version}-rc${it.rc} is ready for preview.
3638+
3639+ Git SHA: ${it.gitSha}
3640+ Staging repository: ${it.nexusRepositoryUri}
3641+ """.trimIndent()
3642+ }
3643+}
3644+
3645diff --git a/bundle-pom.xml b/bundle-pom.xml
3646deleted file mode 100644
3647index c969d80..0000000
3648--- a/bundle-pom.xml
3649+++ /dev/null
3650@@ -1,59 +0,0 @@
3651-<project xmlns="http://maven.apache.org/POM/4.0.0"
3652- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3653- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3654- <!--
3655- This POM cannot be used to build TestNG; it should only be used as part of a Maven
3656- repository upload bundle.
3657-
3658- See the guide to creating a bundle here:
3659- http://maven.apache.org/guides/mini/guide-central-repository-upload.html
3660- -->
3661- <modelVersion>4.0.0</modelVersion>
3662- <groupId>org.testng</groupId>
3663- <artifactId>testng</artifactId>
3664- <name>TestNG</name>
3665- <version>5.12.1</version>
3666- <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>
3667- <url>http://testng.org</url>
3668-
3669- <licenses>
3670- <license>
3671- <name>Apache License, Version 2.0</name>
3672- <url>http://apache.org/licenses/LICENSE-2.0</url>
3673- </license>
3674- </licenses>
3675-
3676- <scm>
3677- <connection>scm:svn:http://testng.googlecode.com/svn/trunk/</connection>
3678- <developerConnection>scm:svn:http://testng.googlecode.com/svn/trunk/</developerConnection>
3679- <url>http://testng.googlecode.com/svn/trunk</url>
3680- </scm>
3681-
3682- <dependencies>
3683- <dependency>
3684- <groupId>org.apache.ant</groupId>
3685- <artifactId>ant</artifactId>
3686- <version>1.7.0</version>
3687- <optional>true</optional>
3688- </dependency>
3689- <dependency>
3690- <groupId>junit</groupId>
3691- <artifactId>junit</artifactId>
3692- <version>4.10</version>
3693- </dependency>
3694- <dependency>
3695- <groupId>org.beanshell</groupId>
3696- <artifactId>bsh</artifactId>
3697- <version>2.0b4</version>
3698- <scope>provided</scope>
3699- </dependency>
3700- <dependency>
3701- <groupId>com.google.inject</groupId>
3702- <artifactId>guice</artifactId>
3703- <version>2.0</version>
3704- <scope>provided</scope>
3705- </dependency>
3706-
3707- </dependencies>
3708-
3709-</project>
3710diff --git a/debian/changelog b/debian/changelog
3711index 3f49da0..26365df 100644
3712--- a/debian/changelog
3713+++ b/debian/changelog
3714@@ -1,3 +1,11 @@
3715+testng7 (7.5~us1-0ubuntu1) lunar; urgency=medium
3716+
3717+ * New upstream release 7.5, packaged as a separate source and binary,
3718+ required for jtreg version 6 and 7 (LP: #2012320).
3719+ * d/p/build-with-gradle.patch: provide Groovy Gradle build.
3720+
3721+ -- Vladimir Petko <vladimir.petko@canonical.com> Wed, 22 Mar 2023 16:42:42 +1300
3722+
3723 testng (6.9.12-4) unstable; urgency=medium
3724
3725 * Team upload.
3726@@ -156,8 +164,8 @@ testng (5.11+dfsg-3) unstable; urgency=low
3727 testng (5.11+dfsg-2ubuntu2) oneiric; urgency=low
3728
3729 * Fix FTBFS (LP: #829508):
3730- - d/patches/debian/junitconvertor-test-fix.diff: Switch from use of
3731- deprecated parameters attribute in @Test to using @Parameters to
3732+ - d/patches/debian/junitconvertor-test-fix.diff: Switch from use of
3733+ deprecated parameters attribute in @Test to using @Parameters to
3734 ensure that JUnitConvertor Test passes.
3735
3736 -- James Page <james.page@ubuntu.com> Tue, 20 Sep 2011 12:15:27 +0100
3737diff --git a/debian/compat b/debian/compat
3738deleted file mode 100644
3739index b4de394..0000000
3740--- a/debian/compat
3741+++ /dev/null
3742@@ -1 +0,0 @@
3743-11
3744diff --git a/debian/control b/debian/control
3745index 78776a3..f8100d4 100644
3746--- a/debian/control
3747+++ b/debian/control
3748@@ -1,11 +1,12 @@
3749-Source: testng
3750+Source: testng7
3751 Section: java
3752 Priority: optional
3753-Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
3754-Uploaders: Eugene Zhukov <eugene@debian.org>
3755+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
3756+XSBC-Original-Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
3757+Uploaders: Eugene Zhukov <eugene@debian.org>, Vladimir Petko <vladimir.petko@canonical.com>
3758 Build-Depends:
3759 ant,
3760- debhelper (>= 11~),
3761+ debhelper-compat (=13),
3762 default-jdk,
3763 junit4,
3764 libbsh-java,
3765@@ -14,16 +15,20 @@ Build-Depends:
3766 libjcommander-java,
3767 libmaven-bundle-plugin-java,
3768 libyaml-snake-java,
3769- maven-debian-helper
3770-Standards-Version: 4.1.5
3771+ maven-repo-helper,
3772+ gradle-debian-helper,
3773+ libassertj-core-java
3774+Rules-Requires-Root: no
3775+Standards-Version: 4.6.2
3776 Vcs-Git: https://salsa.debian.org/java-team/testng.git
3777 Vcs-Browser: https://salsa.debian.org/java-team/testng
3778 Homepage: http://testng.org
3779
3780-Package: testng
3781+Package: libtestng7-java
3782 Architecture: all
3783 Depends: ${maven:Depends}, ${misc:Depends}
3784 Recommends: ${maven:OptionalDepends}
3785+Conflicts: testng
3786 Description: testing framework for Java
3787 TestNG is a testing framework inspired from JUnit and NUnit but introducing
3788 some new functionalities that make it more powerful and easier to use, such as:
3789diff --git a/debian/copyright b/debian/copyright
3790index 78e2f32..8ee2d51 100644
3791--- a/debian/copyright
3792+++ b/debian/copyright
3793@@ -1,4 +1,10 @@
3794-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
3795+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
3796+Files-Excluded:
3797+ .gitignore
3798+ .gitattributes
3799+ .github/*
3800+ gradle/*
3801+Comment: Exclude github artifacts, .gitignore, .gitattributes and gradle wrapper
3802 Upstream-Name: TestNG
3803 Source: http://testng.org
3804
3805@@ -8,6 +14,7 @@ License: Apache-2.0
3806
3807 Files: debian/*
3808 Copyright: 2013, Eugene Zhukov <jevgeni.zh@gmail.com>
3809+ 2023, Canonical Ltd.
3810 License: Apache-2.0
3811
3812 License: Apache-2.0
3813diff --git a/debian/gbp.conf b/debian/gbp.conf
3814deleted file mode 100644
3815index 0becd6d..0000000
3816--- a/debian/gbp.conf
3817+++ /dev/null
3818@@ -1,2 +0,0 @@
3819-[import-orig]
3820-upstream-vcs-tag = testng-%(version)s
3821diff --git a/debian/testng.poms b/debian/libtestng7-java.poms
3822similarity index 94%
3823rename from debian/testng.poms
3824rename to debian/libtestng7-java.poms
3825index 77fc769..8640402 100644
3826--- a/debian/testng.poms
3827+++ b/debian/libtestng7-java.poms
3828@@ -25,4 +25,4 @@
3829 # --site-xml=<location>: Optional, the location for site.xml if it needs to be installed.
3830 # Empty by default. [mh_install]
3831 #
3832-pom.xml --no-parent --has-package-version --java-lib --relocate=org.testng:testng:6.x
3833+build/debian/testng.pom --artifact=build/libs/testng-*.jar --java-lib --relocate=org.testng:testng:7.x
3834diff --git a/debian/maven.ignoreRules b/debian/maven.ignoreRules
3835index 5c21bbc..43e63ca 100644
3836--- a/debian/maven.ignoreRules
3837+++ b/debian/maven.ignoreRules
3838@@ -5,4 +5,3 @@ org.apache.maven.plugins maven-javadoc-plugin * * * *
3839 org.apache.maven.plugins maven-release-plugin * * * *
3840 org.apache.maven.plugins maven-source-plugin * * * *
3841 org.apache.maven.plugins maven-surefire-plugin * * * *
3842-org.assertj assertj-core * * * *
3843diff --git a/debian/maven.rules b/debian/maven.rules
3844index 9f41d8b..45a3b3e 100644
3845--- a/debian/maven.rules
3846+++ b/debian/maven.rules
3847@@ -4,3 +4,4 @@ junit junit jar s/4\..*/4.x/ * *
3848 org.yaml snakeyaml bundle s/1\..*/1.x/ * *
3849 org.yaml snakeyaml s/jar/bundle/ s/1\..*/1.x/ * *
3850 s/ant/org.apache.ant/ * * s/.*/debian/ * *
3851+org.assertj assertj-core jar s/.*/debian/ * *
3852diff --git a/debian/missing-sources/jquery-1.7.1.js b/debian/missing-sources/jquery-1.7.1.js
3853deleted file mode 100644
3854index 8ccd0ea..0000000
3855--- a/debian/missing-sources/jquery-1.7.1.js
3856+++ /dev/null
3857@@ -1,9266 +0,0 @@
3858-/*!
3859- * jQuery JavaScript Library v1.7.1
3860- * http://jquery.com/
3861- *
3862- * Copyright 2011, John Resig
3863- * Dual licensed under the MIT or GPL Version 2 licenses.
3864- * http://jquery.org/license
3865- *
3866- * Includes Sizzle.js
3867- * http://sizzlejs.com/
3868- * Copyright 2011, The Dojo Foundation
3869- * Released under the MIT, BSD, and GPL Licenses.
3870- *
3871- * Date: Mon Nov 21 21:11:03 2011 -0500
3872- */
3873-(function( window, undefined ) {
3874-
3875-// Use the correct document accordingly with window argument (sandbox)
3876-var document = window.document,
3877- navigator = window.navigator,
3878- location = window.location;
3879-var jQuery = (function() {
3880-
3881-// Define a local copy of jQuery
3882-var jQuery = function( selector, context ) {
3883- // The jQuery object is actually just the init constructor 'enhanced'
3884- return new jQuery.fn.init( selector, context, rootjQuery );
3885- },
3886-
3887- // Map over jQuery in case of overwrite
3888- _jQuery = window.jQuery,
3889-
3890- // Map over the $ in case of overwrite
3891- _$ = window.$,
3892-
3893- // A central reference to the root jQuery(document)
3894- rootjQuery,
3895-
3896- // A simple way to check for HTML strings or ID strings
3897- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3898- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
3899-
3900- // Check if a string has a non-whitespace character in it
3901- rnotwhite = /\S/,
3902-
3903- // Used for trimming whitespace
3904- trimLeft = /^\s+/,
3905- trimRight = /\s+$/,
3906-
3907- // Match a standalone tag
3908- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
3909-
3910- // JSON RegExp
3911- rvalidchars = /^[\],:{}\s]*$/,
3912- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
3913- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
3914- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
3915-
3916- // Useragent RegExp
3917- rwebkit = /(webkit)[ \/]([\w.]+)/,
3918- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
3919- rmsie = /(msie) ([\w.]+)/,
3920- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
3921-
3922- // Matches dashed string for camelizing
3923- rdashAlpha = /-([a-z]|[0-9])/ig,
3924- rmsPrefix = /^-ms-/,
3925-
3926- // Used by jQuery.camelCase as callback to replace()
3927- fcamelCase = function( all, letter ) {
3928- return ( letter + "" ).toUpperCase();
3929- },
3930-
3931- // Keep a UserAgent string for use with jQuery.browser
3932- userAgent = navigator.userAgent,
3933-
3934- // For matching the engine and version of the browser
3935- browserMatch,
3936-
3937- // The deferred used on DOM ready
3938- readyList,
3939-
3940- // The ready event handler
3941- DOMContentLoaded,
3942-
3943- // Save a reference to some core methods
3944- toString = Object.prototype.toString,
3945- hasOwn = Object.prototype.hasOwnProperty,
3946- push = Array.prototype.push,
3947- slice = Array.prototype.slice,
3948- trim = String.prototype.trim,
3949- indexOf = Array.prototype.indexOf,
3950-
3951- // [[Class]] -> type pairs
3952- class2type = {};
3953-
3954-jQuery.fn = jQuery.prototype = {
3955- constructor: jQuery,
3956- init: function( selector, context, rootjQuery ) {
3957- var match, elem, ret, doc;
3958-
3959- // Handle $(""), $(null), or $(undefined)
3960- if ( !selector ) {
3961- return this;
3962- }
3963-
3964- // Handle $(DOMElement)
3965- if ( selector.nodeType ) {
3966- this.context = this[0] = selector;
3967- this.length = 1;
3968- return this;
3969- }
3970-
3971- // The body element only exists once, optimize finding it
3972- if ( selector === "body" && !context && document.body ) {
3973- this.context = document;
3974- this[0] = document.body;
3975- this.selector = selector;
3976- this.length = 1;
3977- return this;
3978- }
3979-
3980- // Handle HTML strings
3981- if ( typeof selector === "string" ) {
3982- // Are we dealing with HTML string or an ID?
3983- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
3984- // Assume that strings that start and end with <> are HTML and skip the regex check
3985- match = [ null, selector, null ];
3986-
3987- } else {
3988- match = quickExpr.exec( selector );
3989- }
3990-
3991- // Verify a match, and that no context was specified for #id
3992- if ( match && (match[1] || !context) ) {
3993-
3994- // HANDLE: $(html) -> $(array)
3995- if ( match[1] ) {
3996- context = context instanceof jQuery ? context[0] : context;
3997- doc = ( context ? context.ownerDocument || context : document );
3998-
3999- // If a single string is passed in and it's a single tag
4000- // just do a createElement and skip the rest
4001- ret = rsingleTag.exec( selector );
4002-
4003- if ( ret ) {
4004- if ( jQuery.isPlainObject( context ) ) {
4005- selector = [ document.createElement( ret[1] ) ];
4006- jQuery.fn.attr.call( selector, context, true );
4007-
4008- } else {
4009- selector = [ doc.createElement( ret[1] ) ];
4010- }
4011-
4012- } else {
4013- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
4014- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
4015- }
4016-
4017- return jQuery.merge( this, selector );
4018-
4019- // HANDLE: $("#id")
4020- } else {
4021- elem = document.getElementById( match[2] );
4022-
4023- // Check parentNode to catch when Blackberry 4.6 returns
4024- // nodes that are no longer in the document #6963
4025- if ( elem && elem.parentNode ) {
4026- // Handle the case where IE and Opera return items
4027- // by name instead of ID
4028- if ( elem.id !== match[2] ) {
4029- return rootjQuery.find( selector );
4030- }
4031-
4032- // Otherwise, we inject the element directly into the jQuery object
4033- this.length = 1;
4034- this[0] = elem;
4035- }
4036-
4037- this.context = document;
4038- this.selector = selector;
4039- return this;
4040- }
4041-
4042- // HANDLE: $(expr, $(...))
4043- } else if ( !context || context.jquery ) {
4044- return ( context || rootjQuery ).find( selector );
4045-
4046- // HANDLE: $(expr, context)
4047- // (which is just equivalent to: $(context).find(expr)
4048- } else {
4049- return this.constructor( context ).find( selector );
4050- }
4051-
4052- // HANDLE: $(function)
4053- // Shortcut for document ready
4054- } else if ( jQuery.isFunction( selector ) ) {
4055- return rootjQuery.ready( selector );
4056- }
4057-
4058- if ( selector.selector !== undefined ) {
4059- this.selector = selector.selector;
4060- this.context = selector.context;
4061- }
4062-
4063- return jQuery.makeArray( selector, this );
4064- },
4065-
4066- // Start with an empty selector
4067- selector: "",
4068-
4069- // The current version of jQuery being used
4070- jquery: "1.7.1",
4071-
4072- // The default length of a jQuery object is 0
4073- length: 0,
4074-
4075- // The number of elements contained in the matched element set
4076- size: function() {
4077- return this.length;
4078- },
4079-
4080- toArray: function() {
4081- return slice.call( this, 0 );
4082- },
4083-
4084- // Get the Nth element in the matched element set OR
4085- // Get the whole matched element set as a clean array
4086- get: function( num ) {
4087- return num == null ?
4088-
4089- // Return a 'clean' array
4090- this.toArray() :
4091-
4092- // Return just the object
4093- ( num < 0 ? this[ this.length + num ] : this[ num ] );
4094- },
4095-
4096- // Take an array of elements and push it onto the stack
4097- // (returning the new matched element set)
4098- pushStack: function( elems, name, selector ) {
4099- // Build a new jQuery matched element set
4100- var ret = this.constructor();
4101-
4102- if ( jQuery.isArray( elems ) ) {
4103- push.apply( ret, elems );
4104-
4105- } else {
4106- jQuery.merge( ret, elems );
4107- }
4108-
4109- // Add the old object onto the stack (as a reference)
4110- ret.prevObject = this;
4111-
4112- ret.context = this.context;
4113-
4114- if ( name === "find" ) {
4115- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
4116- } else if ( name ) {
4117- ret.selector = this.selector + "." + name + "(" + selector + ")";
4118- }
4119-
4120- // Return the newly-formed element set
4121- return ret;
4122- },
4123-
4124- // Execute a callback for every element in the matched set.
4125- // (You can seed the arguments with an array of args, but this is
4126- // only used internally.)
4127- each: function( callback, args ) {
4128- return jQuery.each( this, callback, args );
4129- },
4130-
4131- ready: function( fn ) {
4132- // Attach the listeners
4133- jQuery.bindReady();
4134-
4135- // Add the callback
4136- readyList.add( fn );
4137-
4138- return this;
4139- },
4140-
4141- eq: function( i ) {
4142- i = +i;
4143- return i === -1 ?
4144- this.slice( i ) :
4145- this.slice( i, i + 1 );
4146- },
4147-
4148- first: function() {
4149- return this.eq( 0 );
4150- },
4151-
4152- last: function() {
4153- return this.eq( -1 );
4154- },
4155-
4156- slice: function() {
4157- return this.pushStack( slice.apply( this, arguments ),
4158- "slice", slice.call(arguments).join(",") );
4159- },
4160-
4161- map: function( callback ) {
4162- return this.pushStack( jQuery.map(this, function( elem, i ) {
4163- return callback.call( elem, i, elem );
4164- }));
4165- },
4166-
4167- end: function() {
4168- return this.prevObject || this.constructor(null);
4169- },
4170-
4171- // For internal use only.
4172- // Behaves like an Array's method, not like a jQuery method.
4173- push: push,
4174- sort: [].sort,
4175- splice: [].splice
4176-};
4177-
4178-// Give the init function the jQuery prototype for later instantiation
4179-jQuery.fn.init.prototype = jQuery.fn;
4180-
4181-jQuery.extend = jQuery.fn.extend = function() {
4182- var options, name, src, copy, copyIsArray, clone,
4183- target = arguments[0] || {},
4184- i = 1,
4185- length = arguments.length,
4186- deep = false;
4187-
4188- // Handle a deep copy situation
4189- if ( typeof target === "boolean" ) {
4190- deep = target;
4191- target = arguments[1] || {};
4192- // skip the boolean and the target
4193- i = 2;
4194- }
4195-
4196- // Handle case when target is a string or something (possible in deep copy)
4197- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
4198- target = {};
4199- }
4200-
4201- // extend jQuery itself if only one argument is passed
4202- if ( length === i ) {
4203- target = this;
4204- --i;
4205- }
4206-
4207- for ( ; i < length; i++ ) {
4208- // Only deal with non-null/undefined values
4209- if ( (options = arguments[ i ]) != null ) {
4210- // Extend the base object
4211- for ( name in options ) {
4212- src = target[ name ];
4213- copy = options[ name ];
4214-
4215- // Prevent never-ending loop
4216- if ( target === copy ) {
4217- continue;
4218- }
4219-
4220- // Recurse if we're merging plain objects or arrays
4221- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
4222- if ( copyIsArray ) {
4223- copyIsArray = false;
4224- clone = src && jQuery.isArray(src) ? src : [];
4225-
4226- } else {
4227- clone = src && jQuery.isPlainObject(src) ? src : {};
4228- }
4229-
4230- // Never move original objects, clone them
4231- target[ name ] = jQuery.extend( deep, clone, copy );
4232-
4233- // Don't bring in undefined values
4234- } else if ( copy !== undefined ) {
4235- target[ name ] = copy;
4236- }
4237- }
4238- }
4239- }
4240-
4241- // Return the modified object
4242- return target;
4243-};
4244-
4245-jQuery.extend({
4246- noConflict: function( deep ) {
4247- if ( window.$ === jQuery ) {
4248- window.$ = _$;
4249- }
4250-
4251- if ( deep && window.jQuery === jQuery ) {
4252- window.jQuery = _jQuery;
4253- }
4254-
4255- return jQuery;
4256- },
4257-
4258- // Is the DOM ready to be used? Set to true once it occurs.
4259- isReady: false,
4260-
4261- // A counter to track how many items to wait for before
4262- // the ready event fires. See #6781
4263- readyWait: 1,
4264-
4265- // Hold (or release) the ready event
4266- holdReady: function( hold ) {
4267- if ( hold ) {
4268- jQuery.readyWait++;
4269- } else {
4270- jQuery.ready( true );
4271- }
4272- },
4273-
4274- // Handle when the DOM is ready
4275- ready: function( wait ) {
4276- // Either a released hold or an DOMready/load event and not yet ready
4277- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
4278- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
4279- if ( !document.body ) {
4280- return setTimeout( jQuery.ready, 1 );
4281- }
4282-
4283- // Remember that the DOM is ready
4284- jQuery.isReady = true;
4285-
4286- // If a normal DOM Ready event fired, decrement, and wait if need be
4287- if ( wait !== true && --jQuery.readyWait > 0 ) {
4288- return;
4289- }
4290-
4291- // If there are functions bound, to execute
4292- readyList.fireWith( document, [ jQuery ] );
4293-
4294- // Trigger any bound ready events
4295- if ( jQuery.fn.trigger ) {
4296- jQuery( document ).trigger( "ready" ).off( "ready" );
4297- }
4298- }
4299- },
4300-
4301- bindReady: function() {
4302- if ( readyList ) {
4303- return;
4304- }
4305-
4306- readyList = jQuery.Callbacks( "once memory" );
4307-
4308- // Catch cases where $(document).ready() is called after the
4309- // browser event has already occurred.
4310- if ( document.readyState === "complete" ) {
4311- // Handle it asynchronously to allow scripts the opportunity to delay ready
4312- return setTimeout( jQuery.ready, 1 );
4313- }
4314-
4315- // Mozilla, Opera and webkit nightlies currently support this event
4316- if ( document.addEventListener ) {
4317- // Use the handy event callback
4318- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
4319-
4320- // A fallback to window.onload, that will always work
4321- window.addEventListener( "load", jQuery.ready, false );
4322-
4323- // If IE event model is used
4324- } else if ( document.attachEvent ) {
4325- // ensure firing before onload,
4326- // maybe late but safe also for iframes
4327- document.attachEvent( "onreadystatechange", DOMContentLoaded );
4328-
4329- // A fallback to window.onload, that will always work
4330- window.attachEvent( "onload", jQuery.ready );
4331-
4332- // If IE and not a frame
4333- // continually check to see if the document is ready
4334- var toplevel = false;
4335-
4336- try {
4337- toplevel = window.frameElement == null;
4338- } catch(e) {}
4339-
4340- if ( document.documentElement.doScroll && toplevel ) {
4341- doScrollCheck();
4342- }
4343- }
4344- },
4345-
4346- // See test/unit/core.js for details concerning isFunction.
4347- // Since version 1.3, DOM methods and functions like alert
4348- // aren't supported. They return false on IE (#2968).
4349- isFunction: function( obj ) {
4350- return jQuery.type(obj) === "function";
4351- },
4352-
4353- isArray: Array.isArray || function( obj ) {
4354- return jQuery.type(obj) === "array";
4355- },
4356-
4357- // A crude way of determining if an object is a window
4358- isWindow: function( obj ) {
4359- return obj && typeof obj === "object" && "setInterval" in obj;
4360- },
4361-
4362- isNumeric: function( obj ) {
4363- return !isNaN( parseFloat(obj) ) && isFinite( obj );
4364- },
4365-
4366- type: function( obj ) {
4367- return obj == null ?
4368- String( obj ) :
4369- class2type[ toString.call(obj) ] || "object";
4370- },
4371-
4372- isPlainObject: function( obj ) {
4373- // Must be an Object.
4374- // Because of IE, we also have to check the presence of the constructor property.
4375- // Make sure that DOM nodes and window objects don't pass through, as well
4376- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
4377- return false;
4378- }
4379-
4380- try {
4381- // Not own constructor property must be Object
4382- if ( obj.constructor &&
4383- !hasOwn.call(obj, "constructor") &&
4384- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
4385- return false;
4386- }
4387- } catch ( e ) {
4388- // IE8,9 Will throw exceptions on certain host objects #9897
4389- return false;
4390- }
4391-
4392- // Own properties are enumerated firstly, so to speed up,
4393- // if last one is own, then all properties are own.
4394-
4395- var key;
4396- for ( key in obj ) {}
4397-
4398- return key === undefined || hasOwn.call( obj, key );
4399- },
4400-
4401- isEmptyObject: function( obj ) {
4402- for ( var name in obj ) {
4403- return false;
4404- }
4405- return true;
4406- },
4407-
4408- error: function( msg ) {
4409- throw new Error( msg );
4410- },
4411-
4412- parseJSON: function( data ) {
4413- if ( typeof data !== "string" || !data ) {
4414- return null;
4415- }
4416-
4417- // Make sure leading/trailing whitespace is removed (IE can't handle it)
4418- data = jQuery.trim( data );
4419-
4420- // Attempt to parse using the native JSON parser first
4421- if ( window.JSON && window.JSON.parse ) {
4422- return window.JSON.parse( data );
4423- }
4424-
4425- // Make sure the incoming data is actual JSON
4426- // Logic borrowed from http://json.org/json2.js
4427- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
4428- .replace( rvalidtokens, "]" )
4429- .replace( rvalidbraces, "")) ) {
4430-
4431- return ( new Function( "return " + data ) )();
4432-
4433- }
4434- jQuery.error( "Invalid JSON: " + data );
4435- },
4436-
4437- // Cross-browser xml parsing
4438- parseXML: function( data ) {
4439- var xml, tmp;
4440- try {
4441- if ( window.DOMParser ) { // Standard
4442- tmp = new DOMParser();
4443- xml = tmp.parseFromString( data , "text/xml" );
4444- } else { // IE
4445- xml = new ActiveXObject( "Microsoft.XMLDOM" );
4446- xml.async = "false";
4447- xml.loadXML( data );
4448- }
4449- } catch( e ) {
4450- xml = undefined;
4451- }
4452- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
4453- jQuery.error( "Invalid XML: " + data );
4454- }
4455- return xml;
4456- },
4457-
4458- noop: function() {},
4459-
4460- // Evaluates a script in a global context
4461- // Workarounds based on findings by Jim Driscoll
4462- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
4463- globalEval: function( data ) {
4464- if ( data && rnotwhite.test( data ) ) {
4465- // We use execScript on Internet Explorer
4466- // We use an anonymous function so that context is window
4467- // rather than jQuery in Firefox
4468- ( window.execScript || function( data ) {
4469- window[ "eval" ].call( window, data );
4470- } )( data );
4471- }
4472- },
4473-
4474- // Convert dashed to camelCase; used by the css and data modules
4475- // Microsoft forgot to hump their vendor prefix (#9572)
4476- camelCase: function( string ) {
4477- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4478- },
4479-
4480- nodeName: function( elem, name ) {
4481- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
4482- },
4483-
4484- // args is for internal usage only
4485- each: function( object, callback, args ) {
4486- var name, i = 0,
4487- length = object.length,
4488- isObj = length === undefined || jQuery.isFunction( object );
4489-
4490- if ( args ) {
4491- if ( isObj ) {
4492- for ( name in object ) {
4493- if ( callback.apply( object[ name ], args ) === false ) {
4494- break;
4495- }
4496- }
4497- } else {
4498- for ( ; i < length; ) {
4499- if ( callback.apply( object[ i++ ], args ) === false ) {
4500- break;
4501- }
4502- }
4503- }
4504-
4505- // A special, fast, case for the most common use of each
4506- } else {
4507- if ( isObj ) {
4508- for ( name in object ) {
4509- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
4510- break;
4511- }
4512- }
4513- } else {
4514- for ( ; i < length; ) {
4515- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
4516- break;
4517- }
4518- }
4519- }
4520- }
4521-
4522- return object;
4523- },
4524-
4525- // Use native String.trim function wherever possible
4526- trim: trim ?
4527- function( text ) {
4528- return text == null ?
4529- "" :
4530- trim.call( text );
4531- } :
4532-
4533- // Otherwise use our own trimming functionality
4534- function( text ) {
4535- return text == null ?
4536- "" :
4537- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
4538- },
4539-
4540- // results is for internal usage only
4541- makeArray: function( array, results ) {
4542- var ret = results || [];
4543-
4544- if ( array != null ) {
4545- // The window, strings (and functions) also have 'length'
4546- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
4547- var type = jQuery.type( array );
4548-
4549- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
4550- push.call( ret, array );
4551- } else {
4552- jQuery.merge( ret, array );
4553- }
4554- }
4555-
4556- return ret;
4557- },
4558-
4559- inArray: function( elem, array, i ) {
4560- var len;
4561-
4562- if ( array ) {
4563- if ( indexOf ) {
4564- return indexOf.call( array, elem, i );
4565- }
4566-
4567- len = array.length;
4568- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
4569-
4570- for ( ; i < len; i++ ) {
4571- // Skip accessing in sparse arrays
4572- if ( i in array && array[ i ] === elem ) {
4573- return i;
4574- }
4575- }
4576- }
4577-
4578- return -1;
4579- },
4580-
4581- merge: function( first, second ) {
4582- var i = first.length,
4583- j = 0;
4584-
4585- if ( typeof second.length === "number" ) {
4586- for ( var l = second.length; j < l; j++ ) {
4587- first[ i++ ] = second[ j ];
4588- }
4589-
4590- } else {
4591- while ( second[j] !== undefined ) {
4592- first[ i++ ] = second[ j++ ];
4593- }
4594- }
4595-
4596- first.length = i;
4597-
4598- return first;
4599- },
4600-
4601- grep: function( elems, callback, inv ) {
4602- var ret = [], retVal;
4603- inv = !!inv;
4604-
4605- // Go through the array, only saving the items
4606- // that pass the validator function
4607- for ( var i = 0, length = elems.length; i < length; i++ ) {
4608- retVal = !!callback( elems[ i ], i );
4609- if ( inv !== retVal ) {
4610- ret.push( elems[ i ] );
4611- }
4612- }
4613-
4614- return ret;
4615- },
4616-
4617- // arg is for internal usage only
4618- map: function( elems, callback, arg ) {
4619- var value, key, ret = [],
4620- i = 0,
4621- length = elems.length,
4622- // jquery objects are treated as arrays
4623- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
4624-
4625- // Go through the array, translating each of the items to their
4626- if ( isArray ) {
4627- for ( ; i < length; i++ ) {
4628- value = callback( elems[ i ], i, arg );
4629-
4630- if ( value != null ) {
4631- ret[ ret.length ] = value;
4632- }
4633- }
4634-
4635- // Go through every key on the object,
4636- } else {
4637- for ( key in elems ) {
4638- value = callback( elems[ key ], key, arg );
4639-
4640- if ( value != null ) {
4641- ret[ ret.length ] = value;
4642- }
4643- }
4644- }
4645-
4646- // Flatten any nested arrays
4647- return ret.concat.apply( [], ret );
4648- },
4649-
4650- // A global GUID counter for objects
4651- guid: 1,
4652-
4653- // Bind a function to a context, optionally partially applying any
4654- // arguments.
4655- proxy: function( fn, context ) {
4656- if ( typeof context === "string" ) {
4657- var tmp = fn[ context ];
4658- context = fn;
4659- fn = tmp;
4660- }
4661-
4662- // Quick check to determine if target is callable, in the spec
4663- // this throws a TypeError, but we will just return undefined.
4664- if ( !jQuery.isFunction( fn ) ) {
4665- return undefined;
4666- }
4667-
4668- // Simulated bind
4669- var args = slice.call( arguments, 2 ),
4670- proxy = function() {
4671- return fn.apply( context, args.concat( slice.call( arguments ) ) );
4672- };
4673-
4674- // Set the guid of unique handler to the same of original handler, so it can be removed
4675- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
4676-
4677- return proxy;
4678- },
4679-
4680- // Mutifunctional method to get and set values to a collection
4681- // The value/s can optionally be executed if it's a function
4682- access: function( elems, key, value, exec, fn, pass ) {
4683- var length = elems.length;
4684-
4685- // Setting many attributes
4686- if ( typeof key === "object" ) {
4687- for ( var k in key ) {
4688- jQuery.access( elems, k, key[k], exec, fn, value );
4689- }
4690- return elems;
4691- }
4692-
4693- // Setting one attribute
4694- if ( value !== undefined ) {
4695- // Optionally, function values get executed if exec is true
4696- exec = !pass && exec && jQuery.isFunction(value);
4697-
4698- for ( var i = 0; i < length; i++ ) {
4699- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
4700- }
4701-
4702- return elems;
4703- }
4704-
4705- // Getting an attribute
4706- return length ? fn( elems[0], key ) : undefined;
4707- },
4708-
4709- now: function() {
4710- return ( new Date() ).getTime();
4711- },
4712-
4713- // Use of jQuery.browser is frowned upon.
4714- // More details: http://docs.jquery.com/Utilities/jQuery.browser
4715- uaMatch: function( ua ) {
4716- ua = ua.toLowerCase();
4717-
4718- var match = rwebkit.exec( ua ) ||
4719- ropera.exec( ua ) ||
4720- rmsie.exec( ua ) ||
4721- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
4722- [];
4723-
4724- return { browser: match[1] || "", version: match[2] || "0" };
4725- },
4726-
4727- sub: function() {
4728- function jQuerySub( selector, context ) {
4729- return new jQuerySub.fn.init( selector, context );
4730- }
4731- jQuery.extend( true, jQuerySub, this );
4732- jQuerySub.superclass = this;
4733- jQuerySub.fn = jQuerySub.prototype = this();
4734- jQuerySub.fn.constructor = jQuerySub;
4735- jQuerySub.sub = this.sub;
4736- jQuerySub.fn.init = function init( selector, context ) {
4737- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
4738- context = jQuerySub( context );
4739- }
4740-
4741- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
4742- };
4743- jQuerySub.fn.init.prototype = jQuerySub.fn;
4744- var rootjQuerySub = jQuerySub(document);
4745- return jQuerySub;
4746- },
4747-
4748- browser: {}
4749-});
4750-
4751-// Populate the class2type map
4752-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
4753- class2type[ "[object " + name + "]" ] = name.toLowerCase();
4754-});
4755-
4756-browserMatch = jQuery.uaMatch( userAgent );
4757-if ( browserMatch.browser ) {
4758- jQuery.browser[ browserMatch.browser ] = true;
4759- jQuery.browser.version = browserMatch.version;
4760-}
4761-
4762-// Deprecated, use jQuery.browser.webkit instead
4763-if ( jQuery.browser.webkit ) {
4764- jQuery.browser.safari = true;
4765-}
4766-
4767-// IE doesn't match non-breaking spaces with \s
4768-if ( rnotwhite.test( "\xA0" ) ) {
4769- trimLeft = /^[\s\xA0]+/;
4770- trimRight = /[\s\xA0]+$/;
4771-}
4772-
4773-// All jQuery objects should point back to these
4774-rootjQuery = jQuery(document);
4775-
4776-// Cleanup functions for the document ready method
4777-if ( document.addEventListener ) {
4778- DOMContentLoaded = function() {
4779- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
4780- jQuery.ready();
4781- };
4782-
4783-} else if ( document.attachEvent ) {
4784- DOMContentLoaded = function() {
4785- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
4786- if ( document.readyState === "complete" ) {
4787- document.detachEvent( "onreadystatechange", DOMContentLoaded );
4788- jQuery.ready();
4789- }
4790- };
4791-}
4792-
4793-// The DOM ready check for Internet Explorer
4794-function doScrollCheck() {
4795- if ( jQuery.isReady ) {
4796- return;
4797- }
4798-
4799- try {
4800- // If IE is used, use the trick by Diego Perini
4801- // http://javascript.nwbox.com/IEContentLoaded/
4802- document.documentElement.doScroll("left");
4803- } catch(e) {
4804- setTimeout( doScrollCheck, 1 );
4805- return;
4806- }
4807-
4808- // and execute any waiting functions
4809- jQuery.ready();
4810-}
4811-
4812-return jQuery;
4813-
4814-})();
4815-
4816-
4817-// String to Object flags format cache
4818-var flagsCache = {};
4819-
4820-// Convert String-formatted flags into Object-formatted ones and store in cache
4821-function createFlags( flags ) {
4822- var object = flagsCache[ flags ] = {},
4823- i, length;
4824- flags = flags.split( /\s+/ );
4825- for ( i = 0, length = flags.length; i < length; i++ ) {
4826- object[ flags[i] ] = true;
4827- }
4828- return object;
4829-}
4830-
4831-/*
4832- * Create a callback list using the following parameters:
4833- *
4834- * flags: an optional list of space-separated flags that will change how
4835- * the callback list behaves
4836- *
4837- * By default a callback list will act like an event callback list and can be
4838- * "fired" multiple times.
4839- *
4840- * Possible flags:
4841- *
4842- * once: will ensure the callback list can only be fired once (like a Deferred)
4843- *
4844- * memory: will keep track of previous values and will call any callback added
4845- * after the list has been fired right away with the latest "memorized"
4846- * values (like a Deferred)
4847- *
4848- * unique: will ensure a callback can only be added once (no duplicate in the list)
4849- *
4850- * stopOnFalse: interrupt callings when a callback returns false
4851- *
4852- */
4853-jQuery.Callbacks = function( flags ) {
4854-
4855- // Convert flags from String-formatted to Object-formatted
4856- // (we check in cache first)
4857- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
4858-
4859- var // Actual callback list
4860- list = [],
4861- // Stack of fire calls for repeatable lists
4862- stack = [],
4863- // Last fire value (for non-forgettable lists)
4864- memory,
4865- // Flag to know if list is currently firing
4866- firing,
4867- // First callback to fire (used internally by add and fireWith)
4868- firingStart,
4869- // End of the loop when firing
4870- firingLength,
4871- // Index of currently firing callback (modified by remove if needed)
4872- firingIndex,
4873- // Add one or several callbacks to the list
4874- add = function( args ) {
4875- var i,
4876- length,
4877- elem,
4878- type,
4879- actual;
4880- for ( i = 0, length = args.length; i < length; i++ ) {
4881- elem = args[ i ];
4882- type = jQuery.type( elem );
4883- if ( type === "array" ) {
4884- // Inspect recursively
4885- add( elem );
4886- } else if ( type === "function" ) {
4887- // Add if not in unique mode and callback is not in
4888- if ( !flags.unique || !self.has( elem ) ) {
4889- list.push( elem );
4890- }
4891- }
4892- }
4893- },
4894- // Fire callbacks
4895- fire = function( context, args ) {
4896- args = args || [];
4897- memory = !flags.memory || [ context, args ];
4898- firing = true;
4899- firingIndex = firingStart || 0;
4900- firingStart = 0;
4901- firingLength = list.length;
4902- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
4903- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
4904- memory = true; // Mark as halted
4905- break;
4906- }
4907- }
4908- firing = false;
4909- if ( list ) {
4910- if ( !flags.once ) {
4911- if ( stack && stack.length ) {
4912- memory = stack.shift();
4913- self.fireWith( memory[ 0 ], memory[ 1 ] );
4914- }
4915- } else if ( memory === true ) {
4916- self.disable();
4917- } else {
4918- list = [];
4919- }
4920- }
4921- },
4922- // Actual Callbacks object
4923- self = {
4924- // Add a callback or a collection of callbacks to the list
4925- add: function() {
4926- if ( list ) {
4927- var length = list.length;
4928- add( arguments );
4929- // Do we need to add the callbacks to the
4930- // current firing batch?
4931- if ( firing ) {
4932- firingLength = list.length;
4933- // With memory, if we're not firing then
4934- // we should call right away, unless previous
4935- // firing was halted (stopOnFalse)
4936- } else if ( memory && memory !== true ) {
4937- firingStart = length;
4938- fire( memory[ 0 ], memory[ 1 ] );
4939- }
4940- }
4941- return this;
4942- },
4943- // Remove a callback from the list
4944- remove: function() {
4945- if ( list ) {
4946- var args = arguments,
4947- argIndex = 0,
4948- argLength = args.length;
4949- for ( ; argIndex < argLength ; argIndex++ ) {
4950- for ( var i = 0; i < list.length; i++ ) {
4951- if ( args[ argIndex ] === list[ i ] ) {
4952- // Handle firingIndex and firingLength
4953- if ( firing ) {
4954- if ( i <= firingLength ) {
4955- firingLength--;
4956- if ( i <= firingIndex ) {
4957- firingIndex--;
4958- }
4959- }
4960- }
4961- // Remove the element
4962- list.splice( i--, 1 );
4963- // If we have some unicity property then
4964- // we only need to do this once
4965- if ( flags.unique ) {
4966- break;
4967- }
4968- }
4969- }
4970- }
4971- }
4972- return this;
4973- },
4974- // Control if a given callback is in the list
4975- has: function( fn ) {
4976- if ( list ) {
4977- var i = 0,
4978- length = list.length;
4979- for ( ; i < length; i++ ) {
4980- if ( fn === list[ i ] ) {
4981- return true;
4982- }
4983- }
4984- }
4985- return false;
4986- },
4987- // Remove all callbacks from the list
4988- empty: function() {
4989- list = [];
4990- return this;
4991- },
4992- // Have the list do nothing anymore
4993- disable: function() {
4994- list = stack = memory = undefined;
4995- return this;
4996- },
4997- // Is it disabled?
4998- disabled: function() {
4999- return !list;
5000- },
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: