tox/travis stuff. making testing more uniform.
This commit is contained in:
parent
c2b03afe55
commit
ca66e74099
30
.travis.yml
30
.travis.yml
|
@ -1,32 +1,24 @@
|
||||||
language: python
|
language: python
|
||||||
|
|
||||||
python:
|
env:
|
||||||
- "2.7"
|
- TOXENV=py27
|
||||||
- "3.3"
|
- TOXENV=py33
|
||||||
- "3.4"
|
- TOXENV=py34
|
||||||
- "pypy"
|
- TOXENV=pypy
|
||||||
- "pypy3"
|
- TOXENV=pypy3
|
||||||
|
- TOXENV=lint
|
||||||
|
|
||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- travis_retry pip install -r test_requirements.txt
|
|
||||||
- travis_retry pip install coveralls
|
- travis_retry pip install coveralls
|
||||||
|
|
||||||
script: coverage run --source=pylast ./tests/test_pylast.py
|
script: tox
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- coveralls
|
- "if [ $TOXENV == 'py27' ]; then pip install coveralls; coveralls; fi"
|
||||||
- travis_retry pip install scrutinizer-ocular
|
- "if [ $TOXENV == 'py27' ]; then travis_retry pip install scrutinizer-ocular; ocular; fi"
|
||||||
- ocular
|
- "if [ $TOXENV == 'py27' ]; then travis_retry pip install scrutinizer-ocular; ocular; fi"
|
||||||
|
|
||||||
after_script:
|
|
||||||
- coverage report
|
|
||||||
- ./check.sh
|
|
||||||
- pip install clonedigger
|
|
||||||
- clonedigger pylast
|
|
||||||
- grep "Clones detected" output.html
|
|
||||||
- grep "lines are duplicates" output.html
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
|
|
11
check.sh
11
check.sh
|
@ -1,11 +0,0 @@
|
||||||
pyflakes pylast
|
|
||||||
echo ---
|
|
||||||
pyflakes tests
|
|
||||||
echo ---
|
|
||||||
pep8 pylast
|
|
||||||
echo ---
|
|
||||||
pep8 tests
|
|
||||||
# echo ---
|
|
||||||
# clonedigger pylast.py
|
|
||||||
# grep "Clones detected" output.html
|
|
||||||
# grep "lines are duplicates" output.html
|
|
|
@ -1,4 +0,0 @@
|
||||||
coverage
|
|
||||||
pep8
|
|
||||||
pyyaml
|
|
||||||
pyflakes
|
|
|
@ -10,7 +10,8 @@ def mock_network():
|
||||||
_get_ws_auth=mock.Mock(return_value=("", "", ""))
|
_get_ws_auth=mock.Mock(return_value=("", "", ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
@pytest.mark.parametrize('unicode_artist', [u'\xe9lafdasfdsafdsa', u'éééééééé'])
|
|
||||||
|
@pytest.mark.parametrize('unicode_artist', [u'\xe9lafdasfdsafdsa', u'ééééééé])
|
||||||
def test_get_cache_key(unicode_artist):
|
def test_get_cache_key(unicode_artist):
|
||||||
request = pylast._Request(mock_network(), 'some_method',
|
request = pylast._Request(mock_network(), 'some_method',
|
||||||
params={'artist': unicode_artist})
|
params={'artist': unicode_artist})
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
"""
|
"""
|
||||||
Integration (not unit) tests for pylast.py
|
Integration (not unit) tests for pylast.py
|
||||||
"""
|
"""
|
||||||
import argparse
|
|
||||||
import os
|
import os
|
||||||
from random import choice
|
from random import choice
|
||||||
import sys
|
import sys
|
||||||
|
@ -1909,54 +1908,4 @@ class TestPyLast(unittest.TestCase):
|
||||||
self.assertEqual(str(tracks[0].track.artist), "Johnny Cash")
|
self.assertEqual(str(tracks[0].track.artist), "Johnny Cash")
|
||||||
self.assertEqual(str(tracks[0].track.title), "Ring of Fire")
|
self.assertEqual(str(tracks[0].track.title), "Ring of Fire")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="Integration (not unit) tests for pylast.py",
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
||||||
parser.add_argument(
|
|
||||||
'-1', '--single',
|
|
||||||
help="Run a single test")
|
|
||||||
parser.add_argument(
|
|
||||||
'-r', '--repeat',
|
|
||||||
help="Repeat a single test (100 times) until failure")
|
|
||||||
parser.add_argument(
|
|
||||||
'-m', '--matching',
|
|
||||||
help="Run tests with this in the name")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.single:
|
|
||||||
suite = unittest.TestSuite()
|
|
||||||
|
|
||||||
suite.addTest(TestPyLast(args.single))
|
|
||||||
unittest.TextTestRunner().run(suite)
|
|
||||||
|
|
||||||
elif args.repeat:
|
|
||||||
suite = unittest.TestSuite()
|
|
||||||
|
|
||||||
suite.addTest(TestPyLast(args.repeat))
|
|
||||||
for i in range(100):
|
|
||||||
print("Attempt " + str(i+1))
|
|
||||||
result = unittest.TextTestRunner().run(suite)
|
|
||||||
problems = len(result.errors) + len(result.failures)
|
|
||||||
if problems:
|
|
||||||
break
|
|
||||||
|
|
||||||
elif args.matching:
|
|
||||||
suite = unittest.TestSuite()
|
|
||||||
|
|
||||||
import inspect
|
|
||||||
methods = inspect.getmembers(TestPyLast, predicate=inspect.ismethod)
|
|
||||||
|
|
||||||
tests = []
|
|
||||||
for method, _ in methods:
|
|
||||||
if method.startswith("test_") and args.matching in method:
|
|
||||||
print(method)
|
|
||||||
suite.addTest(TestPyLast(method))
|
|
||||||
|
|
||||||
unittest.TextTestRunner().run(suite)
|
|
||||||
|
|
||||||
else:
|
|
||||||
unittest.main(failfast=True)
|
|
||||||
|
|
||||||
# End of file
|
# End of file
|
||||||
|
|
25
tox.ini
25
tox.ini
|
@ -1,11 +1,30 @@
|
||||||
[tox]
|
[tox]
|
||||||
envlist = py34, py27
|
envlist = py34, py27, pypy, pypy3
|
||||||
recreate = False
|
recreate = False
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
downloadcache = {homedir}/.pipcache
|
downloadcache = {homedir}/.pipcache
|
||||||
changedir = tests
|
|
||||||
deps =
|
deps =
|
||||||
|
pyyaml
|
||||||
pytest
|
pytest
|
||||||
mock
|
mock
|
||||||
commands = py.test {posargs}
|
pytest-cov
|
||||||
|
commands = py.test --doctest-modules -v --cov pylast --cov-report term-missing
|
||||||
|
|
||||||
|
[testenv:venv]
|
||||||
|
deps = ipdb
|
||||||
|
commands = {posargs}
|
||||||
|
|
||||||
|
[testenv:lint]
|
||||||
|
deps =
|
||||||
|
coverage
|
||||||
|
pep8
|
||||||
|
pyyaml
|
||||||
|
pyflakes
|
||||||
|
clonedigger
|
||||||
|
commands =
|
||||||
|
pyflakes pylast
|
||||||
|
pyflakes tests
|
||||||
|
pep8 pylast
|
||||||
|
pep8 tests
|
||||||
|
clonedigger pylast -o /dev/stdout | grep -E "Clones detected\|lines are duplicates"
|
Loading…
Reference in a new issue