Repositorio base para el desarrollo de la actividad 5 sobre tests de mutación del ramo IIC3745 - Testing. Este contiene:
- Configuraciones para
rspec
,simplecov
ymutant
- Código base y una bateria pequeña de pruebas bajo cobertura de linea de SimpleCov
- Configuraciones de Docker para evitar errores de compatibilidad.
El codebase fue pensado bajo una filosofía plug & play. Es decir, se creó para evitar que tuvieran que lidiar con la compatibilidad entre versiones de Ruby / RSpec / mutant y la configuración de esta última gema.
Por lo anterior, se debe utilizar ruby v2.6.6
(más info en este link) y es CRUCIAL QUE NO MODIFIQUEN LO SIGUIENTE:
- Las versiones de las gemas
- Las ubicaciones de los archivos
- Las configuraciones en
.rspec
ospec/spec_helper.rb
Dicho de otro modo, lo único que pueden modificar son los archivos de ./app
o ./spec/dcc_burger_spec.rb
.
Cualquier configuración que no siga las instrucciones anteriores puede traer incompatibilidades entre mutant
y rspec
, esto agrega mucha complejidad la realización de la actividad y puede traer problemas en la corrección (revisar sección Formato de entrega del enunciado).
Se ha dispuesto de dos sets de instrucciones para la ejecución de los tests normales y de mutación del repositorio (local y con Docker).
Se recomienda usar Docker para evitar cualquier problema de compatibilidad, pero la modalidad local debiera funcionar si no tienen nada raro instalado.
Si tienen cualquier problema con la ejecución, siéntanse libres de plantear su duda en el foro del curso
-
Instalar
[email protected]
. Lo más simple es hacer uso de un manager de versiones tales comorbenv
orvm
. -
Instalar las gemas
bundle install
-
Cambiar los permisos del "binario" para poder ejecutarlo
chmod +x ./bin/*
Luego, ejecutar las pruebas de mutación con ./bin/mutate
y/o las pruebas normales con rspec
o bundle exec rspec
.
-
Construir contenedor
docker build -t iic3745-2020-2/a05-base .
-
Entrar a sesión de
bash
dentro del contenedordocker run -it --rm --name a05-base -v "$(pwd):/tester" iic3745-2020-2/a05-base
Luego, ejecutar las pruebas de mutación con ./bin/mutate
o mutate
y/o las pruebas sin mutación con rspec
o bundle exec rspec
.
Para la ejecución se monta un volumen, por lo que el contenedor siempre correrá las pruebas en base a los archivos más recientes (sin necesidad de hacer docker build
o docker run
nuevamente).