developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 10 years ago

Closed 9 years ago

Last modified 9 years ago

#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)

patch_1397.diff (669 bytes) - added by bricet 10 years ago.
patch_1397_bis.diff (1.8 KB) - added by bricet 10 years ago.

Download all attachments as: .zip

Change History (13)

Changed 10 years ago by bricet

comment:1 Changed 10 years ago by laurentj

Pas de problème chez moi. ça doit venir d'une version de mysql spécifique..

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
Note: See TracTickets for help on using tickets.