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

Java plugin tests fail if you have a JDK newer than 17 but != 21 #985

Closed
lengau opened this issue Jan 22, 2025 · 1 comment · Fixed by #986
Closed

Java plugin tests fail if you have a JDK newer than 17 but != 21 #985

lengau opened this issue Jan 22, 2025 · 1 comment · Fixed by #986
Assignees
Labels
Bug Something isn't working Triaged

Comments

@lengau
Copy link
Contributor

lengau commented Jan 22, 2025

Bug Description

If you have a JDK other than 21 that's newer than java 17, the tests fail.

To Reproduce

$ dpkg -l|grep openjdk
ii  openjdk-17-jdk-headless:amd64                            17.0.14~6ea-1                            amd64        OpenJDK Development Kit (JDK) (headless)
ii  openjdk-17-jre-headless:amd64                            17.0.14~6ea-1                            amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
ii  openjdk-21-jdk-headless:amd64                            21.0.6~6ea-1ubuntu2                      amd64        OpenJDK Development Kit (JDK) (headless)
ii  openjdk-21-jre-headless:amd64                            21.0.6~6ea-1ubuntu2                      amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
ii  openjdk-25-jdk:amd64                                     25~4ea-1                                 amd64        OpenJDK Development Kit (JDK)
ii  openjdk-25-jdk-headless:amd64                            25~4ea-1                                 amd64        OpenJDK Development Kit (JDK) (headless)
ii  openjdk-25-jre:amd64                                     25~4ea-1                                 amd64        OpenJDK Java runtime, using Hotspot JIT
ii  openjdk-25-jre-headless:amd64                            25~4ea-1                                 amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
pytest tests/unit/plugins/test_java_plugin.py::test_java_plugin_jre_21

part yaml

n/a

Relevant log output

$ pytest tests/unit/plugins/test_java_plugin.py::test_java_plugin_jre_21
========================================================================================= test session starts =========================================================================================
platform linux -- Python 3.11.10, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/lengau/Work/Code/craft-parts
configfile: pyproject.toml
plugins: subprocess-1.5.3, cov-5.0.0, requests-mock-1.12.1, check-2.4.1, hypothesis-6.124.2, mock-3.14.0
collected 1 item

tests/unit/plugins/test_java_plugin.py F                                                                                                                                                        [100%]

============================================================================================== FAILURES ===============================================================================================
_______________________________________________________________________________________ test_java_plugin_jre_21 _______________________________________________________________________________________

part_info = <craft_parts.infos.PartInfo object at 0x7deb502fab90>, mocker = <pytest_mock.plugin.MockerFixture object at 0x7deb502e6510>

def test_java_plugin_jre_21(part_info, mocker):

orig_check_java = JavaPlugin._check_java

def _check_java(self, javac: str):
if "21" in javac:
return None, ""
return orig_check_java(self, javac)

mocker.patch.object(JavaPlugin, "_check_java", _check_java)

properties = MavenPlugin.properties_class.unmarshal({"source": "."})
plugin = MavenPlugin(properties=properties, part_info=part_info)
env = plugin.get_build_environment()
assert len(env) == 1
>       assert "17" in env["JAVA_HOME"]
E       AssertionError: assert '17' in '/usr/lib/jvm/java-25-openjdk-amd64'

/home/lengau/Work/Code/craft-parts/tests/unit/plugins/test_java_plugin.py:61: AssertionError
======================================================================================= short test summary info =======================================================================================
FAILED tests/unit/plugins/test_java_plugin.py::test_java_plugin_jre_21 - AssertionError: assert '17' in '/usr/lib/jvm/java-25-openjdk-amd64'
@lengau lengau added Bug Something isn't working Triaged labels Jan 22, 2025
Copy link

Thank you for reporting your feedback to us!

The internal ticket has been created: https://warthogs.atlassian.net/browse/CRAFT-3997.

This message was autogenerated

