Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TCK Signature Tests failing on Windows + JDK Semaru #327

Open
KyleAure opened this issue Apr 5, 2022 · 2 comments
Open

TCK Signature Tests failing on Windows + JDK Semaru #327

KyleAure opened this issue Apr 5, 2022 · 2 comments

Comments

@KyleAure
Copy link

KyleAure commented Apr 5, 2022

The failure is due to the Signature Test plugin failing to run in static mode because it does not recognize or thinks that a specifc argument is missing. This leads it to just output the "Help" message instead of running.

Example output:

Calling:  com.sun.tdk.signaturetest.SignatureTest() with following args:
   testArguments[0] = -Static
   testArguments[1] = -CheckValue
   testArguments[2] = -mode
   testArguments[3] = src
   testArguments[4] = -Verbose
   testArguments[5] = -FileName
   testArguments[6] = C:\Users\x\AppData\Local\Temp\jakarta.json.bind.sig_3.0.0
   testArguments[7] = -Classpath
   testArguments[8] = C:\Users\x\...\results\tck_defaultServer/signaturedirectory/jakarta.json.bind-api.jar:C:\Users\x\...\results\tck_defaultServer/jdk11-bundle/java.base:C:\Users\x\...\results\tck_defaultServer/jdk11-bundle/java.rmi:C:\Users\x\...\results\tck_defaultServer/jdk11-bundle/java.sql:C:\Users\x\...\results\tck_defaultServer/jdk11-bundle/java.naming
   testArguments[9] = -Package
   testArguments[10] = jakarta.json.bind
   testArguments[11] = -Exclude
   testArguments[12] = jakarta.json.bind.adapter
   testArguments[13] = -Exclude
   testArguments[14] = jakarta.json.bind.annotation
   testArguments[15] = -Exclude
   testArguments[16] = jakarta.json.bind.config
   testArguments[17] = -Exclude
   testArguments[18] = jakarta.json.bind.serializer
   testArguments[19] = -Exclude
   testArguments[20] = jakarta.json.bind.spi
   testArguments[21] = -IgnoreJDKClass
   testArguments[22] = java.util.Map
   testArguments[23] = -IgnoreJDKClass
   testArguments[24] = java.lang.Object
   testArguments[25] = -IgnoreJDKClass
   testArguments[26] = java.io.ByteArrayInputStream
   testArguments[27] = -IgnoreJDKClass
   testArguments[28] = java.io.InputStream
   testArguments[29] = -IgnoreJDKClass
   testArguments[30] = java.lang.Deprecated
   testArguments[31] = -IgnoreJDKClass
   testArguments[32] = java.io.Writer
   testArguments[33] = -IgnoreJDKClass
   testArguments[34] = java.io.OutputStream
   testArguments[35] = -IgnoreJDKClass
   testArguments[36] = java.util.List
   testArguments[37] = -IgnoreJDKClass
   testArguments[38] = java.util.Collection
   testArguments[39] = -IgnoreJDKClass
   testArguments[40] = java.lang.instrument.IllegalClassFormatException
   testArguments[41] = -IgnoreJDKClass
   testArguments[42] = javax.transaction.xa.XAException
   testArguments[43] = -IgnoreJDKClass
   testArguments[44] = java.lang.annotation.Repeatable
   testArguments[45] = -IgnoreJDKClass
   testArguments[46] = java.lang.InterruptedException
   testArguments[47] = -IgnoreJDKClass
   testArguments[48] = java.lang.CloneNotSupportedException
   testArguments[49] = -IgnoreJDKClass
   testArguments[50] = java.lang.Throwable
   testArguments[51] = -IgnoreJDKClass
   testArguments[52] = java.lang.Thread
   testArguments[53] = -IgnoreJDKClass
   testArguments[54] = java.lang.Enum
   testArguments[55] = -ApiVersion
   testArguments[56] = 3.0.0
