wizard_builder_spec e application_controller_spec rotti sulla macchina locale

Vorrei chiederti aiuto per alcuni test rotti sulla mia macchina locale. Questa mattina ho clonato l’ultima versione di master e 4 test falliscono sul mio computer:

1) Wizard::Builder colors step when the default them hass been override should set the right default values
   Failure/Error: expect(field.required).to eq(false)

     expected: false
          got: true

     (compared using ==)
   # ./spec/components/wizard/wizard_builder_spec.rb:171:in `block (4 levels) in <main>'

2) Wizard::Builder colors step when the default theme has not been override should set the right default values
   Failure/Error: SiteSetting.find_by(name: "default_theme_id").destroy!

   NoMethodError:
     undefined method `destroy!' for nil:NilClass
   # ./spec/components/wizard/wizard_builder_spec.rb:156:in `block (4 levels) in <main>'

3) ApplicationController#handle_theme selects the theme the user has selected
   Failure/Error: expect(controller.theme_ids).to eq([SiteSetting.default_theme_id])

     expected: [-1]
          got: []

     (compared using ==)
   # ./spec/requests/application_controller_spec.rb:295:in `block (3 levels) in <main>'

4) ApplicationController#handle_theme does not allow non privileged user to preview themes
   Failure/Error: expect(controller.theme_ids).to eq([SiteSetting.default_theme_id])

     expected: [-1]
          got: []

     (compared using ==)
   # ./spec/requests/application_controller_spec.rb:341:in `block (3 levels) in <main>'

Sto eseguendo postgres 11.5 e ho assicurato che le estensioni hstore e pg_trgm siano abilitate per discourse_development e discourse_test:

➜  discourse-master git:(master) ✗ psql --user lis2 discourse_development
psql (11.5 (Ubuntu 11.5-0ubuntu0.19.04.1))
Type "help" for help.

discourse_development=# \dx
                                    List of installed extensions
  Name   | Version |   Schema   |                            Description
---------+---------+------------+-------------------------------------------------------------------
 hstore  | 1.5     | public     | data type for storing sets of (key, value) pairs
 pg_trgm | 1.4     | public     | text similarity measurement and index searching based on trigrams
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language

Ecco un elenco di tutti i miei gem e le loro versioni:

