I test dei plugin falliscono con "undefined method `test_transaction='"

Ho creato un plugin lo scorso anno e volevo verificare che funzionasse ancora sull’ultima versione di Discourse. Dopo aver reinizializzato il mio ambiente di sviluppo (avevo problemi di migrazione del database), sono riuscito a verificare manualmente che il plugin funzionasse ancora. Tuttavia, quando eseguo i miei test spec (che avevano superato l’anno scorso quando li ho scritti), ricevo il seguente errore:

Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
      
      NoMethodError:
        undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>

Avevo anche installato localmente Discourse Footnote e ricevo lo stesso errore quando eseguo quei test.

Qualcuno può suggerire come risolvere il mio ambiente e/o i miei test in modo che funzionino sulla versione attuale di Discourse?

Quale comando hai usato per eseguire il tuo test?

3 Mi Piace

Assicurati di includere LOAD_PLUGINS=1 quando esegui bin/rspec dalla directory sorgente di discourse (con il repository del plugin collegato simbolicamente dalla cartella plugins/).

1 Mi Piace

Sto eseguendo il seguente comando dalla directory discourse:

d/rake plugin:spec['discourse-ruby']

@riking Non sto includendo esplicitamente LOAD_PLUGINS=1, ma sembra che ciò avvenga comunque (presumo perché sto eseguendo plugin:spec). La prima riga dopo aver eseguito il comando è:

LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile

Se lo includo esplicitamente come nel seguente esempio, ottengo lo stesso errore:

d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1

Sembra che lo script d/rake utilizzi di default l’ambiente development, quindi dovrai eseguire invece il seguente comando: RAILS_ENV=test d/rake plugin:spec['discourse-ruby']

3 Mi Piace

Ha funzionato, grazie!

2 Mi Piace