Test - SignatureTest version 2.2
Available options are:
------------------
-Static           Run SignatureTest in static mode (default: reflection)
-Mode [src|bin]   Select checking mode - source code or binary (default: source)
-Backward | -B    Backward compatibility checking (default: mutual compatibility)
-Classpath <path> Specify search path for tested classes in static mode
-FileName <file>  Specify signature file name
or
-Files <filelist> Specify list of signature files. Use ; to separate files.
-Package <name>   Specify package to be tested along with subpackages
-FormatHuman | -H Human readable error output
-Out <file>       Specify report file name
------------------
-TestURL <url>    Specify URL of signature file
-PackageWithoutSubpackages <name> Specify package to be tested excluding subpackages
-Exclude <name>   Specify package or class, which is not required to be tested
-NoMerge          Cancels default merging according to the JSR 68 rules (see User's Guide)
-Update <file>    Specify update file
-IgnoreJDKClass <name>   Specify JDK package or class, which is not required to be tested
-ApiVersion <str> Set API version for report
-CheckValue       Check values of primitive constants (static mode only)
-FormatPlain      Do not sort error messages
-ExtensibleInterfaces Allow extensible interfaces for backward compatibility checking 
------------------
-ClassCacheSize <numb>  Specify size of class cache (default value is 1,024). Actual in static mode only.
-Verbose          Enable error diagnostics for inherited class members
-Debug            Enable debug mode (prints stack trace)
-ErrorAll         Specifies to make the test more strict by upgrading certain warnings to errors
------------------
-Version          Print version information
-Help             Print this text
------------------
All options are case-insensitive.
********** Status Report 'jakarta.json.bind' **********
********** Package 'jakarta.json.bind' - FAILED (STATIC MODE) **********

In the end all the static tests fail, while all the reflective tests run and pass:

Some signatures failed.
	Failed packages listed below: 
		jakarta.json.bind(static mode)
		jakarta.json.bind.adapter(static mode)
		jakarta.json.bind.annotation(static mode)
		jakarta.json.bind.config(static mode)
		jakarta.json.bind.serializer(static mode)
		jakarta.json.bind.spi(static mode)
	Passed packages listed below: 
		jakarta.json.bind(reflection mode)
		jakarta.json.bind.adapter(reflection mode)
		jakarta.json.bind.annotation(reflection mode)
		jakarta.json.bind.config(reflection mode)
		jakarta.json.bind.serializer(reflection mode)
		jakarta.json.bind.spi(reflection mode)

I ran the TCK again and forced the TCK to use the Signature Test 1.6 plugin instead of 1.4 and the failure still happens.

@gjwatts
Copy link

gjwatts commented Nov 23, 2023

Seeing this same behavior with Temurin 17 (build 17.0.4+8) and Temurin 11 (build 11.0.20+8).

@gjwatts
Copy link

gjwatts commented Nov 23, 2023

Also noticed a couple of path errors when running the signature tests in standalone:

mvn verify -D"test=ee.jakarta.tck.json.bind.signaturetest.jsonb.JSONBSigTest"
Warning: incorrect classpath parameter: C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target/signaturedirectory/jakarta.json.bind-api.jar:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target/jdk-bundle/java.base:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target/jdk-bundle/java.rmi:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target/jdk-bundle/java.sql:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target/jdk-bundle/java.naming (java.nio.file.InvalidPathException: Illegal char <:> at index 112: C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target\signaturedirectory\jakarta.json.bind-api.jar:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target\jdk-bundle\java.base:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target\jdk-bundle\java.rmi:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target\jdk-bundle\java.sql:C:\Users\greg\tck\jakarta-jsonb-tck-3.0.0\jsonb-tck\bin\target\jdk-bundle\java.naming). This directory or jar file will be ignored!
  1. The colon : is being used as a classpath file/directory separator and on Windows it should be a semi-colon instead ;
  2. Some of the slashes used in the classpath generation face the wrong way on Windows. They are forward slashes / and should be back slashes \.

I think Windows might automatically handle the wrong slash directions, but it would be nice to change to be consistent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants