Projet

Général

Profil

Bug #10477

Certains tests sont sensibles à la graine aléatoire de python

Ajouté par Benjamin Dauvergne il y a environ 8 ans. Mis à jour il y a 9 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
30 mars 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Trouvé via tox:

$ PYTHONHASHSEED='478281749' py.test -k test_form_items_datasource tests/test_form_pages.py
============================================================================= test session starts ==============================================================================
platform linux2 -- Python 2.7.9 -- py-1.4.31 -- pytest-2.6.3
plugins: random
collected 146 items 

tests/test_form_pages.py FF

=================================================================================== FAILURES ===================================================================================
______________________________________________________________________ test_form_items_datasource[pickle] ______________________________________________________________________

pub = <wcs.publisher.WcsPublisher instance at 0x7f6599bfa368>

    def test_form_items_datasource(pub):
        formdef = create_formdef()
        formdef.fields = [fields.ItemsField(id='1', label='items',
            varname='items', required=False, data_source={'type': 'foobar'})]
        formdef.store()

        data_class = formdef.data_class()
        data_class.wipe()

        # add the named data source
        NamedDataSource.wipe()
        data_source = NamedDataSource(name='foobar')
        data_source.data_source = {'type': 'formula', 'value': repr([])}
        data_source.store()

        resp = get_app(pub).get('/test/')
        formdef.data_class().wipe()
        resp = resp.forms[0].submit('submit') # should go straight to validation
        assert 'Check values then click submit.' in resp.body
        assert resp.forms[0]['previous']
        resp = resp.forms[0].submit('previous')

        # replace the named data source with one with items
        NamedDataSource.wipe()
        data_source = NamedDataSource(name='foobar')
        data_source.data_source = {'type': 'formula', 'value': repr(['un', 'deux'])}
        data_source.store()

        resp = get_app(pub).get('/test/')
        assert 'f1$elementun' in resp.form.fields
        assert 'f1$elementdeux' in resp.form.fields
        resp.form['f1$elementun'].checked = True
        resp.form['f1$elementdeux'].checked = True
        resp = resp.form.submit('submit')
        assert 'Check values then click submit.' in resp.body
        resp = resp.form.submit('submit')
        resp = resp.follow()

        assert data_class.select()[0].data == {'1': ['un', 'deux'], '1_display': 'un, deux'}

        data_source.data_source = {'type': 'formula',
                'value': repr([{'id': '1', 'text': 'un'},
                               {'id': '2', 'text': 'deux'}])}
        data_source.store()

        data_class.wipe()
        resp = get_app(pub).get('/test/')
        assert 'f1$element1' in resp.form.fields
        assert 'f1$element2' in resp.form.fields
        resp.form['f1$element1'].checked = True
        resp.form['f1$element2'].checked = True
        resp = resp.form.submit('submit')
        assert 'Check values then click submit.' in resp.body
        resp = resp.form.submit('submit')
        resp = resp.follow()

