[
https://issues.apache.org/jira/browse/THRIFT-6190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116706#comment-18116706
]
Jens Geyer commented on THRIFT-6190:
------------------------------------
The PR does what the description proposes, with two differences:
* It runs all three tests in {{lib/javame/test}}, not only
{{TestRecursionDepth}}. {{TestSkipDepth}} and {{TestDeclaredLengthLimits}}
landed the day after this was filed.
* The test step runs every {{test/Test*.java}}, so a test added later is picked
up without touching the workflow.
The {{LANGUAGES.md}} link to the nonexistent {{lib/javame/README.md}}, noted at
the end of the description, has since been fixed by 61ffe58f6.
_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._
> Add a compile and test check for the JavaME library
> ---------------------------------------------------
>
> Key: THRIFT-6190
> URL: https://issues.apache.org/jira/browse/THRIFT-6190
> Project: Thrift
> Issue Type: New Feature
> Components: Build Process, JavaME - Library
> Reporter: Jens Geyer
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Nothing in the tree builds or tests the JavaME binding, and unlike the other
> bindings without a CI job, lib/javame has no build integration at all to hook
> one onto.
> * There is no lib/javame/Makefile.am and no configure.ac entry for it. The
> directory appears only in lib/Makefile.am, in EXTRA_DIST (line 115) and in a
> dist rule that removes gen-javame (line 108).
> * There is no entry in test/tests.json, so it is not part of the cross-test
> matrix either.
> * There is no CI job, and no configure flag to turn one on.
> The binding is nevertheless shipped in the release tarball. It has therefore
> never been compiled by any build in this repository. THRIFT-6036 and
> THRIFT-6055 both had to be compiled and run by hand to verify them.
> h3. Verified possible before filing
> In the thrift:jammy image with openjdk 17.0.19, using the recipe already
> documented in the header of lib/javame/test/TestRecursionDepth.java:
> {code}
> thrift --gen javame -o . test/RecursionDepth.thrift
> javac -d /tmp/jme -cp . \
> $(find src -name '*.java' ! -name 'THttpClient.java') \
> gen-javame/*.java test/TestRecursionDepth.java
> java -cp /tmp/jme TestRecursionDepth
> {code}
> The compile succeeds with only deprecation and unchecked notes, and the test
> reports "18 checks, 0 failure(s)". So a check is a matter of writing it, not
> of provisioning anything: the JDK is already in the images.
> h3. One permanent limitation, better stated up front than discovered later
> THttpClient.java imports javax.microedition.io.Connector and
> javax.microedition.io.HttpConnection, which no JDK provides. Supplying a
> CLDC/MIDP jar is not an option for an ASF build: Oracle's is proprietary and
> microemu is LGPL. A check can therefore cover 39 of the 40 source files and
> must exclude THttpClient.java, exactly as the existing test recipe does.
> h3. Scope
> This is a compile-and-smoke check, not parity with the other bindings' CI
> jobs. lib/javame has no server transport and no acceptor, and there is no
> tests.json entry, so cross tests are out of scope. What such a job would buy
> is that the binding still compiles and that its one existing test still
> passes -- which is precisely what had to be established by hand for the last
> two changes to it.
> Noticed while writing this up, and separable: LANGUAGES.md links to
> lib/javame/README.md, which does not exist.
> Compare THRIFT-6002 (netstd), THRIFT-6003 (haxe), THRIFT-6170 (D),
> THRIFT-6171 (Erlang) and THRIFT-6172 (Dart), which are the same gap in
> bindings that at least have a build harness.
> _Drafted with AI assistance (Claude Opus 5); reviewed and filed by Jens
> Geyer._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)