rake 12.3.2
concurrent-ruby 1.1.5
i18n 1.6.0
minitest 5.11.3
thread_safe 0.3.6
tzinfo 1.2.5
activesupport 5.2.3
builder 3.2.3
erubi 1.8.0
mini_portile2 2.4.0
nokogiri 1.10.4
rails-dom-testing 2.0.3
crass 1.0.4
loofah 2.2.3
rails-html-sanitizer 1.0.4
actionview 5.2.3
rack 2.0.7
rack-test 1.1.0
actionpack 5.2.3
globalid 0.4.2
activejob 5.2.3
mini_mime 1.0.1
mail 2.7.1
actionmailer 5.2.3
activemodel 5.2.3
active_model_serializers 0.8.4
arel 9.0.0
activerecord 5.2.3
public_suffix 3.0.3
addressable 2.5.2
annotate 2.7.5
ast 2.4.0
aws-eventstream 1.0.3
aws-partitions 1.154.0
aws-sigv4 1.1.0
jmespath 1.4.0
aws-sdk-core 3.48.6
aws-sdk-kms 1.17.0
aws-sdk-s3 1.36.1
aws-sdk-sns 1.13.0
ember-source 2.18.2
execjs 2.7.0
barber 0.12.2
coderay 1.1.2
better_errors 2.5.1
debug_inspector 0.0.3
binding_of_caller 0.8.0
msgpack 1.2.10
bootsnap 1.4.4
uniform_notifier 1.12.1
bullet 6.0.0
bundler 1.17.3
byebug 11.0.1
certified 1.0.0
chunky_png 1.3.11
colored2 3.1.2
connection_pool 2.2.2
cppjieba_rb 0.3.3
safe_yaml 1.0.5
crack 0.4.3
css_parser 1.7.0
diff-lcs 1.3
diffy 3.3.0
discourse-ember-source 3.10.0.1
exifr 1.3.6
fspath 3.1.0
image_size 1.5.0
in_threads 1.5.1
progress 3.5.0
discourse_image_optim 0.26.2
docile 1.3.1
email_reply_trimmer 0.1.12
ember-data-source 3.0.2
sprockets 3.7.2
ember-handlebars-template 0.8.0
method_source 0.9.2
thor 0.20.3
railties 5.2.3
jquery-rails 4.3.3
ember-rails 0.18.5
excon 0.64.0
fabrication 2.20.1
fakeweb 1.3.0
multipart-post 2.1.1
faraday 0.15.4
fast_blank 1.0.0
rake-compiler 1.0.7
fast_xor 1.1.3
fast_xs 0.8.0
fastimage 2.1.5
ffi 1.10.0
flamegraph 0.9.5
gc_tracer 1.5.1
guess_html_encoding 0.0.11
hashdiff 0.3.9
hashie 3.6.0
highline 1.7.10
hiredis 0.6.3
hkdf 0.3.0
htmlentities 4.3.4
http_accept_language 2.0.5
jaro_winkler 1.5.2
json 2.2.0
jwt 2.2.1
kgio 2.11.2
libv8 7.3.492.27.1 (x86_64-linux)
rb-fsevent 0.10.3
rb-inotify 0.10.0
ruby_dep 1.5.0
listen 3.1.5
request_store 1.4.1
lograge 0.11.0
logstash-event 1.2.02
logstash-logger 0.26.1
logster 2.3.2
lru_redux 1.1.0
lz4-ruby 0.3.3
maxminddb 0.1.22
memory_profiler 0.9.13
message_bus 2.2.2
metaclass 0.0.4
mini_racer 0.2.6
rack-protection 2.0.7
redis 4.0.1
sidekiq 5.2.7
mini_scheduler 0.12.1
mini_sql 0.2.2
mini_suffix 0.3.0
mocha 1.8.0
mock_redis 0.19.0
moneta 1.1.1
multi_json 1.13.1
multi_xml 0.6.0
mustache 1.1.0
nokogumbo 2.0.1
oauth 0.5.4
oauth2 1.4.1
oj 3.7.12
omniauth 1.9.0
omniauth-oauth2 1.6.0
omniauth-facebook 5.0.0
omniauth-github 1.3.0
omniauth-google-oauth2 0.7.0
omniauth-instagram 1.3.0
omniauth-oauth 1.1.0
ruby-openid 2.7.0
rack-openid 1.3.1
omniauth-openid 1.0.1
omniauth-twitter 1.4.0
sanitize 5.0.0
onebox 1.9.12
openid-redis-store 0.0.2
optimist 3.0.0
parallel 1.17.0
parallel_tests 2.28.0
parser 2.6.3.0
pg 1.1.4
pry 0.12.2
pry-nav 0.3.0
pry-rails 0.3.9
puma 3.12.1
r2 0.2.7
rack-mini-profiler 1.0.2
rails_multisite 2.0.7
rainbow 3.0.0
raindrops 0.19.0
rbtrace 0.4.11
rchardet 1.8.0
redis-namespace 1.6.0
rinku 2.0.6
rotp 3.3.1
rqrcode 0.10.1
rspec-support 3.8.0
rspec-core 3.8.0
rspec-expectations 3.8.3
rspec-mocks 3.8.0
rspec 3.8.0
rspec-html-matchers 0.9.1
rspec-rails 3.8.2
rtlit 0.0.5
ruby-progressbar 1.10.0
unicode-display_width 1.6.0
rubocop 0.69.0
ruby-prof 0.17.0
ruby-readability 0.7.0
rubyzip 1.2.3
sassc 2.0.1
sprockets-rails 3.2.1
tilt 2.0.9
sassc-rails 2.1.1
seed-fu 2.3.9
shoulda-matchers 3.1.3
simplecov-html 0.10.2
simplecov 0.16.1
sshkey 2.0.0
stackprof 0.2.12
test-prof 0.9.0
uglifier 4.1.20
unf_ext 0.0.7.6
unf 0.1.4
unicorn 5.5.1
webmock 3.5.1
webpush 0.3.8
yaml-lint 0.0.10

Vedi qualcosa di insolito che potrebbe causare il fallimento dei test? Grazie per il tuo aiuto

Tutti questi sembrano essere legati al tema o alla cache.

