So the other day I pulled a FSM template from the Network to Code NTC Templates repo. I discovered there was an issue with the specific template I wanted, and therefore decided to fix it and submit a pull request to the repo. (obviously I did this by forking the repository on GitHub)
The Network to Code folks insist that before any template modifications can be accepted into the repository it must pass the Travis CI test functions first. I went to the website, signed in with my github ID and allowed it to use the forked repo. When I then committed my change I discovered that Travis CI was automatically running the test.
The Travis CI integration works by processing the
travis.yml file in
the root folder of the repository. The file defined is very
simple. It was pretty cool to see this whole test run happen automatically.
--- language: python python: - "3.6" sudo: false install: - pip install tox script: - tox
However, the first two attempts to successfully run the tests failed. The first failure was not unexpected - I had not completed the output tests and expected it to fail, but it is less than ideal (and takes a while) to have a commit->push->travis_ci cycle for testing. It did not take long to realised that of course I could run the tests locally before pushing them into the wider world.
For future template developments I will be using tox to check the testing before
committing to github. tox uses
tox.ini in the root folder of the repository
to define the test environment - one issue I came accross is that on my personal
Macbook I had python 3.7 installed and tox was looking for python3.6 - editing
the tox.ini as follows solved that:
[tox] envlist = py37 [testenv] deps = pytest PyYAML whitelist_externals = git rm commands = pytest
(A useful feature is that if you are running PyCharm you can right click on the tox.ini file to run the testing suite.)
As far as I can tell, running tox means it runs the full set of tests - it might be useful to only run for the specific template you’re working on, but I have yet to work out how to do that.