developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.
#1397 closed bug (fixed)
testapp : UTjDbSchemaMysql -> testTable seems to be wrong
Reported by: | bricet | Owned by: | bricet |
---|---|---|---|
Priority: | normal | Milestone: | Jelix 1.3.3 |
Component: | app:testapp | Version: | 1.2.3 |
Severity: | normal | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Documentation needed: | no | |
Hosting Provider: | Php version: | PHP 5.3.6-12 with Suhosin-Patch |
Description
It seems there is just a small bug in testapp for an assertComplexIdenticalStr()
Here is a (small) patch
Attachments (2)
Change History (13)
Changed 10 years ago by bricet
comment:1 Changed 10 years ago by laurentj
comment:2 Changed 10 years ago by bricet
Je dirais que c'est plutôt un problème de version de PHP.
A priori un comportement différent de SimpleTestCompatibility::isA()
comment:3 Changed 10 years ago by bricet
- Php version set to PHP 5.3.6-12 with Suhosin-Patch
Je confirme plutôt penser à un problème de version de PHP.
De toute façon, il me semble étrange d'estimer que -2147483648 soit un double.
J'ai spotté exactement ce qui me retourne l'erreur : c'est IsAExpectation::test()
strtolower(gettype(-2147483648)) me retourne 'integer' et non 'double'
Je suis en "PHP 5.3.6-12 with Suhosin-Patch" (sur linux amd64)
Le message d'erreur que j'ai pour le test unitaire est :
Fail: /home/brice/dev/jelix/fork/compiled/testapp/modules/jelix_tests/tests/jdbschema.mysql.html_cli.php -> UTjDbSchemaMysql -> testTable -> $value[id]->minValue: not a float (-2147483648) at [/home/brice/dev/jelix/fork/compiled/testapp/modules/jelix_tests/tests/jdbschema.mysql.html_cli.php line 132] Fail: /home/brice/dev/jelix/fork/compiled/testapp/modules/jelix_tests/tests/jdbschema.mysql.html_cli.php -> UTjDbSchemaMysql -> testTable -> $value[id] : non identical objects at [/home/brice/dev/jelix/fork/compiled/testapp/modules/jelix_tests/tests/jdbschema.mysql.html_cli.php line 132]
comment:4 Changed 10 years ago by bricet
D'ailleurs dans simpletest 1.1a3 cette méthode a été modifiée - et ça semble en accord avec le doc PHP de gettype(), qui semble déconseillée.
Code que l'on a dans IsAExpectation::test() :
if (is_object($compare)) { return SimpleTestCompatibility::isA($compare, $this->type); } else { return (strtolower(gettype($compare)) == $this->canonicalType($this->type)); }
Code dans 1.1a3 :
if (is_object($compare)) { return SimpleTestCompatibility::isA($compare, $this->type); } else { $function = 'is_'.$this->canonicalType($this->type); if (is_callable($function)) { return $function($compare); } return false; }
En faisant cette modif chez moi, on peut mettre, semble-t-il, indifférement integer ou double. Par contre, ça impliquerait pas mal de modif du bout de XML auquel je touche dans mon patch. Un avis ?
comment:5 Changed 10 years ago by bricet
Here is another patch, taking some code from simpletest 1.1a3
Changed 10 years ago by bricet
comment:6 Changed 10 years ago by bricet
Et donc je me suis trompé : on n'a pas besoin de toucher au XML (mis à part double->integer, qui me semble plus propre même si pas nécessaire)
comment:7 Changed 9 years ago by laurentj
- Owner changed from laurentj to bricet
- review review? deleted
- Status changed from new to reviewing
comment:8 Changed 9 years ago by laurentj
- Milestone set to Jelix 1.3.2
- Status changed from reviewing to assigned
Upgrade to simpletest 1.1a3 is done. https://github.com/jelix/jelix/commit/f9f22b0461166d28185ea59f0f0299d04a518c28
mis à part double->integer, qui me semble plus propre même si pas nécessaire)
Oui mais en 32bits, le nombre dépasse la taille maximal, donc transformation en double. À vérifier si <double> passe aussi pour les tests en 64bits.
comment:9 Changed 9 years ago by bricet
Anéfé sur 64bits, le test ne passe pas en double. Il passe en integer. Je n'ai pas poussé la reflexion plus loin pour le moment ..
comment:10 Changed 9 years ago by laurentj
- Resolution set to fixed
- Status changed from assigned to closed
Pas de problème chez moi. ça doit venir d'une version de mysql spécifique..