Puoi provare a eseguire

  • redis-cli flushall
  • dropdb discourse_test
  • rm -fr tmp/*
  • createdb discourse_test
  • RAILS_ENV=test bin/rake db:migrate
  • bin/rake autospec

Salva i file con le specifiche modificate: iniziano a funzionare?

È tutto, ora funziona, grazie!

Postgres 11.5 è già supportato in produzione? Pensavo di sapere che ci fosse un problema di compatibilità, ma a quanto pare mi sbagliavo. (Ho provato a cercare nei commit?)

Questa configurazione sulla mia macchina era solo a scopo di sviluppo. Le specifiche sono verdi e il test di fumo di base ha funzionato.

Ho trovato quel post che menziona che Postgres 11 dovrebbe andare bene - PostgreSQL 11 Support

Se hai problemi aperti specifici per PG11, mi farebbe piacere saperlo. Dovrebbe funzionare senza problemi, è ciò che uso sulla mia macchina di sviluppo.

Abbiamo intenzione di aggiornare la nostra versione di PG nell’immagine Docker alla 12, qualche mese dopo il suo rilascio previsto più avanti quest’anno.

MODIFICA: Avrei dovuto aprire un nuovo argomento.
MODIFICA: Voglio solo assicurarmi che @sam veda questo, scusate se è solo in coda.

Penso di avere un problema del genere.

Ho un’istanza su GCP con PG sulla loro PostgreSQL 11. Ho dovuto eseguire:

   - exec:
        cd: $home
        cmd:
          - apt -y remove postgresql-client-10
          - apt -y install postgresql-client-11

Sembra che abbia funzionato. Nel container ottengo questo:

root@community-bootstrap-import:/var/www/discourse# psql --version
psql (PostgreSQL) 11.5 (Debian 11.5-1.pgdg100+1)

Oh, ma aspetta!

postgres=> select version();
                                        version                                         
----------------------------------------------------------------------------------------
 PostgreSQL 11.4 su x86_64-pc-linux-gnu, compilato con gcc (Debian 7.3.0-5) 7.3.0, 64-bit
(1 riga)

La versione minore dovrebbe importare?

Ho completato un’importazione, eseguito un backup, fatto alcune operazioni e poi provato a ripristinare il backup. È fallito con alcuni errori relativi a tabelle mancanti che pensavo potessero essere dovuti alla mia incomprensione di… qualcosa.

Quindi ho eliminato e ricreato il database, poi ho eseguito:

rake db:migrate
discourse backup
discourse enable_restore
discourse restore the-backup-filename

E poi ho ottenuto qualcosa del genere:

...
Nessun file di metadati da estrarre.                                                           
Convalida dei metadati...                                                                 
  Versione corrente: 20190908234054                                                      
  Versione ripristinata: 20190908234054
tar: dump.sql: non trovato nell'archivio
tar: Uscita con stato di errore a causa di errori precedenti
Estrazione del file dump...
Creazione delle funzioni mancanti nello schema discourse_functions
Impossibile ripristinare in uno schema diverso, ripristino in loco
Attivazione della modalità sola lettura...
Messa in pausa di sidekiq...
In attesa che sidekiq termini l'esecuzione dei lavori...
Ripristino del file dump... (può richiedere molto tempo)
SET
SET
SET
SET
SET
set_config
------------
(1 riga)
SET
SET
SET
SET
ERRORE: lo schema "public" esiste già
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione

E alcune cose come:

comando valido \n                                                                     
comando non valido \n                                                                     
comando non valido \.                                                                        
ERRORE: errore di sintassi vicino a "1"                                                            
LINE 1: 1 20000225050318 AddSchemaMigrationDetails community-bootstr...                     
^                                                                                                   
comando non valido \.                                                                     
ERRORE: errore di sintassi vicino a "20000225050318"                                       
LINE 1: 20000225050318                                                                 
^                                                                                      
comando non valido \.                                                                     
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
comando non valido \N                                                                     
comando non valido \N                                                                     
comando non valido \N                                                                     
comando non valido \N                                                                      
comando non valido \N                                                                     
comando non valido \.                                                                     
ERRORE: errore di sintassi vicino a "1"                                                    
LINE 1: 1 10.0.0.0/8 2 0                                                               
^                                                                                      
comando non valido \.                                                                     
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
comando non valido \.                                                                     
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione
comando non valido \.                                                                     
ERRORE: la transazione corrente è abortita, i comandi ignorati fino alla fine del blocco di transazione