Ruby

Hoy me encontré con este error ejecutando unos test en Ruby:

/opt/hostedtoolcache/Ruby/3.2.2/x64/lib/ruby/gems/3.2.0/gems/mocha-2.0.4/lib/mocha/integration/mini_test/adapter.rb:26:in `included': uninitialized constant MiniTest (NameError)

Mocha::ExpectationErrorFactory.exception_class = ::MiniTest::Assertion
^^^^^^^^^^^
Did you mean? Minitest

Así que salí a buscar el repositorio de código de mocha (una biblioteca para mocks y stubs en Ruby), y encontré que el problema ya había sido reportado. En las notas de la versión más reciente de Minitest, avisan que la capa de compatibilidad con MiniTest ahora se carga únicamente al estar presente la variable de ambiente MT_COMPAT. Como se puede ver en el error, mocha hace un llamado a MiniTest en la línea 26 de lib/mocha/integration/mini_test/adapter.rb en vez de usar Minitest.

Ya hay un Pull Request corrigiendo el problema. Pero mientras no publiquen una versión actualizada, podemos evitar el error temporalmente agregando la variable de ambiente MT_COMPAT al ejecutar nuestros tests:

$ MT_COMPAT=true rake test

De todas formas, no tardará en publicarse una versión nueva de mocha olvidándose del viejo nombre MiniTest.

Claramente este cambio en minitest rompe la compatibilidad hacia atrás. Esto generalmente debería hacerse únicamente en versiones mayores, al pasar a la versión 6.0.0 de 5.18.1, en vez de hacerlo en la versión 5.19.0 como pasó. Pero como discuten en el reporte del repositorio de mocha, el cambio tiene más de 10 años, así que ya viene siendo hora de que se vaya actualizando el código 😁

Actualización: Hace apenas un par de horas que se publicó esta entrada, y ya hay una nueva versión corregida de mocha. mocha 2.1.0 corrige el error con MiniTest 👍

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Toasty!