Ocurrió un error al cargar ./plugins/poll/spec/integration/poll_endpoints_spec.rb.
Error en la prueba: raise ArgumentError.new(“No existe una configuración llamada ‘#{name}’”)
¿Qué estoy haciendo mal al intentar ejecutar las pruebas del plugin poll? ¿Por qué esta configuración en particular no se carga en la configuración predeterminada?
Para ejecutar solo las pruebas de la encuesta, el comando es: bundle exec rake "plugin:spec[poll]" (o más corto: bin/rake "plugin:spec[poll]"); de lo contrario, estarás ejecutando las pruebas de todos los plugins.
En cuanto al error que estás obteniendo, no estoy seguro. ¿Está migrada la base de datos de pruebas? (bin/rails db:migrate RAILS_ENV=test)
Gracias. Como dijiste, sí ejecutó todas las pruebas de los plugins, lo que solucioné temporalmente eliminando los otros plugins. Me basé en esto, pero resulta que los paréntesis estaban en el lugar equivocado.
Sí, la base de datos se migra en el entorno de prueba. Solucioné este error comentando la línea raise ArgumentError.new("No setting named '#{name}' exists") y reemplazándola con un puts, y muestra que solo discourse_narrative_bot_enabled desencadena este error; todos los demás ajustes están bien. No creo que hayamos hecho nada con esta configuración. De todos modos, como mi prueba se ejecutó correctamente ignorando este error, puedo dejar la solución temporal en mi Discourse local. Cuando descubra qué lo causó realmente, actualizaré esta publicación.
Nuestro CI funciona para PRs y commits, pero en el trabajo cron falla aquí cada vez.
Puedo reproducir esto en la consola de rails con un bloque similar:
[19] pry(main)> SiteSetting.defaults.tap do |s|
[19] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[19] pry(main)* end
ArgumentError: No setting named 'discourse_narrative_bot_enab' exists
Esto funciona si pongo:
[21] pry(main)> SiteSetting.defaults.tap do |s|
[21] pry(main)* if s.has_setting? :discourse_narrative_bot_enab
[21] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[21] pry(main)* end
[21] pry(main)* end
Y solo para comprobar, falla con:
[21] pry(main)> SiteSetting.defaults.tap do |s|
[21] pry(main)* if s.has_setting? :discourse_narrative_bot_enabled
[21] pry(main)* s.set_regardless_of_locale(:discourse_narrative_bot_enab, false)
[21] pry(main)* end
[21] pry(main)* end
Así que propongo el siguiente cambio en un PR que estaría feliz de enviar:
if ENV['LOAD_PLUGINS'] == '1' && s.has_setting? :discourse_narrative_bot_enabled
Por alguna razón, la presencia del plugin de bot narrativo no se puede garantizar?
En estos ejemplos, la configuración del sitio es discourse_narrative_bot_enab, no discourse_narrative_bot_enabled. Supongo que una vez que eso se corrija, ¿no se podrá reproducir?
Lo más sorprendente aquí es:
Eso sugiere una diferencia en el entorno de ejecución para las ejecuciones programadas
Mirando uno de los registros de fallos, parece que GitHub está clonando el plugin multilingüe directamente en el directorio plugins, en lugar de en su propio directorio. Por lo tanto, está esencialmente ‘desinstalando’ todos los plugins principales (y fallando en instalarse correctamente).
Mirando la documentación, no parece haber una forma consistente de obtener el nombre del repositorio (sin el propietario), por lo que necesitaremos algún truco. Creo que esto debería funcionar:
cc @cvx - ¿quizás deberíamos usar esta técnica en el CI de la plantilla de plugin/tema?