lengau added a commit that referenced this issue Jan 22, 2025
@lengau lengau self-assigned this Jan 22, 2025
tigarmo added a commit that referenced this issue Feb 3, 2025
…ks in Rockcraft. (#993)

* style: autoformat

* style: fix spelling

* build(deps): fix dependencies to make tests succeed

* style: adjust pylint configuration to make lint pass

* ci: install chisel v0.10.0

* fix: chisel tests on 20.04

* style: autoformat

* style: fix spelling

* build(deps): fix dependencies to make tests succeed

* style: adjust pylint configuration to make lint pass

* ci: install chisel v0.10.0

* fix: chisel tests on 20.04

* fix: pyright

* fix(ci): 20.04 packages

* tests: create integration tests for talking to snapd

* build(deps): replace requests-unixsocket with requests-unixsocket2

Fixes #852

* fix: bump python version

* chore: bump version to 1.19.8

* tests: create integration tests for talking to snapd

* build(deps): replace requests-unixsocket with requests-unixsocket2

* fix: bump python version

* Bump version: 1.25.2 → 1.25.3

* style: fix linting errors

* feat: add an API for registering source types (#927)

This provides a pair of functions (sources.register, sources.unregister)
for registering and unregistering source types. This differs slightly
from plugin registration in current sources cannot be removed.

* build: migrate to pyproject.toml (#902)

Removes dependency on bumpversion in favor of git tags for versioning.

Co-authored-by: Sergio Schvezov <sergio.schvezov@canonical.com>

* build(deps): update dependency myst-parser to v4 (#871)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat: use "craft.git" for git where possible (#925)

If "craft.git" is available on the PATH, use it. Otherwise, fallback to "git".

Fixes #900

* doc: create new how-to on creating a plugin (#928)

* feat: add uv plugin (#930)

* fix: remove captured message on error (#937)

Signed-off-by: Sergio Schvezov <sergio.schvezov@canonical.com>

* docs: move changelog, add PR task (#942)

* docs: move changelog to reference

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

* ci: add PR task for changelog updates

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

---------

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

* feat(plugins/poetry): add poetry and pip extra args (#940)

This allows more customisation of the poetry and pip commands for advanced users.

* docs(changelog): add 2.2.0 changes (#941)

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

* doc: update docs with extra ref anchors (#945)

* tests: deduplicate tests for python-based plugins (#947)

* docs: clarify poetry-with field (#946)

Co-authored-by: Alex Lowe <alex.lowe@canonical.com>

* chore: fix some small pyproject errors, include uv.lock (#955)

The pyproject file referenced some deprecated Ruff linter rules and incorrectly formatted the git describe command parameter, which had to be an array. This commit fixes both

* fix: make uv plugin re-entrant on code changes (#956)

* fix: correct git versioning error (#957)

* build(deps): update dependency mypy to ~=1.14.1 (#958)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(docs): include poetry links as a target (#960)

This allows applications that have their own custom poetry reference to
include all the default links by adding the following to the bottom
of their poetry plugin reference:

.. include:: /common/craft-parts/reference/plugins/poetry_plugin.rst
    :start-after: .. _craft_parts_poetry_links:

Signed-off-by: Alex Lowe <alex.lowe@canonical.com>

* style: fix linting issues for ruff 0.9 (#969)

* build(deps): update bugfixes (#952)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* ci: replace Renovate config with starflow (#968)

Co-authored-by: Callahan <callahan.kovacs@canonical.com>

* docs: update docstring for maven plugin (#971)

Co-authored-by: Callahan <callahan.kovacs@canonical.com>
Co-authored-by: Alex Lowe <alex.lowe@canonical.com>

* feat(executor): allow capturing error message from scriptlets (#966)

* change craftctl channel to socket

Change to craftctl communication channel from named pipes to unix
sockets to make it easier to consolidate the ctl server and error
stream capture.

* allow using process selector with custom handlers

Process execution runs a selector to obtain data from i/o streams
to obtain the isolated error output. Allow this selection loop run
on a caller-specified selector with handlers registered to also
process interactions with craftctl.

* change scriptlet environment script name

Step execution environment is step-specific, and the existing
environment.sh script is for the build step only. Rename the file
containing the scriptlet environment to avoid confusion with the
existing file (which may potentially have a different payload).

* force select selector

Using DefaultSelector fails in jammy with Python 3.10. It seems that
this specific version picks a different selector, or there's some
problem with SelectSelector that prevents it from working as expected.

---------

Signed-off-by: Claudio Matsuoka <claudio.matsuoka@canonical.com>

* docs: update changelog (#984)

Signed-off-by: Claudio Matsuoka <claudio.matsuoka@canonical.com>

* fix: use source-subdir in go-use plugin

It's possible, and somewhat common, for a go module to be defined inside a
repo's subdir; in this case we can define source-subdir, but the go-use
plugin needs to use this - otherwise the repo root gets used.

Fixes #978

* docs: fix changelog, add go-use bugfix

* feat(PartSpec): add source-channel attribute (#981)


Signed-off-by: Dariusz Duda <dariusz.duda@canonical.com>

* docs(changelog): finalize changelog for 2.4.0 (#988)

Signed-off-by: Dariusz Duda <dariusz.duda@canonical.com>

* fix: don't modify 'prefix' for relocatable pkg-config files (#977)

A relocatable `.pc` file has a `prefix` key beginning with
`${pcfiledir}`. The `prefix` key is not modified if the `.pc`
file is relocatable.

* fix(tests): don't fail if you have additional JREs (#986)

Fixes #985

* docs(changelog): finalize changelog for 2.4.1 (#990)

Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

* feat: craftctl chroot command

* docs: update and complete the step execution environment (#949)

* docs: update and complete the step execution environment

This adds a large number of missing environment variables from the step
execution environment and updates the information about CRAFT_TARGET_ARCH
and CRAFT_ARCH_TRIPLET being deprecated.

Co-authored-by: Callahan <callahan.kovacs@canonical.com>
Co-authored-by: JJ Coldiron <jj.coldiron@canonical.com>

* fix(craft_parts/executor/step_handler.py): adjust subprocess command to stream output

* fix:adjustments for linter

* fix(tests/integration/lifecycle/test_craftctl.py): update expected error description

* feat: add Jlink plugin (#951)

Co-authored-by: Tiago Nobrega <tiago.nobrega@canonical.com>
Co-authored-by: Michael DuBelko <michael.dubelko@gmail.com>
Co-authored-by: Callahan Kovacs <callahan.kovacs@canonical.com>
Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>

* docs: correct the lifecycle step for `organize` (#996)

Co-authored-by: Callahan <callahan.kovacs@canonical.com>

* fix(craft_parts/utils/process.py): migrate subprocess.run to internal process.run

---------

Signed-off-by: Sergio Schvezov <sergio.schvezov@canonical.com>
Signed-off-by: Callahan Kovacs <callahan.kovacs@canonical.com>
Signed-off-by: Alex Lowe <alex.lowe@canonical.com>
Signed-off-by: Claudio Matsuoka <claudio.matsuoka@canonical.com>
Signed-off-by: Dariusz Duda <dariusz.duda@canonical.com>
Co-authored-by: Alex Lowe <alex.lowe@canonical.com>
Co-authored-by: Sergio Schvezov <sergio.schvezov@canonical.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tiago Nobrega <tiago.nobrega@canonical.com>
Co-authored-by: Imani Pelton <imani.pelton@canonical.com>
Co-authored-by: Callahan <callahan.kovacs@canonical.com>
Co-authored-by: Carl Csaposs <carl.csaposs@canonical.com>
Co-authored-by: Yanks Yoon <37652070+yanksyoon@users.noreply.github.com>
Co-authored-by: Claudio Matsuoka <claudio.matsuoka@canonical.com>
Co-authored-by: Dariusz Duda <dariusz.duda@canonical.com>
Co-authored-by: Sergio Costas <sergio.costas@canonical.com>
Co-authored-by: JJ Coldiron <jj.coldiron@canonical.com>
Co-authored-by: Vladimir Petko <vladimir.petko@canonical.com>
Co-authored-by: Michael DuBelko <michael.dubelko@gmail.com>
Co-authored-by: Michael DuBelko <michael.dubelko@canonical.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working Triaged
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant