Skip to content

fix: correction des tests unitaires et ajout de nouveau test#1170

Draft
gtolontop wants to merge 9 commits intoServerOpenMC:masterfrom
gtolontop:fix/tests-unitaires-spawner-extractor
Draft

fix: correction des tests unitaires et ajout de nouveau test#1170
gtolontop wants to merge 9 commits intoServerOpenMC:masterfrom
gtolontop:fix/tests-unitaires-spawner-extractor

Conversation

@gtolontop
Copy link
Contributor

Fixes les tests unitaires qui échouaient avec ClassNotFoundException.

Problème

SpawnerExtractorListener importe dev.lone.itemsadder.api.CustomStack, une dépendance compileOnly absente du classpath de test. Le classloader de MockBukkit résout les références de classes de façon eager, ce qui provoque un NoClassDefFoundError lors du chargement du plugin en test.

Le listener était enregistré sans le guard !isUnitTestVersion(), contrairement à ItemsAddersListener qui a le même problème et est déjà correctement protégé.

Correction

Déplacement de new SpawnerExtractorListener() à l'intérieur du bloc !OMCPlugin.isUnitTestVersion(), cohérent avec le fix FancyNpcsHook du commit bd1ab12.

TabList utilise PacketAdapter de ProtocolLib (dépendance compileOnly),
ce qui cause un ClassNotFoundException au lancement des tests MockBukkit.
MultiBlockManager.init() est appelé via loadWithItemsAdder() qui ne
s'exécute pas en environnement de test. config reste null et provoque
un NPE lors du onDisable.
Le BukkitRunnable (delay 0) s'exécute pendant le load du plugin,
donc le MOTD capturé est déjà le custom. Avec 2 entrées dans motd.yml,
Random peut piocher la même → assertNotEquals échoue 50% du temps.
Fix: forcer un MOTD connu avant de tick.
Le test testTransferBalanceWithReasonRegistersTransaction échoue car
la transaction est enregistrée via runTaskAsynchronously et performTicks
ne garantit pas la fin des tâches async. Ajout de waitAsyncTasksFinished()
pour attendre la complétion avant de vérifier.
@iambibi
Copy link
Member

iambibi commented Mar 11, 2026

Ah tu as réussi

@iambibi
Copy link
Member

iambibi commented Mar 11, 2026

Oui nirbose avait dit que les task en async faisait buger les tests ahaha j'ai pas pensé à te le dire

@iambibi iambibi added the ✨ Fixes Quelque chose a été patch label Mar 11, 2026
@iambibi iambibi added this to the 2.2.8 milestone Mar 11, 2026
@iambibi iambibi requested a review from ltuffery March 11, 2026 18:41
Copy link
Member

@iambibi iambibi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'attends la review de Nirbose, mais pour moi ça me va

@gtolontop
Copy link
Contributor Author

Il faut que je push encore une dernière version pour fix la dernière issue et se sera good :)

@gtolontop
Copy link
Contributor Author

Je suis entrain de les ajouter

Nouveaux tests:
- DateUtils: conversion secondes/millis/ticks, isBefore
- InputUtils: pluralize, edge cases null/empty/décimaux
- PaddingUtils: centrage, débordement, padding impair
- EnumUtils: match valide/invalide/null, valeur par défaut
- MathUtils: interpolation de couleurs (lerpColor)
- YmlUtils: deep copy de maps/listes imbriquées
- Queue: ajout, suppression, éviction LRU, taille max
- ColorUtils: conversions couleur/code/nom/matériau/RGB
- RandomUtils: bornes int/double/float, cas limites
- EconomyManager: formatage simplifié (k/M/B suffixes)
Ajout de waitAsyncTasksFinished() après performTicks() dans tous les
tests Economy qui vérifient des transactions enregistrées en async.
@gtolontop
Copy link
Contributor Author

Les tests on bloqué sur de l'ancien code je l'ai fix ça build ça devrais passer mais dcp y'a des test + les fix des résultats des test qui passais pas

@iambibi
Copy link
Member

iambibi commented Mar 12, 2026

Rename ta branche + le nom de ta pr dcp

Copy link
Contributor

@ltuffery ltuffery left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça ne paraît pas OK. J’ai juste cette remarque, puis je ferai la review finale.

list.add(map);
}

if (config == null) return;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pourquoi ?

@gtolontop
Copy link
Contributor Author

Je termine tous proprement quand je rentre chez moi et se sera good

@gtolontop
Copy link
Contributor Author

et quel son les soucis ?

Évite d'itérer inutilement sur les multiblocks si config n'a pas
été initialisé (init() appelé uniquement via loadWithItemsAdder).
@gtolontop gtolontop changed the title fix: Tests unitaires cassés à cause du SpawnerExtractorListener fix: correction des tests unitaires et ajout de nouveau test Mar 12, 2026
@gtolontop
Copy link
Contributor Author

Tous devrais être bon :)

}

public static void save() {
if (config == null) return;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pourquoi mettre ce check ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ltuffery l'avait mis dans son commit, je l'ai juste déplacé au début du fichier pour éviter d'itérer pour rien. Il a ajouter le check (je pense) parce que MultiBlockManager.init() passe par loadWithItemsAdder() qui ne tourne pas en test, dcp config reste null et save() dans le onDisable() casse un NPE

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puis c'est vrai que si la config est nulle, ça va planter, je vois pas en quoi c'est dérangeant

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est plus rapide j'ai juste bouger ta ligne

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai juste pas compris de quel commit tu parles

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Surtout que même @ltuffery a demandé pourquoi tu l'as mit

@gtolontop gtolontop marked this pull request as draft March 12, 2026 20:29
@iambibi iambibi modified the milestones: 2.2.8, 2.2.9 Mar 14, 2026
@gtolontop
Copy link
Contributor Author

Vous voulez que je fasse des changements supplémentaire ?

@iambibi
Copy link
Member

iambibi commented Mar 15, 2026

Bah je sais pas trop pour moi c'est OK, mais je crois que @ltuffery n'a pas encore fait sa review

@gtolontop
Copy link
Contributor Author

Bah je sais pas trop pour moi c'est OK, mais je crois que @ltuffery n'a pas encore fait sa review

Okay hésitez :)
(si tu as d'autre issue a fix je peux les fix se soir je suis dispo)

@iambibi
Copy link
Member

iambibi commented Mar 16, 2026

Ouais désolé si ça prends un peu de temps (regarde le nombre de pr que j'ai, la majorité c'est des une lignes rien passe, je crois qu'ils ont pas encore compris que ça a commencé 🤡).
En parallèle si tu veux encore contribuer mais tu sais pas quelle issue je peux t'en donner une

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Fixes Quelque chose a été patch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants