testcontainers / testcontainers/testcontainers-java

[Bug]: HiveMQExtension / Class Loading Issue

Ouverte
#10,074 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

modules/hivemq type/bug
Langage dominant
Java
Étoiles
8.7k
Forks
1.9k
Merge moyen
2 j 17 h
PR mergées (30 j)
9

Description

Module

HiveMQ

Testcontainers version

1.20.6

Using the latest Testcontainers version?

Yes

Host OS

Linux

Host Arch

x64

Docker version
27.4
What happened?

Hello,

if you want to proplery JUnit Test a HiveMQExtension you need to unfortunately add all depencies used via the method "addAdditionalClass". However the following code leads to an exception "Unclosed character class near index 6
/[B$.*" due to following code:

    private void putSubclassesIntoJar(
        final @NotNull String extensionId,
        final @Nullable Class<?> clazz,
        final @NotNull JavaArchive javaArchive
    ) throws NotFoundException {
        if (clazz != null) {
            final Set<String> subClassNames = ClassPool
                .getDefault()
                .get(clazz.getName())
                .getClassFile()
                .getConstPool()
                .getClassNames();
            for (final String subClassName : subClassNames) {
                final String className = subClassName.replaceAll("/", ".");

                if (!className.startsWith("[L")) {
                    LOGGER.debug("Trying to package subclass '{}' into extension '{}'.", className, extensionId);
                    javaArchive.addClass(className);
                } else {
                    LOGGER.debug("Class '{}' will be ignored.", className);
                }
            }
        }
    }

Based on inpuit "subClassNames" can include "[B" in additition to "[L" (already checked). I would propose to add another case OR allow the proplery extend this class in general (unfortunately private constructor) ...

Relevant log output

Additional Information

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la méthode putSubclassesIntoJar présentée dans le rapport et examinez comment les noms de classes de ClassPool sont convertis avant l’appel à JavaArchive.addClass. Reproduisez la configuration de HiveMQExtension avec addAdditionalClass et une entrée [B, puis vérifiez que le chargement des classes s’achève sans l’exception signalée et que la gestion existante de [L reste inchangée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
testing-qa
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.