RFR: 8325089: jpackage utility creates an "infinite", undeleteable directory tree [v12]

Alexey Semenyuk asemenyuk at openjdk.org
Wed Oct 30 14:13:06 UTC 2024


On Wed, 30 Oct 2024 13:32:22 GMT, Alexey Semenyuk <asemenyuk at openjdk.org> wrote:

>> Make jpackage correctly handle the output directory (`--dest`) that is:
>>  - a subdirectory of the input directory;
>>  - the same as the input directory.
>> 
>> Make jpackage correctly handle temp directory (`--temp`) that is:
>>  - a subdirectory of the input directory.
>> 
>> jpackage will produce an app image or a package in the above directory configurations without running in an infinite loop.
>> 
>> The new test/jdk/tools/jpackage/share/InOutPathTest.java test covers all the above scenarios.
>> 
>> `IOUtils.copyRecursive()` fixed to never run in a recursive loop by building the list of non-recursive file/dir copy commands and executing them outside the recursive directory tree traversal.
>> 
>> src/jdk.jpackage/share/classes/jdk/jpackage/internal/Arguments.java, src/jdk.jpackage/share/classes/jdk/jpackage/internal/DeployParams.java, src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java, test/jdk/tools/jpackage/junit/jdk.jpackage/jdk/jpackage/internal/DeployParamsTest.java files fixed to get rid of `DeployParams.input` and `DeployParams.output` fields and replace them with the new `StandardBundlerParam.OUTPUT_DIR` param.
>> 
>> The above changes altered the logic of configuring the output directory, thus added a new `BasicTest.testNoOutputDir()` test to test jpackage without `--dest` parameter. This required adding new API to test helper classes.
>
> Alexey Semenyuk has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Bugfix
>  - Rename DirectoryContentVerifier.equals() in DirectoryContentVerifier.match() to fix name conflict with Object.equals()

- added `TKit.DirectoryContentVerifier` class to verify directory content. DirectoryContentVerifierTest tests `TKit.DirectoryContentVerifier`
- added OSX bundle structure checks to `JPackageCommand` using `TKit.DirectoryContentVerifier` API. This results in the new test log messages for every successful jpackage command execution, e.g.:

[13:56:44.123] TRACE: assertDirectoryContentEquals(./test.1f844f72/input/out/InOutPathTest.app): Expected [Contents]
[13:56:44.123] TRACE: assertDirectoryContentEquals(./test.1f844f72/input/out/InOutPathTest.app/Contents): Expected [Info.plist, MacOS, PkgInfo, Resources, _CodeSignature, app, runtime]

- adjusted InOutPathTest for OSX specifics
- altered modifier order using `blessed-modifier-order.sh` script in modified test sources.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21550#issuecomment-2447297514


More information about the core-libs-dev mailing list