Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

échec des tests en local #4031

Closed
gasche opened this issue Dec 3, 2016 · 8 comments
Closed

échec des tests en local #4031

gasche opened this issue Dec 3, 2016 · 8 comments

Comments

@gasche
Copy link
Contributor

gasche commented Dec 3, 2016

Sur ma machine make test rapporte les échecs suivants:

======================================================================
FAIL: test_success_new_image_write_permission (zds.gallery.tests.tests_views.NewImageViewTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/gasche/Prog/zds-site/zds/gallery/tests/tests_views.py", line 636, in test_success_new_image_write_permission
    self.assertEqual(3, len(os.listdir(self.gallery.get_gallery_path())))  # New image and thumbnail
AssertionError: 3 != 4

======================================================================
FAIL: test_get_content_reaction_voters (zds.tutorialv2.api.tests.ContentReactionKarmaAPITest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/gasche/Prog/zds-site/zds/tutorialv2/api/tests.py", line 149, in test_get_content_reaction_voters
    self.assertEqual(2, len(response.data['like']['users']))
AssertionError: 2 != 1

======================================================================
FAIL: test_generate_pdf (zds.tutorialv2.tests.tests_utils.UtilsTests)
ensure the behavior of the `python manage.py generate_pdf` commmand
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/gasche/Prog/zds-site/zds/tutorialv2/tests/tests_utils.py", line 406, in test_generate_pdf
    self.assertTrue(os.path.exists(pdf_path))
AssertionError: False is not true

----------------------------------------------------------------------

Pour test_generate_pdf, j'ai bien installé pandoc donc en théorie ça pourrait marcher. La raison pour laquelle ça échoue est que la police MerryWeather est nécessaire, et elle n'est pas installée par les règles d'installation du backend en local -- elle est dans les assets de production. Je trouve ça plutôt normal que la police ne soit pas installée, mais par contre il faudrait donc que les tests en local n'utilisent pas l'option "-V mainfont=Merriweather -V monofont=\"SourceCodePro-Regular\" " qui est passée à PANDOC_PDF_PARAM dans zds/settings.py. Je ne vois pas comment surcharger cette option depuis settings_local.py -- je pense que le mieux serait qu'elle ne soit pas incluse dans settings.py (réglages communs au test et à la prod) mais seulement dans les settings_prod.py utilisés en production.

Pour test_get_content_reaction_voters je n'ai aucune idée de la source du problème, je n'ai pas essayé de corriger.

Pour test_success_new_image_write_permission, le test suppose qu'il part d'une gallerie complètement vide et compte le nombre de fichiers créés. Mais si on compte les fichiers au début du test dans une variable nb_files, et qu'on demande à la fin nb_files + 3, le test se met à passer -- d'autres tests du fichier sont codés comme ça. Ce que je ne comprends pas c'est pourquoi il y a un fichier dans la gallerie au début du test (c'est bien un seul fichier, j'ai testé, un .jpg au nom qui change à chaque lancement des tests.).

@firm1
Copy link
Contributor

firm1 commented Dec 5, 2016

Je trouve ça plutôt normal que la police ne soit pas installée, mais par contre il faudrait donc que les tests en local n'utilisent pas l'option "-V mainfont=Merriweather -V monofont=\"SourceCodePro-Regular\" " qui est passée à PANDOC_PDF_PARAM dans zds/settings.py. Je ne vois pas comment surcharger cette option depuis settings_local.py

En fait pour ça, il faudrait rajouter dans le fichier settings_test_local.py, le contenu suivant :

PANDOC_PDF_PARAM = ("--latex-engine=xelatex "
                    "--template={} -s -S -N "
                    "--toc -V documentclass=scrbook -V lang=francais "
                    "-V fontsize=12pt -V geometry:margin=1in ".format(join("..", "..", "..",
                                                                           "assets", "tex", "template.tex")))

ça te permet de surcharger cette variable en laissant pandoc se baser sur la police existante.

@gasche
Copy link
Contributor Author

gasche commented Dec 5, 2016

Je crois avoir essayé ça et que ça ne marchait pas: le code qui utilise cette variable va directement chercher zds.settings.PANDOC_PDF_PARAM qui est la valeur non-surchargée.

@firm1
Copy link
Contributor

firm1 commented Dec 5, 2016

Je vois, on a quelques problèmes de cohérences là.

  1. le seul qui semble appeler le fichier test_settings_local.py est la commande make test-back (cf. ici) alors que les tests sont aussi censé être lancé via tox -e back (qui n'utilise pas le fichier test_settings_local.py). On a donc le problème de 2 façons de lancer des tests en local qui n'ont pas le même comportement. Mais ça n'a rien a voir avec ton problème @gasche puisque toi tu utilise make.
  2. Certains imports sont fait de telle manière que le python manage.py test --settings zds.settings_test_local n'a pas d'effet sur la surcharge effectivement. Donc il y'a deux façon de faire,
    1. on enlève la conf liée aux polices de prod dans le settings et on la met juste dans le settings_prod et settings de travis
    2. on retravaille tous les imports pour qu'il puissent prendre en charge correctement la surcharge.

Perso je préfère l'option (i).

@gasche
Copy link
Contributor Author

gasche commented Dec 13, 2016

Je me permets de pinger ici ; je pense qu'on peut laisser la question de generate_pdf de côté pour l'instant mais il reste deux tests donc l'échec en local est inexpliqué. Je pense que ce serait bien de revenir à un état où les contributeurs occasionnels peuvent utiliser la testsuite de façon utile.

@pierre-24
Copy link
Member

pierre-24 commented Dec 13, 2016 via email

@gasche
Copy link
Contributor Author

gasche commented Dec 13, 2016

Une possibilité est que ce soit un problème avec mon environnement de développement, mal installé ou un truc de versions. Si d'autres gens peuvent tester chez eux et confirmer s'ils arrivent à reproduire (ou non), ça peut être utile.

@vhf
Copy link
Contributor

vhf commented Dec 13, 2016

Alors j'ai testé. J'ai 4 échecs, t'en as 3 (parce que j'ai pas pandoc). Je sais pas sur quel commit t'as testé par contre, du coup j'ai pris le HEAD de dev, donc 72b3d24 .

======================================================================
FAIL: test_success_new_image_write_permission (zds.gallery.tests.tests_views.NewImageViewTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/victor/repos/zds-site/zds/gallery/tests/tests_views.py", line 636, in test_success_new_image_write_permission
    self.assertEqual(3, len(os.listdir(self.gallery.get_gallery_path())))  # New image and thumbnail
AssertionError: 3 != 4

FAIL: test_get_content_reaction_voters (zds.tutorialv2.api.tests.ContentReactionKarmaAPITest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/victor/repos/zds-site/zds/tutorialv2/api/tests.py", line 149, in test_get_content_reaction_voters
    self.assertEqual(2, len(response.data['like']['users']))
AssertionError: 2 != 1

======================================================================
FAIL: test_generate_pdf (zds.tutorialv2.tests.tests_utils.UtilsTests)
ensure the behavior of the `python manage.py generate_pdf` commmand
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/victor/repos/zds-site/zds/tutorialv2/tests/tests_utils.py", line 406, in test_generate_pdf
    self.assertTrue(os.path.exists(pdf_path))
AssertionError: False is not true

======================================================================
FAIL: test_publication_make_extra_contents (zds.tutorialv2.tests.tests_views.ContentTests)
This test make sure that the "extra contents" (PDF, EPUB, ...) are generated by a publication
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/victor/repos/zds-site/zds/tutorialv2/tests/tests_views.py", line 3362, in test_publication_make_extra_contents
    self.assertTrue(published.have_type(extra), "no extra content" + extra)
AssertionError: no extra contenthtml

----------------------------------------------------------------------

Je vais voir ce que je peux faire.

@gasche problème test_success_new_image_write_permission résolu : les tests passent dans un ordre aléatoire et se marchent dessus en écrivant au même endroit sans nettoyage:

setUp called
gallery content ['4fffcad2-9843-4bc0-8712-b6beb445fa06.jpg']
starting test test_import_images_in_gallery_no_archive
<test runs>
setUp called
gallery content ['4fffcad2-9843-4bc0-8712-b6beb445fa06.jpg']
starting test test_success_new_image_write_permission
gallery content ['4fffcad2-9843-4bc0-8712-b6beb445fa06.jpg']
<test runs>
gallery content ['35509747-e9e6-4af8-9bd3-134f8a2255aa.png',
 '35509747-e9e6-4af8-9bd3-134f8a2255aa.png.120x120_q95_crop.jpg',
 '35509747-e9e6-4af8-9bd3-134f8a2255aa.png.480x270_q95_crop.jpg',
 '4fffcad2-9843-4bc0-8712-b6beb445fa06.jpg']

@pierre-24
Copy link
Member

pierre-24 commented Aug 9, 2017

Recement, j'ai lancé les tests, et à part celui sur les pdf (logique), ça passait. Je tape #4497 , comme ça je vérifie en même temps :)

@artragis artragis closed this as completed Sep 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants