Nach einer Weile ergab das Sinn. Ich habe sogar eine Spezifikation geschrieben, aber schon bevor ich meine Spezifikation hinzugefügt habe (und als ich auf den Zustand vor dem Hinzufügen von Code zurückgesetzt habe), schlagen die Tests fehl, weil:
An error occurred while loading ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Failure/Error: 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'
No examples found.
Das scheint bei fast allen Tests auf der Seite aufzutreten. Ich denke, ich habe git reset --hard upstream/master korrekt ausgeführt, um den funktionierenden Zustand zu erreichen, und habe dann die Datenbank gelöscht und neu erstellt, aber ich bekomme immer noch diesen Fehler.
Ich gebe zu, dass ich nicht gut darin bin, Fehlermeldungen zu lesen. Ich habe mir die Datei angesehen, auf die sie sich meiner Meinung nach bezogen haben, aber keine Zeile mit „group(s)
Ich habe nichts mit Gruppen gemacht (die Gruppe erscheint nicht in meinem Plugin), und diese Spezifikationen schlagen überall in Discourse fehl. Ich werde noch einmal den Master klonen, um zu sehen, ob es irgendwie an meinem Fork liegt. Nochmals vielen Dank!
Stellen Sie unbedingt sicher, dass Sie RAILS_ENV=test angeben, andernfalls löschen Sie versehentlich Ihre Entwicklungsdatenbank (das ist mir diese Woche auch passiert )
Vielleicht ist das mein Problem! Vielleicht habe ich Development statt Test gewählt. Danke. Oh, und ich muss vor dem Flug zum Flughafen eine frische Development-Umgebung auf meinem Laptop installieren.
Ich habe am Anfang der Spezifikationssuite eine Prüfung auf ausstehende Migrationen hinzugefügt, sodass es in Zukunft einfacher sein sollte, solche Probleme zu identifizieren.
Danke, David! Ich habe gesehen, dass jetzt eine Warnung ausgegeben wird. Ich verstehe nicht ganz, warum es so schwierig war, die Testdatenbank zu migrieren, aber nachdem ich eine Reihe von destroy, create und migrate durchgeführt und dann den von dir empfohlenen Befehl RAILS_ENV=test bin/rake db:migrate ausgeführt habe, habe ich festgestellt, dass meine Spezifikation kaputt ist! Jetzt kann ich sie reparieren, und ich bin auf dem Weg zu lernen, wie man Spezifikationen schreibt! Nochmals vielen Dank für deinen Anstoß, @Mittineague.
Ist das bereits behoben? Es sieht so aus, als würde ./bin/rake db:drop db:create die Testdatenbank löschen und neu erstellen, aber ./bin/rake db:migrate führt die Migrationen scheinbar nicht auch für die Testdatenbank aus.