jakartaee / jakartaee/jsonb-api

TCK Signature Tests failing on Windows + JDK Semaru

Open
#327 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
95
Forks
41
Avg merge
1d 6h
Merged PRs (30d)
35

Description

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:
```txt
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 Specify search path for tested classes in static mode
-FileName Specify signature file name
or
-Files Specify list of signature files. Use ; to separate files.
-Package Specify package to be tested along with subpackages
-FormatHuman | -H Human readable error output
-Out Specify report file name
------------------
-TestURL Specify URL of signature file
-PackageWithoutSubpackages Specify package to be tested excluding subpackages
-Exclude 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 Specify update file
-IgnoreJDKClass Specify JDK package or class, which is not required to be tested
-ApiVersion 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 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:

```txt
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.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the Jakarta JSON Binding TCK on Windows with JDK Semaru and inspect the SignatureTest invocation in static mode, especially its classpath separators and arguments. Use the reported Signature Test output as the initial failure point; done means all static signature tests pass while the reflective tests continue to pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.