Au bout d’un moment, cela a pris du sens. J’ai même rédigé une spécification, mais même avant d’ajouter ma spécification (et lorsque j’ai annulé jusqu’à avant d’ajouter tout code), les tests échouent en raison de :
Une erreur s'est produite lors du chargement de ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Erreur de test : Group.find_by(id: id)
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: relation "groups" does not exist
LINE 8: WHERE a.attrelid = '"groups"'::regclass
^
# (eval):24:in `async_exec'
# (eval):24:in `async_exec'
# ./app/models/group.rb:529:in `lookup_group'
# ./app/models/group.rb:513:in `block in ensure_automatic_groups!'
# ./app/models/group.rb:512:in `each_key'
# ./app/models/group.rb:512:in `ensure_automatic_groups!'
# (eval):3:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb:3:in `require'
# ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# PG::UndefinedTable:
# ERROR: relation "groups" does not exist
# LINE 8: WHERE a.attrelid = '"groups"'::regclass
# ^
# (eval):24:in `async_exec'
Aucun exemple trouvé.
Cela semble toucher presque tous les tests du site. Je pense avoir correctement exécuté git reset --hard upstream/master pour revenir à l’état censé fonctionner, puis j’ai supprimé et recréé la base de données, mais je rencontre toujours cette erreur.
J’avoue que je ne suis pas très doué pour lire les messages d’erreur. J’ai examiné le fichier que je pensais être concerné, mais je n’ai trouvé aucune ligne contenant « group(s) ».
Si c’est votre propre cas, cela pourrait être un problème avec lequel je lutte parfois, à savoir : quand la pluralisation signifie plus d’un élément ou quand c’est une convention.
Autrement dit, vous pensez peut-être « groups » alors que la syntaxe exige « group » sans le « s ».
De même, le code exige parfois une casse spécifique, par exemple « Group » plutôt que « group ».
J’aimerais pouvoir dire que je sais, mais ce n’est pas le cas. Je suggère de coder en mode « singe voit, singe fait », sauf si quelqu’un de plus compétent intervient.
Je n’ai rien fait avec les groupes (le groupe n’apparaît pas dans mon plugin) et ces tests échouent partout dans Discourse. Je vais faire un nouveau clone de la branche master pour voir si, d’une manière ou d’une autre, mon fork est en cause. Merci encore !
Assurez-vous bien d’inclure RAILS_ENV=test, sinon vous risquez d’effacer par erreur votre base de données de développement (je l’ai fait par accident cette semaine )
C’est peut-être mon problème ! J’ai peut-être basculé en développement et non en test. Merci. Oh, et je dois installer un nouvel environnement de développement sur mon portable avant de partir à l’aéroport.
J’ai ajouté une vérification des migrations en attente au début de la suite de tests, ce qui devrait faciliter l’identification de ce type de problème à l’avenir.
Merci, David ! J’ai remarqué qu’un avertissement est maintenant affiché. Je ne comprends pas tout à fait pourquoi il a été si difficile de migrer la base de données de test, mais après avoir exécuté plusieurs fois destroy, create, migrate, puis la commande RAILS_ENV=test bin/rake db:migrate que tu as recommandée, j’ai pu constater que mon spec était cassé ! Maintenant, je peux le corriger et je suis en bonne voie pour apprendre à écrire des specs ! Merci encore pour ton coup de pouce, @Mittineague.
Cela a-t-il été corrigé ? Il semble que ./bin/rake db:drop db:create supprime et recrée la base de données de test, mais il semble que ./bin/rake db:migrate n’exécute pas non plus les migrations sur la base de test.