Add missing script key to Travis CI config (#1950)

* Add failing test for travis.yml

I see three options to test travis.yml :

1. Testing that the YAML contains relevant value. Least useful and least
reliable, but simplest to implement.

2. Testing that the YAML is valid TravisCI YAML. Unfortunately this is
difficult / impossible. Doing 'travis lint' would succeed, this command
does not check for 'script' key presence and wouldn't be useful for us.

We could use 'travis-build' to verify that the YAML can be converted to
a worker config, but as of now 'travis-build' doesn't work out of the
box.

There is a new tool for validating travis YAML files 'travis-yml', but
as of now it's a ruby-only library and it's still a work in progress.

3. Running Travis CI task based on the generated YAML. This seems the
best approach, however since cookiecutter-django itself uses Travis CI,
that would require running Travis CI from within Travis CI.

Scheduling Travis CI job without a github push still requires a public
github repo, which is something that we can't generate on demand.

Given that I'm opting to use approach 1.

* Adds missing config to generated .travis.yml

The keys added are as follows:

1. 'script'

Required by Travis, cookiecutter-django used to provide it until it has
been removed together with hitch.

I'm assuming hitch has been replaced with pytest, I'm setting pytest as
the new value for the 'script' key.

2. 'install'

Not required by Travis, but necessary in our case; installs test
libraries, mostly pytest.

As of now this points to 'local.txt' requirements file. There used to be
a separate 'test.txt' requirements file but it has been decided to merge
it with 'local.txt', see discussion in
https://github.com/pydanny/cookiecutter-django/pull/1557 .

* Update CONTRIBUTORS.rst
This commit is contained in:
btknu 2019-03-06 02:10:45 +01:00 committed by Bruno Alla
parent aea5c807f6
commit 6e72169ffe
4 changed files with 24 additions and 0 deletions

View File

@ -71,6 +71,7 @@ Listed in alphabetical order.
Bo Lopker `@blopker`_
Bouke Haarsma
Brent Payne `@brentpayne`_ @brentpayne
Bartek `@btknu`
Burhan Khalid            `@burhan`_                   @burhan
Carl Johnson `@carlmjohnson`_ @carlmjohnson
Catherine Devlin `@catherinedevlin`_
@ -299,6 +300,7 @@ Listed in alphabetical order.
.. _@umrashrf: https://github.com/umrashrf
.. _@ahhda: https://github.com/ahhda
.. _@keithjeb: https://github.com/keithjeb
.. _@btknu: https://github.com/btknu
Special Thanks
~~~~~~~~~~~~~~

View File

@ -11,3 +11,4 @@ flake8==3.7.6
tox==3.6.1
pytest==4.3.0
pytest-cookies==0.3.0
pyyaml==3.13

View File

@ -1,6 +1,7 @@
import os
import re
import sh
import yaml
import pytest
from binaryornot.check import is_binary
@ -85,3 +86,19 @@ def test_flake8_compliance(cookies):
sh.flake8(str(result.project))
except sh.ErrorReturnCode as e:
pytest.fail(e)
def test_travis_invokes_pytest(cookies, context):
context.update({"use_travisci": "y"})
result = cookies.bake(extra_context=context)
assert result.exit_code == 0
assert result.exception is None
assert result.project.basename == context["project_slug"]
assert result.project.isdir()
with open(f'{result.project}/.travis.yml', 'r') as travis_yml:
try:
assert yaml.load(travis_yml)['script'] == ['pytest']
except yaml.YAMLError as e:
pytest.fail(e)

View File

@ -9,3 +9,7 @@ before_install:
language: python
python:
- "3.6"
install:
- pip install -r requirements/local.txt
script:
- "pytest"