GildedRose-Refactoring-Kata/README.md
2025-02-06 16:18:37 +10:30

1.8 KiB

This is my implementation of the Gilded Rose Kata.

Tidy/refactor -> behavior change

/main

In the main branch is simply a refactoring, with the new requirement yet to implemented. I use the lift up conditional refactoring, inspired by Emily Bache and Llewellyn Falco.

See their videos here:

TODO: link vids

  • Emily Bache:
  • Llewellyn Falco:

/feature/implement-new-requirement

In this branch, I have implemented the new requirement.

/archive/original-code

This branch contains the original code, before the refactoring.

Getting setup

Firstly, setup a python 3.12 environment using venv

Then, install the requirements:

pip install -r requirements.txt

Running the tests

This project uses characterisation testing to ensure the behavior of the code remains the same during refactoring. Specifically, it uses pytest-approvals

coverage run --branch -m pytest --approvaltests-add-reporter=diffuse -s ;
coverage html ;
coverage report --fail-under=100

This will run the tests, and will also:

  • automatically bring up diffuse to view differences side by side, if there are any behavior changes.
    • feel free to install and use a diff reporter of your choice. See pytest docs for more info on configuring reporters: selecting a reporter
  • warn you if your coverage falls below 100% (either you need more tests, or there is dead code)
  • generate a coverage report (You can view this in the htmlcov directory by opening index.html in a browser)