>       assert data_class.select()[0].data == {'1': ['1', '2'], '1_display': 'un, deux'}
E       assert {'1': ['2', '...': 'deux, un'} == {'1': ['1', '2...': 'un, deux'}
E         Differing items:
E         {'1': ['2', '1']} != {'1': ['1', '2']}
E         {'1_display': 'deux, un'} != {'1_display': 'un, deux'}

tests/test_form_pages.py:2197: AssertionError
_______________________________________________________________________ test_form_items_datasource[sql] ________________________________________________________________________

pub = <wcs.publisher.WcsPublisher instance at 0x7f6599b62bd8>

    def test_form_items_datasource(pub):
        formdef = create_formdef()
        formdef.fields = [fields.ItemsField(id='1', label='items',
            varname='items', required=False, data_source={'type': 'foobar'})]
        formdef.store()

        data_class = formdef.data_class()
        data_class.wipe()

        # add the named data source
        NamedDataSource.wipe()
        data_source = NamedDataSource(name='foobar')
        data_source.data_source = {'type': 'formula', 'value': repr([])}
        data_source.store()

        resp = get_app(pub).get('/test/')
        formdef.data_class().wipe()
        resp = resp.forms[0].submit('submit') # should go straight to validation
        assert 'Check values then click submit.' in resp.body
        assert resp.forms[0]['previous']
        resp = resp.forms[0].submit('previous')

        # replace the named data source with one with items
        NamedDataSource.wipe()
        data_source = NamedDataSource(name='foobar')
        data_source.data_source = {'type': 'formula', 'value': repr(['un', 'deux'])}
        data_source.store()

        resp = get_app(pub).get('/test/')
        assert 'f1$elementun' in resp.form.fields
        assert 'f1$elementdeux' in resp.form.fields
        resp.form['f1$elementun'].checked = True
        resp.form['f1$elementdeux'].checked = True
        resp = resp.form.submit('submit')
        assert 'Check values then click submit.' in resp.body
        resp = resp.form.submit('submit')
        resp = resp.follow()

        assert data_class.select()[0].data == {'1': ['un', 'deux'], '1_display': 'un, deux'}

        data_source.data_source = {'type': 'formula',
                'value': repr([{'id': '1', 'text': 'un'},
                               {'id': '2', 'text': 'deux'}])}
        data_source.store()

        data_class.wipe()
        resp = get_app(pub).get('/test/')
        assert 'f1$element1' in resp.form.fields
        assert 'f1$element2' in resp.form.fields
        resp.form['f1$element1'].checked = True
        resp.form['f1$element2'].checked = True
        resp = resp.form.submit('submit')
        assert 'Check values then click submit.' in resp.body
        resp = resp.form.submit('submit')
        resp = resp.follow()

>       assert data_class.select()[0].data == {'1': ['1', '2'], '1_display': 'un, deux'}
E       assert {'1': ['2', '...': 'deux, un'} == {'1': ['1', '2...': 'un, deux'}
E         Differing items:
E         {'1': ['2', '1']} != {'1': ['1', '2']}
E         {'1_display': 'deux, un'} != {'1_display': 'un, deux'}

tests/test_form_pages.py:2197: AssertionError
============================================================ 144 tests deselected by '-ktest_form_items_datasource' ============================================================
=================================================================== 2 failed, 144 deselected in 4.29 seconds ===================================================================
(wcs)bdauvergne@dor-lomin:~/Code/wcs$ PYTHONHASHSEED='3816911754' py.test -k test_form_items_datasource tests/test_form_pages.py
============================================================================= test session starts ==============================================================================
platform linux2 -- Python 2.7.9 -- py-1.4.31 -- pytest-2.6.3
plugins: random
collected 146 items 

tests/test_form_pages.py ..

============================================================ 144 tests deselected by '-ktest_form_items_datasource' ============================================================
=================================================================== 2 passed, 144 deselected in 4.38 seconds ===================================================================

Fichiers


Demandes liées

Lié à w.c.s. - Bug #18050: Redonner une explication claire sur comment lancer les testsFermé18 août 2017

Actions

Révisions associées

Révision 7c500247 (diff)
Ajouté par Frédéric Péters il y a 9 mois

tests: allow series to be returned in any order (#10477)

Révision 8412966e (diff)
Ajouté par Frédéric Péters il y a 9 mois

ci: use random hash seed (#10477)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

  • Sujet changé de Certains tests sont sensibles à la graine du générateur de nombre aléatoire de python à Certains tests sont sensibles à la graine aléatoire de python
#2

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

Il y aussi:
  • test_format_mimetypes
  • test_form_items_data_source_field_submit
  • test_home_keywords
#5

Mis à jour par Christophe Siraut il y a presque 6 ans

ack.

Je n'ai pas rebasé ces patches avec la version courante de wcs, mais ils correspondent bien aux échecs de tox que je rencontre.

#6

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Lié à Bug #18050: Redonner une explication claire sur comment lancer les tests ajouté
#7

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

C'est clair que le gros boulot là ce sera le rebasage.

#8

Mis à jour par Benjamin Dauvergne il y a presque 4 ans

  • Statut changé de Nouveau à Fermé

Quelqu'un d'autre s'en occupera un jour.

#9

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de Fermé à Nouveau

Personne ne s'occupera de tickets fermés.

#10

Mis à jour par Robot Gitea il y a 9 mois

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Frédéric Péters

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#11

Mis à jour par Robot Gitea il y a 9 mois

  • Statut changé de En cours à Solution proposée
#12

Mis à jour par Robot Gitea il y a 9 mois

  • Statut changé de Solution proposée à Solution validée

Paul Marillonnet (pmarillonnet) a approuvé une pull request sur Gitea concernant cette demande :

#13

Mis à jour par Robot Gitea il y a 9 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :

#14

Mis à jour par Transition automatique il y a 9 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#15

Mis à jour par Transition automatique il y a 7 mois

Automatic expiration

Formats disponibles : Atom PDF