Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package testng for openSUSE:Factory checked in at 2024-04-17 14:45:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/testng (Old) and /work/SRC/openSUSE:Factory/.testng.new.26366 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "testng" Wed Apr 17 14:45:30 2024 rev:6 rq:1168376 version:7.10.1 Changes: -------- --- /work/SRC/openSUSE:Factory/testng/testng.changes 2024-02-22 20:56:43.247237617 +0100 +++ /work/SRC/openSUSE:Factory/.testng.new.26366/testng.changes 2024-04-17 14:45:38.894657350 +0200 @@ -1,0 +2,182 @@ +Tue Apr 16 13:27:19 UTC 2024 - Fridrich Strba <[email protected]> + +- Upgrade to version 7.10.1 + * Changes of 7.10.1 + + Fix for #3110 + * Changes of 7.10.0 + + Clean-up deprecated code + + Minor discrepancy fixes + + Deleting TestNG eclipse plugin specific classes + + Code clean-up + + Remove deprecated JUnit related support in TestNG + + Handle exceptions in emailable Reporter + + Add wrapperbot and update workflow order + + Support ITestNGFactory customisation + + Streamline data provider listener invocation + + Streamline Guice Module creation in concurrency. + + Copy test result attributes when unexpected failures + + chore: use explicit dependency versions instead of + refreshVersions + + Remove Ant + + Support ordering of listeners + + Add errorprone + + Allow custom thread pool executors to be wired in. + + Allow data providers to be non cacheable + + Use Locks instead of synchronised keyword + + Document pgp artifact signing keys + + Add Unique Id for all test class instances + + Adding issue management workflows + + Map object to configurations + + Allow listeners to be disabled at runtime + + Streamline Data Provider execution + + Test case failure + + Honour inheritance when parsing listener factories + + Fixing flaky tests + + Tweaks around accessing SuiteResult + + Streamline random generation + + Minor refactoring around RunOrder enum + + Streamline dependencies for configurations + * Changes of 7.9.0 + + GitHub 2913 + + Test Results as artifacts for failed runs + + Minor code clean-ups + + Fixing the Github CI yaml file + + Fixing data races + + Dont honour params specified in suite-file tag + + Decouple SuiteRunner and TestRunner + + Disable Native DI for BeforeSuite methods + + Streamline running Parallel Dataproviders+retries + + Remove extra whitespace in log for + Configuration.createMethods() + + Added the link for TestNG Documentation's GitHub Repo in + README.md + + FirstTimeOnlyConfig methods + Listener invocations + + #2974: Add overrideGroupsFromCliInParentChildXml test + + Ensure thread safety for attribute access + + Add @inherited to the Listeners annotation + + Restrict Group inheritance to Before|AfterGroups + + Ensure ITestResult injected to @AfterMethod is apt + + Support suite level thread pools for data provider + + Minor Code tweaks + + Favour CompletableFuture instead of PoolService + + Favour FutureTask for concurrency support + + Shared Threadpool for normal/datadriven tests. + + Abort for invalid combinations + * Changes of 7.8.0 + + XmlTest index is not set for test suites invoked with YAML + + Listener's onAfterClass is called before @afterclass + configuration methods are executed. + + After upgrading to TestNG 7.5.0, setting ITestResult.status + to FAILURE doesn't fail the test anymore + + JUnitReportReporter should capture the test case output at + the test case level + + [Feature] Allow test classes to define "configfailurepolicy" + at a per class level + + TestNG.xml doesn't honour Parallel value of a clone + + before configuration and before invocation should be 'SKIP' + when beforeMethod is 'skip' + + Test listeners specified in parent testng.xml file are not + included in testng-failed.xml file + + Discrepancies with DataProvider and Retry of failed tests + + Skipped Tests with DataProvider appear as failed + + testng-results xml reports config skips from base classes as + ignored + + Feature: Check that specific object present in List + + Upgrade snakeyaml to 2.0 + + [Feature] Not exception but warning if some (not all) of the + given test names are not found in suite files. + + [Feature] Generate testng-results.xml per test suite + * Changes of 7.7.1 + + Streamline overloaded assertion methods for Groovy + * Changes of 7.7.0 + + Replace FindBugs by SpotBugs + + Gradle: Drop forUseAtConfigurationTime() + + Added ability to provide custom message to + assertThrows\expectThrows methods + + Fix issue 2801 - Only resolve hostname once + + [SECURITY] Fix Zip Slip Vulnerability (bsc#1205628, + CVE-2022-4065) + + GITHUB-2807 - Failsafe buildStackTrace + + Prevent overlogging of debug msgs in Graph impl + + Streamline dataprovider invoking in abstract classes + + Streamline TestResult due to expectedExceptions + + Unexpected test runs count with retry analyzer + + Make PackageUtils compliant with JPMS + + Ability to retry a data provider during failures + + Refactoring + + Fixing bug with DataProvider retry + + Add config key for callback discrepancy behavior + + Upgrading versions + + Fix #2770: FileAlreadyExistsException on copy + + JarFileUtils.delete(File f) throw actual exception (instead + of FileNotFound) when file cannot be deleted #2825 + + GITHUB-2830 - Failsafe parameter.toString + + Changing assertion message of the osgitest + + hidden spotbugs in release #2829 + + Enhancing the Matrix + + Avoid Compilation errors on Semeru JDK flavour. + + Add addition yml extension + + Support getting dependencies info for a test + + Honour regex in dependsOnMethods + + Ensure All tests run all the time + + Deprecate support for running Spock Tests + + Streamline dependsOnMethods for configurations + + Ensure ITestContext available for JUnit4 tests + + Deprecate support for running JUnit tests + * Changes of 7.6.1 + + Fix Files.copy() such that parent dirs are created + + Remove deprecated utility methods + + Fix typos + * Changes of 7.6.0 + + Remove redundant Parameter implementation + + Upgrade to JDK11 + + Move SimpleBaseTest to be Kotlin based + + Restore testnames when using suites in suite. + + Moving ClassHelperTests into Kotlin + + IHookable and IConfigurable callback discrepancy + + Minor refactoring + + Add additional condition for assertEqualsNoOrder + + beforeConfiguration() listener method should be invoked for + skipped configurations as well + + #2734 keep the initial order of listeners + + SuiteRunner could not be initial by default Configuration + + Enable Dataprovider failures to be considered. + + BeforeGroups should run before any matched test + + Fix possible StringIndexOutOfBoundsException exception in + XmlReporter + + DataProvider: possibility to unload dataprovider class, when + done with it + + fix possibilty that AfterGroups method is invoked before all + tests + + fix equals implementation for WrappedTestNGMethod + + Upgrade dependencies, Upgrade to JDK17 + + Wire-In listeners consistently + + Streamline AfterClass invocation + + Show FQMN for tests in console + + Fix 2725 +- Modified patches: + * 0001-Avoid-accidental-javascript-in-javadoc.patch + * 0002-Replace-bundled-jquery-with-CDN-link.patch + + regenerate for the current version +- Added patch: + * 0003-Preserve-Java-8-compatibility.patch + + restore the possibility to build with --release 8 +- Removed patches: + * 0003-Upgrade-snakeyaml-to-2.0.patch + * 0004-vuln-fix-Zip-Slip-Vulnerability.patch + + integrated in this version + +------------------------------------------------------------------- +Mon Apr 15 18:07:44 UTC 2024 - Fridrich Strba <[email protected]> + +- Modified patches: + * 0001-Avoid-accidental-javascript-in-javadoc.patch + * 0002-Replace-bundled-jquery-with-CDN-link.patch + * testng-CVE-2022-4065.patch -> + 0004-vuln-fix-Zip-Slip-Vulnerability.patch + + re-cherry-pick and rediff in git +- Added patch: + * 0003-Upgrade-snakeyaml-to-2.0.patch + + Fix build against snakeyaml >= 2.0 + +------------------------------------------------------------------- Old: ---- pom.xml testng-7.4.0.tar.xz testng-CVE-2022-4065.patch New: ---- 0003-Preserve-Java-8-compatibility.patch testng-7.10.1.pom testng-7.10.1.tar.xz BETA DEBUG BEGIN: Old: * 0002-Replace-bundled-jquery-with-CDN-link.patch * testng-CVE-2022-4065.patch -> 0004-vuln-fix-Zip-Slip-Vulnerability.patch BETA DEBUG END: BETA DEBUG BEGIN: New:- Added patch: * 0003-Preserve-Java-8-compatibility.patch + restore the possibility to build with --release 8 BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ testng.spec ++++++ --- /var/tmp/diff_new_pack.nugp4p/_old 2024-04-17 14:45:43.722834635 +0200 +++ /var/tmp/diff_new_pack.nugp4p/_new 2024-04-17 14:45:43.722834635 +0200 @@ -17,27 +17,26 @@ Name: testng -Version: 7.4.0 +Version: 7.10.1 Release: 0 Summary: Java-based testing framework License: Apache-2.0 Group: Development/Libraries/Java URL: https://testng.org/ Source0: %{name}-%{version}.tar.xz -Source1: pom.xml +Source1: https://repo1.maven.org/maven2/org/testng/testng/%{version}/testng-%{version}.pom Source2: %{name}-build.xml Patch0: 0001-Avoid-accidental-javascript-in-javadoc.patch Patch1: 0002-Replace-bundled-jquery-with-CDN-link.patch -Patch2: testng-CVE-2022-4065.patch +Patch2: 0003-Preserve-Java-8-compatibility.patch BuildRequires: ant BuildRequires: beust-jcommander -BuildRequires: bsh2 BuildRequires: fdupes BuildRequires: google-guice BuildRequires: javapackages-local >= 6 BuildRequires: jsr-305 -BuildRequires: junit -BuildRequires: snakeyaml +BuildRequires: slf4j +BuildRequires: snakeyaml >= 2.0 BuildArch: noarch %description @@ -55,25 +54,19 @@ %prep %setup -q +cp %{SOURCE1} pom.xml +cp %{SOURCE2} build.xml +cp -p testng-core/src/main/java/*.dtd.html testng-core/src/main/resources/ %patch -P 0 -p1 %patch -P 1 -p1 %patch -P 2 -p1 -sed 's/@VERSION@/%{version}/' %{SOURCE1} > pom.xml -cp %{SOURCE2} build.xml - -# remove any bundled libs, but not test resources -find ! -path "*/test/*" -name *.jar -print -delete -find -name *.class -delete - -sed -i -e 's/DEV-SNAPSHOT/%{version}/' src/main/java/org/testng/internal/Version.java - -cp -p ./src/main/java/*.dtd.html ./src/main/resources/. +%pom_remove_dep org.webjars:jquery %build mkdir -p lib -build-jar-repository -s lib ant/ant beust-jcommander bsh2/bsh google-guice jsr305 junit snakeyaml +build-jar-repository -s lib beust-jcommander guice/google-guice jsr-305 slf4j/api snakeyaml %{ant} jar javadoc %install ++++++ 0001-Avoid-accidental-javascript-in-javadoc.patch ++++++ --- /var/tmp/diff_new_pack.nugp4p/_old 2024-04-17 14:45:43.742835369 +0200 +++ /var/tmp/diff_new_pack.nugp4p/_new 2024-04-17 14:45:43.746835516 +0200 @@ -1,17 +1,17 @@ -From bce3019741aeb785658b23095ae408a6c2d8ca35 Mon Sep 17 00:00:00 2001 +From acd7f374502cbbde54f1dd43cde1c4faa5d4139a Mon Sep 17 00:00:00 2001 From: Michael Simacek <[email protected]> Date: Wed, 31 May 2017 13:44:36 +0200 -Subject: [PATCH 1/2] Avoid accidental javascript in javadoc +Subject: [PATCH 1/4] Avoid accidental javascript in javadoc --- - src/main/java/org/testng/xml/TestNGContentHandler.java | 4 +++- + .../src/main/java/org/testng/xml/TestNGContentHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -diff --git a/src/main/java/org/testng/xml/TestNGContentHandler.java b/src/main/java/org/testng/xml/TestNGContentHandler.java -index b74572a..7c490e9 100644 ---- a/src/main/java/org/testng/xml/TestNGContentHandler.java -+++ b/src/main/java/org/testng/xml/TestNGContentHandler.java -@@ -250,7 +250,9 @@ public class TestNGContentHandler extends DefaultHandler { +diff --git a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java +index a1f64c00..74c1e10a 100644 +--- a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java ++++ b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java +@@ -328,7 +328,9 @@ public class TestNGContentHandler extends DefaultHandler { } } @@ -23,6 +23,6 @@ if (start) { m_currentLanguage = attributes.getValue("language"); -- -2.20.1 +2.44.0 ++++++ 0002-Replace-bundled-jquery-with-CDN-link.patch ++++++ --- /var/tmp/diff_new_pack.nugp4p/_old 2024-04-17 14:45:43.758835956 +0200 +++ /var/tmp/diff_new_pack.nugp4p/_new 2024-04-17 14:45:43.758835956 +0200 @@ -1,39 +1,39 @@ -From 9155677e2d5acdd2379c38041189da52c7f04946 Mon Sep 17 00:00:00 2001 +From acbea8349bb443e867371bbfb5eb2e7f84f53784 Mon Sep 17 00:00:00 2001 From: Michael Simacek <[email protected]> Date: Wed, 18 Jul 2018 15:57:49 +0200 -Subject: [PATCH 2/2] Replace bundled jquery with CDN link +Subject: [PATCH 2/4] Replace bundled jquery with CDN link --- - src/main/java/org/testng/reporters/jq/Main.java | 1 - - src/main/resources/org/testng/header | 2 +- + testng-core/src/main/java/org/testng/reporters/jq/Main.java | 1 - + testng-core/src/main/resources/org/testng/header | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) -diff --git a/src/main/java/org/testng/reporters/jq/Main.java b/src/main/java/org/testng/reporters/jq/Main.java -index efd6799..2d8b74e 100644 ---- a/src/main/java/org/testng/reporters/jq/Main.java -+++ b/src/main/java/org/testng/reporters/jq/Main.java -@@ -21,7 +21,6 @@ public class Main implements IReporter { +diff --git a/testng-core/src/main/java/org/testng/reporters/jq/Main.java b/testng-core/src/main/java/org/testng/reporters/jq/Main.java +index 7c6a959b..82ef710e 100644 +--- a/testng-core/src/main/java/org/testng/reporters/jq/Main.java ++++ b/testng-core/src/main/java/org/testng/reporters/jq/Main.java +@@ -20,7 +20,6 @@ public class Main implements IReporter { private static final String TESTNG_RESOURCE_PREFIX = "/org/testng/"; private static final String[] RESOURCES = new String[] { -- "jquery.min.js", +- "jquery-3.6.0.min.js", "testng-reports.css", "testng-reports.js", "testng-reports1.css", -diff --git a/src/main/resources/org/testng/header b/src/main/resources/org/testng/header -index f5abbc3..817badc 100644 ---- a/src/main/resources/org/testng/header -+++ b/src/main/resources/org/testng/header +diff --git a/testng-core/src/main/resources/org/testng/header b/testng-core/src/main/resources/org/testng/header +index d1573f93..29ed3e16 100644 +--- a/testng-core/src/main/resources/org/testng/header ++++ b/testng-core/src/main/resources/org/testng/header @@ -7,7 +7,7 @@ <link type="text/css" href="testng-reports1.css" rel="stylesheet" id="ultra" /> <link type="text/css" href="testng-reports.css" rel="stylesheet" id="retro" disabled="false"/> -- <script type="text/javascript" src="jquery.min.js"></script> -+ <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +- <script type="text/javascript" src="jquery-3.6.0.min.js"></script> ++ <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script type="text/javascript" src="testng-reports.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type='text/javascript'> -- -2.31.1 +2.44.0 ++++++ 0003-Preserve-Java-8-compatibility.patch ++++++ >From 9b3e583a38c5c7cdea761e687ee07dfdca6b2e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <[email protected]> Date: Tue, 16 Apr 2024 09:16:42 +0200 Subject: [PATCH 3/4] Preserve Java 8 compatibility --- .../main/java/org/testng/util/Strings.java | 2 +- .../org/testng/internal/PackageUtils.java | 13 ++++-- .../main/java/org/testng/internal/Utils.java | 4 +- .../protocols/BundledResourceProcessor.java | 12 ++++-- .../internal/protocols/FileProcessor.java | 11 +++-- .../src/main/java/org/testng/SuiteRunner.java | 3 +- .../src/main/java/org/testng/TestRunner.java | 18 ++++---- .../testng/internal/DataProviderLoader.java | 13 +++++- .../org/testng/internal/NoOpTestClass.java | 41 ++++++++++--------- .../main/java/org/testng/internal/Yaml.java | 2 +- .../org/testng/reporters/VerboseReporter.java | 10 ++++- .../org/testng/xml/TestNGContentHandler.java | 11 +++-- 12 files changed, 92 insertions(+), 48 deletions(-) diff --git a/testng-collections/src/main/java/org/testng/util/Strings.java b/testng-collections/src/main/java/org/testng/util/Strings.java index 452f56f2..5ec081bf 100644 --- a/testng-collections/src/main/java/org/testng/util/Strings.java +++ b/testng-collections/src/main/java/org/testng/util/Strings.java @@ -33,7 +33,7 @@ public final class Strings { if (list.isEmpty()) { return true; } - return list.stream().allMatch(t -> t == null || t.isBlank()); + return list.stream().allMatch(t -> t == null || t.trim().isEmpty()); } private static final Map<String, String> ESCAPE_HTML_MAP = Maps.newLinkedHashMap(); diff --git a/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java b/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java index 6669fb6a..e45ad73c 100644 --- a/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java +++ b/testng-core-api/src/main/java/org/testng/internal/PackageUtils.java @@ -1,12 +1,12 @@ package org.testng.internal; -import static java.nio.charset.StandardCharsets.UTF_8; - import java.io.File; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -114,7 +114,7 @@ public class PackageUtils { private static Function<ClassLoader, Stream<URL>> asURLs(String packageDir) { return cl -> { try { - Iterator<URL> iterator = cl.getResources(packageDir).asIterator(); + Iterator<URL> iterator = Collections.list(cl.getResources(packageDir)).iterator(); return StreamSupport.stream( Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false); } catch (IOException e) { @@ -129,7 +129,12 @@ public class PackageUtils { return true; } - String fileName = URLDecoder.decode(url.getFile(), UTF_8); + String fileName; + try { + fileName = URLDecoder.decode(url.getFile(), "UTF-8"); + } catch (UnsupportedEncodingException e) { + fileName = new String(); + } for (String classpathFrag : classpathFragments) { String path = classpathFrag + lastFragment; diff --git a/testng-core-api/src/main/java/org/testng/internal/Utils.java b/testng-core-api/src/main/java/org/testng/internal/Utils.java index 174c8ef3..30cf8b30 100644 --- a/testng-core-api/src/main/java/org/testng/internal/Utils.java +++ b/testng-core-api/src/main/java/org/testng/internal/Utils.java @@ -275,7 +275,7 @@ public final class Utils { LOG.error("Couldn't find resource on the class path: " + resourceName); return; } - try (inputStream) { + try { try (FileOutputStream outputStream = new FileOutputStream(file)) { int nread; byte[] buffer = new byte[4096]; @@ -283,6 +283,8 @@ public final class Utils { outputStream.write(buffer, 0, nread); } } + } finally { + inputStream.close(); } } diff --git a/testng-core-api/src/main/java/org/testng/internal/protocols/BundledResourceProcessor.java b/testng-core-api/src/main/java/org/testng/internal/protocols/BundledResourceProcessor.java index 79d0626b..b48f7523 100644 --- a/testng-core-api/src/main/java/org/testng/internal/protocols/BundledResourceProcessor.java +++ b/testng-core-api/src/main/java/org/testng/internal/protocols/BundledResourceProcessor.java @@ -1,7 +1,6 @@ package org.testng.internal.protocols; -import static java.nio.charset.StandardCharsets.UTF_8; - +import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLConnection; @@ -33,8 +32,13 @@ class BundledResourceProcessor extends Processor { Method thisMethod = url.openConnection().getClass().getDeclaredMethod("getFileURL", params); Object[] paramsObj = {}; URL fileUrl = (URL) thisMethod.invoke(connection, paramsObj); - return findClassesInDirPackage( - packageOnly, included, excluded, URLDecoder.decode(fileUrl.getFile(), UTF_8), recursive); + String decoded; + try { + decoded = URLDecoder.decode(fileUrl.getFile(), "UTF-8"); + } catch (UnsupportedEncodingException e) { + decoded = new String(); + } + return findClassesInDirPackage(packageOnly, included, excluded, decoded, recursive); } catch (Exception ex) { // ignore - probably not an Eclipse OSGi bundle } diff --git a/testng-core-api/src/main/java/org/testng/internal/protocols/FileProcessor.java b/testng-core-api/src/main/java/org/testng/internal/protocols/FileProcessor.java index 12b93a0e..e85fdc88 100644 --- a/testng-core-api/src/main/java/org/testng/internal/protocols/FileProcessor.java +++ b/testng-core-api/src/main/java/org/testng/internal/protocols/FileProcessor.java @@ -1,7 +1,6 @@ package org.testng.internal.protocols; -import static java.nio.charset.StandardCharsets.UTF_8; - +import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.util.List; @@ -10,11 +9,17 @@ class FileProcessor extends Processor { @Override public List<String> process(Input input, URL url) { + String decoded; + try { + decoded = URLDecoder.decode(url.getFile(), "UTF-8"); + } catch (UnsupportedEncodingException e) { + decoded = new String(); + } return findClassesInDirPackage( input.getPackageWithoutWildCards(), input.getIncluded(), input.getExcluded(), - URLDecoder.decode(url.getFile(), UTF_8), + decoded, input.isRecursive()); } } diff --git a/testng-core/src/main/java/org/testng/SuiteRunner.java b/testng-core/src/main/java/org/testng/SuiteRunner.java index 452e5711..dfa87c80 100644 --- a/testng-core/src/main/java/org/testng/SuiteRunner.java +++ b/testng-core/src/main/java/org/testng/SuiteRunner.java @@ -818,8 +818,7 @@ public class SuiteRunner implements ISuite, ISuiteRunnerListener { TestListenersContainer(List<ITestListener> listeners, ITestListener exitCodeListener) { this.listeners.addAll(listeners); - this.exitCodeListener = - Objects.requireNonNullElseGet(exitCodeListener, () -> new ITestListener() {}); + this.exitCodeListener = exitCodeListener != null ? exitCodeListener : new ITestListener() {}; } } } diff --git a/testng-core/src/main/java/org/testng/TestRunner.java b/testng-core/src/main/java/org/testng/TestRunner.java index 8f8085c0..b051d8ac 100644 --- a/testng-core/src/main/java/org/testng/TestRunner.java +++ b/testng-core/src/main/java/org/testng/TestRunner.java @@ -7,6 +7,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -557,11 +558,13 @@ public class TestRunner } private static ITestNGMethod[] beforeClassConfigMethods(ITestClass tc) { - return ITestClassConfigInfo.allBeforeClassMethods(tc).toArray(ITestNGMethod[]::new); + List<ITestNGMethod> methodsList = ITestClassConfigInfo.allBeforeClassMethods(tc); + return methodsList.toArray(new ITestNGMethod[methodsList.size()]); } private static ITestNGMethod[] afterClassConfigMethods(ITestClass tc) { - return ITestClassConfigInfo.allAfterClassMethods(tc).toArray(ITestNGMethod[]::new); + List<ITestNGMethod> methodsList = ITestClassConfigInfo.allAfterClassMethods(tc); + return methodsList.toArray(new ITestNGMethod[methodsList.size()]); } private ITestNGMethod[] computeAndGetAllTestMethods() { @@ -1045,11 +1048,12 @@ public class TestRunner @Override public List<IConfigurationListener> getConfigurationListeners() { - return m_configurationListeners.stream() - .map(ClassBasedWrapper::wrap) - .distinct() - .map(ClassBasedWrapper::unWrap) - .collect(Collectors.toUnmodifiableList()); + return Collections.unmodifiableList( + m_configurationListeners.stream() + .map(ClassBasedWrapper::wrap) + .distinct() + .map(ClassBasedWrapper::unWrap) + .collect(Collectors.toList())); } private void logFailedTest(ITestResult tr, boolean withinSuccessPercentage) { diff --git a/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java b/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java index 8f27cf32..85aeb936 100644 --- a/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java +++ b/testng-core/src/main/java/org/testng/internal/DataProviderLoader.java @@ -2,6 +2,8 @@ package org.testng.internal; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import org.testng.log4testng.Logger; public class DataProviderLoader extends ClassLoader { @@ -29,7 +31,16 @@ public class DataProviderLoader extends ClassLoader { byte[] classBytes; try { - classBytes = in.readAllBytes(); + List<Byte> byteList = new ArrayList<>(); + int byteRead; + while ((byteRead = in.read()) != -1) { + byteList.add((byte) byteRead); + } + classBytes = new byte[byteList.size()]; + int i = 0; + for (Byte b : byteList) { + classBytes[i++] = b; + } } catch (IOException e) { throw new ClassNotFoundException("ERROR reading class file" + e); } diff --git a/testng-core/src/main/java/org/testng/internal/NoOpTestClass.java b/testng-core/src/main/java/org/testng/internal/NoOpTestClass.java index bb3feb3b..dc406f92 100644 --- a/testng-core/src/main/java/org/testng/internal/NoOpTestClass.java +++ b/testng-core/src/main/java/org/testng/internal/NoOpTestClass.java @@ -1,6 +1,7 @@ package org.testng.internal; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.testng.ITestClass; import org.testng.ITestNGMethod; @@ -39,16 +40,16 @@ public class NoOpTestClass implements ITestClass, IObject { public NoOpTestClass(ITestClass testClass) { m_testClass = testClass.getRealClass(); - m_beforeSuiteMethods = List.of(testClass.getBeforeSuiteMethods()); - m_beforeTestConfMethods = List.of(testClass.getBeforeTestConfigurationMethods()); + m_beforeSuiteMethods = Arrays.asList(testClass.getBeforeSuiteMethods()); + m_beforeTestConfMethods = Arrays.asList(testClass.getBeforeTestConfigurationMethods()); m_beforeGroupsMethods = testClass.getBeforeGroupsMethods(); - m_beforeClassMethods = List.of(testClass.getBeforeClassMethods()); - m_beforeTestMethods = List.of(testClass.getBeforeTestMethods()); - m_afterSuiteMethods = List.of(testClass.getAfterSuiteMethods()); - m_afterTestConfMethods = List.of(testClass.getAfterTestConfigurationMethods()); - m_afterGroupsMethods = List.of(testClass.getAfterGroupsMethods()); - m_afterClassMethods = List.of(testClass.getAfterClassMethods()); - m_afterTestMethods = List.of(testClass.getAfterTestMethods()); + m_beforeClassMethods = Arrays.asList(testClass.getBeforeClassMethods()); + m_beforeTestMethods = Arrays.asList(testClass.getBeforeTestMethods()); + m_afterSuiteMethods = Arrays.asList(testClass.getAfterSuiteMethods()); + m_afterTestConfMethods = Arrays.asList(testClass.getAfterTestConfigurationMethods()); + m_afterGroupsMethods = Arrays.asList(testClass.getAfterGroupsMethods()); + m_afterClassMethods = Arrays.asList(testClass.getAfterClassMethods()); + m_afterTestMethods = Arrays.asList(testClass.getAfterTestMethods()); m_instances = IObject.objects(testClass, true); m_instanceHashes = IObject.instanceHashCodes(testClass); m_xmlTest = testClass.getXmlTest(); @@ -56,35 +57,35 @@ public class NoOpTestClass implements ITestClass, IObject { } public void setBeforeTestMethods(ITestNGMethod[] beforeTestMethods) { - m_beforeTestMethods = List.of(beforeTestMethods); + m_beforeTestMethods = Arrays.asList(beforeTestMethods); } public void setAfterTestMethod(ITestNGMethod[] afterTestMethods) { - m_afterTestMethods = List.of(afterTestMethods); + m_afterTestMethods = Arrays.asList(afterTestMethods); } /** @return Returns the afterClassMethods. */ @Override public ITestNGMethod[] getAfterClassMethods() { - return m_afterClassMethods.toArray(ITestNGMethod[]::new); + return m_afterClassMethods.toArray(new ITestNGMethod[m_afterClassMethods.size()]); } /** @return Returns the afterTestMethods. */ @Override public ITestNGMethod[] getAfterTestMethods() { - return m_afterTestMethods.toArray(ITestNGMethod[]::new); + return m_afterTestMethods.toArray(new ITestNGMethod[m_afterTestMethods.size()]); } /** @return Returns the beforeClassMethods. */ @Override public ITestNGMethod[] getBeforeClassMethods() { - return m_beforeClassMethods.toArray(ITestNGMethod[]::new); + return m_beforeClassMethods.toArray(new ITestNGMethod[m_beforeClassMethods.size()]); } /** @return Returns the beforeTestMethods. */ @Override public ITestNGMethod[] getBeforeTestMethods() { - return m_beforeTestMethods.toArray(ITestNGMethod[]::new); + return m_beforeTestMethods.toArray(new ITestNGMethod[m_beforeTestMethods.size()]); } /** @return Returns the testMethods. */ @@ -95,22 +96,22 @@ public class NoOpTestClass implements ITestClass, IObject { @Override public ITestNGMethod[] getBeforeSuiteMethods() { - return m_beforeSuiteMethods.toArray(ITestNGMethod[]::new); + return m_beforeSuiteMethods.toArray(new ITestNGMethod[m_beforeSuiteMethods.size()]); } @Override public ITestNGMethod[] getAfterSuiteMethods() { - return m_afterSuiteMethods.toArray(ITestNGMethod[]::new); + return m_afterSuiteMethods.toArray(new ITestNGMethod[m_afterSuiteMethods.size()]); } @Override public ITestNGMethod[] getBeforeTestConfigurationMethods() { - return m_beforeTestConfMethods.toArray(ITestNGMethod[]::new); + return m_beforeTestConfMethods.toArray(new ITestNGMethod[m_beforeTestConfMethods.size()]); } @Override public ITestNGMethod[] getAfterTestConfigurationMethods() { - return m_afterTestConfMethods.toArray(ITestNGMethod[]::new); + return m_afterTestConfMethods.toArray(new ITestNGMethod[m_afterTestConfMethods.size()]); } /** @return all @Configuration methods that should be invoked before certain groups */ @@ -122,7 +123,7 @@ public class NoOpTestClass implements ITestClass, IObject { /** @return all @Configuration methods that should be invoked after certain groups */ @Override public ITestNGMethod[] getAfterGroupsMethods() { - return m_afterGroupsMethods.toArray(ITestNGMethod[]::new); + return m_afterGroupsMethods.toArray(new ITestNGMethod[m_afterGroupsMethods.size()]); } /** @see org.testng.internal.IObject#getInstanceHashCodes() */ diff --git a/testng-core/src/main/java/org/testng/internal/Yaml.java b/testng-core/src/main/java/org/testng/internal/Yaml.java index da3d2141..eb0e37f1 100644 --- a/testng-core/src/main/java/org/testng/internal/Yaml.java +++ b/testng-core/src/main/java/org/testng/internal/Yaml.java @@ -140,7 +140,7 @@ public final class Yaml { /** Convert a XmlTest into YAML */ private static void toYaml(StringBuilder result, XmlTest t) { - String sp2 = " ".repeat(2); + String sp2 = new String(" "); result.append(" ").append("- name: ").append(t.getName()).append("\n"); maybeAdd(result, sp2, "verbose", t.getVerbose(), XmlSuite.DEFAULT_VERBOSE); diff --git a/testng-core/src/main/java/org/testng/reporters/VerboseReporter.java b/testng-core/src/main/java/org/testng/reporters/VerboseReporter.java index 450c5525..747802fc 100644 --- a/testng-core/src/main/java/org/testng/reporters/VerboseReporter.java +++ b/testng-core/src/main/java/org/testng/reporters/VerboseReporter.java @@ -206,7 +206,7 @@ public class VerboseReporter implements IConfigurationListener, ITestListener { sb.append(" ms"); if (!Utils.isStringEmpty(tm.getDescription())) { sb.append("\n"); - sb.append(" ".repeat(Math.max(0, identLevel))); + sb.append(repeatString(" ", Math.max(0, identLevel))); sb.append(tm.getDescription()); } if (tm.getInvocationCount() > 1) { @@ -271,6 +271,14 @@ public class VerboseReporter implements IConfigurationListener, ITestListener { return buf.toString(); } + private static String repeatString(String str, int count) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < count; i++) { + sb.append(str); + } + return sb.toString(); + } + @Override public String toString() { return "VerboseReporter{" + "suiteName=" + suiteName + '}'; diff --git a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java index 74c1e10a..463d8467 100644 --- a/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java +++ b/testng-core/src/main/java/org/testng/xml/TestNGContentHandler.java @@ -5,6 +5,7 @@ import static org.testng.internal.Utils.isStringBlank; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URI; @@ -12,7 +13,6 @@ import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -158,8 +158,13 @@ public class TestNGContentHandler extends DefaultHandler { private static boolean isMalformedFileSystemBasedSystemId(String systemId) { try { - - URL url = new URL(URLDecoder.decode(systemId, StandardCharsets.UTF_8).trim()); + String decoded; + try { + decoded = URLDecoder.decode(systemId, "UTF-8"); + } catch (UnsupportedEncodingException e) { + decoded = new String(); + } + URL url = new URL(decoded.trim()); if (url.getProtocol().equals("file")) { File file = new File(url.getFile()); boolean isDirectory = file.isDirectory(); -- 2.44.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.nugp4p/_old 2024-04-17 14:45:43.790837131 +0200 +++ /var/tmp/diff_new_pack.nugp4p/_new 2024-04-17 14:45:43.794837278 +0200 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="disabled"> <param name="scm">git</param> <param name="url">https://github.com/cbeust/testng.git</param> - <param name="revision">7.4.0</param> + <param name="revision">7.10.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="exclude">bin*</param> <param name="exclude">gradle*</param> ++++++ testng-7.10.1.pom ++++++ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- This module was also published with a richer model, Gradle metadata, --> <!-- which should be used instead. Do not delete the following line which --> <!-- is to indicate to Gradle or any Gradle module metadata file consumer --> <!-- that they should prefer consuming it instead. --> <!-- do_not_remove: published-with-gradle-metadata --> <modelVersion>4.0.0</modelVersion> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.10.1</version> <name>testng</name> <description>Testing framework for Java</description> <url>https://testng.org</url> <licenses> <license> <name>Apache License, Version 2.0</name> <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <id>cbeust</id> <name>Cedric Beust</name> <email>[email protected]</email> </developer> <developer> <id>juherr</id> <name>Julien Herr</name> <email>[email protected]</email> </developer> <developer> <id>krmahadevan</id> <name>Krishnan Mahadevan</name> <email>[email protected]</email> </developer> </developers> <scm> <connection>scm:git:https://github.com/testng-team/testng.git</connection> <url>https://github.com/testng-team/testng.git</url> </scm> <issueManagement> <system>Github</system> <url>https://github.com/testng-team/testng/issues</url> </issueManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </dependency> <dependency> <groupId>com.beust</groupId> <artifactId>jcommander</artifactId> <version>1.82</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.7.1</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>5.1.0</version> <optional>true</optional> </dependency> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>2.2</version> <scope>runtime</scope> <optional>true</optional> </dependency> </dependencies> </project> ++++++ testng-7.4.0.tar.xz -> testng-7.10.1.tar.xz ++++++ ++++ 280852 lines of diff (skipped) ++++++ testng-build.xml ++++++ --- /var/tmp/diff_new_pack.nugp4p/_old 2024-04-17 14:45:44.690870180 +0200 +++ /var/tmp/diff_new_pack.nugp4p/_new 2024-04-17 14:45:44.690870180 +0200 @@ -11,17 +11,34 @@ <property name="project.groupId" value="org.testng"/> <property name="project.artifactId" value="testng"/> <property name="project.name" value="TestNG"/> - <property name="project.version" value="7.4.0"/> - <property name="project.description" value="TestNG is a testing framework."/> + <property name="project.version" value="7.10.1"/> + <property name="project.description" value="${project.name} is a testing framework."/> - <property name="compiler.source" value="1.8"/> + <property name="compiler.release" value="8"/> + <property name="compiler.source" value="1.${compiler.release}"/> <property name="compiler.target" value="${compiler.source}"/> <property name="build.finalName" value="${project.artifactId}-${project.version}"/> <property name="build.dir" value="target"/> <property name="build.outputDir" value="${build.dir}/classes"/> - <property name="build.srcDir" value="src/main/java"/> - <property name="build.resourceDir" value="src/main/resources"/> + <property name="build.srcDir" value="testng/src/main/java"/> + <property name="build.srcDirCoreApi" value="testng-core-api/src/main/java"/> + <property name="build.srcDirReflectionUtils" value="testng-reflection-utils/src/main/java"/> + <property name="build.srcDirAsserts" value="testng-asserts/src/main/java"/> + <property name="build.srcDirTestOsgi" value="testng-test-osgi/src/main/java"/> + <property name="build.srcDirTestKit" value="testng-test-kit/src/main/java"/> + <property name="build.srcDirRunnerApi" value="testng-runner-api/src/main/java"/> + <property name="build.srcDirCollections" value="testng-collections/src/main/java"/> + <property name="build.srcDirCore" value="testng-core/src/main/java"/> + <property name="build.resourceDir" value="testng/src/main/resources"/> + <property name="build.resourceDirCoreApi" value="testng-core-api/src/main/resources"/> + <property name="build.resourceDirReflectionUtils" value="testng-reflection-utils/src/main/resources"/> + <property name="build.resourceDirAsserts" value="testng-asserts/src/main/resources"/> + <property name="build.resourceDirTestOsgi" value="testng-test-osgi/src/main/resources"/> + <property name="build.resourceDirTestKit" value="testng-test-kit/src/main/resources"/> + <property name="build.resourceDirRunnerApi" value="testng-runner-api/src/main/resources"/> + <property name="build.resourceDirCollections" value="testng-collections/src/main/resources"/> + <property name="build.resourceDirCore" value="testng-core/src/main/resources"/> <property name="reporting.outputDirectory" value="${build.dir}/site"/> @@ -56,17 +73,24 @@ encoding="utf-8" optimize="false" deprecation="true" + release="${compiler.release}" target="${compiler.target}" verbose="false" fork="false" source="${compiler.source}"> <src> - <pathelement location="${build.srcDir}"/> + <pathelement location="${build.srcDirCoreApi}"/> + <pathelement location="${build.srcDirReflectionUtils}"/> + <pathelement location="${build.srcDirAsserts}"/> + <pathelement location="${build.srcDirTestKit}"/> + <pathelement location="${build.srcDirRunnerApi}"/> + <pathelement location="${build.srcDirCollections}"/> + <pathelement location="${build.srcDirCore}"/> </src> <classpath refid="build.classpath"/> </javac> <copy todir="${build.outputDir}"> - <fileset dir="${build.resourceDir}"/> + <fileset dir="${build.resourceDirCore}"/> </copy> </target> @@ -75,7 +99,7 @@ <!-- ====================================================================== --> <target name="javadoc" description="Generates the Javadoc of the application"> - <javadoc sourcepath="${build.srcDir}" + <javadoc sourcepath="${build.srcDirCoreApi}:${build.srcDirReflectionUtils}:${build.srcDirAsserts}:${build.srcDirTestKit}:${build.srcDirRunnerApi}:${build.srcDirCollections}:${build.srcDirCore}" packagenames="*" destdir="${reporting.outputDirectory}/apidocs" access="protected" @@ -110,18 +134,27 @@ basedir="${build.outputDir}" excludes="**/package.html"> <manifest> + <attribute name="Automatic-Module-Name" value="org.testng"/> <attribute name="Bundle-Description" value="${project.description}"/> <attribute name="Bundle-License" value="http://apache.org/licenses/LICENSE-2.0"/> <attribute name="Bundle-ManifestVersion" value="2"/> <attribute name="Bundle-Name" value="${project.name}"/> <attribute name="Bundle-SymbolicName" value="${project.groupId}"/> <attribute name="Bundle-Version" value="${project.version}"/> - <attribute name="Export-Package" value="com.beust.testng;uses:="org.testng";version="${project.version}",org.testng;uses:="com.beust.jcommander,com.beust.jcommander.converters,com.google.inject,javax.xml.parsers,org.apache.tools.ant,org.apache.tools.ant.taskdefs,org.apache.tools.ant.types,org.testng.annotations,org.testng.internal,org.testng.internal.annotations,org.testng.internal.junit,org.testng.internal.thread.graph,org.testng.xml,org.xml.sax";version="${project.version}",org.testng.annotations;uses:="com.google.inject,org.testng,org.testng.internal.annotations";version="${project.version}",org.testng.asserts;version="${project.version}",org.testng.collections;version="${project.version}",org.testng.internal;uses:="com.google.inject,javax.annotation,org.testng,org.testng.annotations,org.testng.collections,org.testng.internal.annotations,org.testng.internal.thread,org.testng.internal.thre ad.graph,org.testng.junit,org.testng.reporters,org.testng.xml";version="${project.version}",org.testng.internal.annotations;uses:="org.testng,org.testng.annotations,org.testng.internal,org.testng.xml";version="${project.version}",org.testng.internal.collections;version="${project.version}",org.testng.internal.invokers;uses:="org.testng";version="${project.version}",org.testng.internal.junit;version="${project.version}",org.testng.internal.reflect;uses:="org.testng";version="${project.version}",org.testng.internal.thread;version="${project.version}",org.testng.internal.thread.graph;uses:="org.testng,org.testng.internal";version="${project.version}",org.testng.junit;uses:="junit.framework,org.junit.runner,org.testng,org.testng.internal,org.testng.internal.annotations,org.testng.xml";version="${project.version}",org.testng.log;version="${ project.version}",org.testng.log4testng;version="${project.version}",org.testng.mustache;version="${project.version}",org.testng.reporters;uses:="javax.annotation,org.testng,org.testng.internal,org.testng.xml";version="${project.version}",org.testng.reporters.jq;uses:="org.testng,org.testng.reporters,org.testng.xml";version="${project.version}",org.testng.reporters.util;uses:="org.testng";version="${project.version}",org.testng.util;uses:="org.testng";version="${project.version}",org.testng.xml;uses:="org.testng,org.testng.reporters,org.testng.xml.dom,org.xml.sax,org.xml.sax.helpers";version="${project.version}",org.testng.xml.dom;uses:="javax.xml.parsers,javax.xml.xpath,org.testng,org.testng.internal.collections,org.testng.xml,org.w3c.dom,org.xml.sax";version="${project.version}",org.testng.xml.internal;uses:="org.testng.xml";ver sion="${project.version}""/> - <attribute name="Import-Package" value="com.beust.jcommander;version="[1.7.0,3.0.0)",com.beust.jcommander.converters;version="[1.7.0,3.0.0)",bsh;version="[2.0.0,3.0.0)";resolution:=optional,com.google.inject;version="[1.2,1.3)";resolution:=optional,junit.framework;version="[3.8.1,5.0.0)";resolution:=optional,org.junit;resolution:=optional;version="[4.12,5)",org.junit.runner;resolution:=optional;version="[4.12,5)",org.junit.runner.manipulation;resolution:=optional;version="[4.12,5)",org.junit.runner.notification;resolution:=optional;version="[4.12,5)",org.apache.tools.ant;version="[1.7.0,2.0.0)";resolution:=optional,org.apache.tools.ant.taskdefs;version="[1.7.0,2.0.0)";resolution:=optional,org.apache.tools.ant.types;version="[1.7.0,2.0.0)";resolution:=optional,org.apache.tools.ant.types.resources;version="[1.7.0,2.0.0)";resolution:=optional,org.apa che.tools.ant.types.selectors;version="[1.7.0,2.0.0)";resolution:=optional,org.yaml.snakeyaml;version="[1.6,2.0)";resolution:=optional,org.yaml.snakeyaml.constructor;version="[1.6,2.0)";resolution:=optional,org.yaml.snakeyaml.nodes;version="[1.6,2.0)";resolution:=optional,javax.annotation,javax.xml.parsers,javax.xml.xpath,org.w3c.dom,org.xml.sax,org.xml.sax.helpers"/> + <attribute name="Export-Package" value="org.testng,org.testng.annotations,org.testng.asserts,org.testng.collections,org.testng.internal,org.testng.internal.annotations,org.testng.internal.collections,org.testng.internal.invokers,org.testng.internal.invokers.objects,org.testng.internal.objects,org.testng.internal.objects.pojo,org.testng.internal.reflect,org.testng.internal.thread,org.testng.internal.thread.graph,org.testng.log,org.testng.log4testng,org.testng.reporters,org.testng.reporters.jq,org.testng.reporters.util,org.testng.thread,org.testng.util,org.testng.xml,org.testng.xml.internal"/> + <attribute name="Implementation-Title" value="${project.name}"/> + <attribute name="Implementation-Url" value="https://testng.org"/> + <attribute name="Implementation-Vendor-Id" value="${project.groupId}"/> + <attribute name="Implementation-Vendor" value="${project.name}"/> + <attribute name="Implementation-Version" value="${project.version}"/> + <attribute name="Import-Package" value="*;resolution:=optional,bsh.*;version="[2.0.0,3.0.0)";resolution:=optional,com.beust.jcommander.*;version="[1.7.0,3.0.0)";resolution:=optional,com.google.inject.*;version="[1.2,1.3)";resolution:=optional,org.yaml.*;version="[1.6,2.0)";resolution:=optional"/> <attribute name="JavaPackages-ArtifactId" value="${project.artifactId}"/> <attribute name="JavaPackages-GroupId" value="${project.groupId}"/> <attribute name="JavaPackages-Version" value="${project.version}"/> <attribute name="Require-Capability" value="osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=${compiler.target}))""/> + <attribute name="Specification-Title" value="${project.name}"/> + <attribute name="Specification-Vendor" value="${project.name}"/> + <attribute name="Specification-Version" value="${project.version}"/> </manifest> </jar> </target>
