Merge pull request #1433 from scrapy/codecov

Coverage and reports at codecov.io and coveralls.io
This commit is contained in:
Mikhail Korobov 2015-08-14 05:21:10 +05:00
commit 9adb5c31c0
9 changed files with 57 additions and 5 deletions

View File

@ -1,3 +1,19 @@
[run]
branch = true
include = scrapy/*
omit = scrapy/xlib*,scrapy/tests*
omit =
tests/*
scrapy/xlib/*
scrapy/conf.py
scrapy/stats.py
scrapy/project.py
scrapy/utils/decorator.py
scrapy/statscol.py
scrapy/squeue.py
scrapy/log.py
scrapy/dupefilter.py
scrapy/command.py
scrapy/linkextractor.py
scrapy/spider.py
scrapy/contrib/*
scrapy/contrib_exp/*

View File

@ -7,8 +7,11 @@ env:
- TOXENV=py33
- TOXENV=docs
install:
- pip install -U tox twine wheel
- pip install -U tox twine wheel codecov coveralls
script: tox
after_success:
- codecov
- coveralls
notifications:
irc:
use_notice: true

View File

@ -18,6 +18,10 @@ Scrapy
:target: https://github.com/scrapy/scrapy/wiki/Python-3-Porting
:alt: Python 3 Porting Status
.. image:: https://img.shields.io/codecov/c/github/scrapy/scrapy/master.svg
:target: http://codecov.io/github/scrapy/scrapy?branch=master
:alt: Coverage report
Overview
========

View File

@ -154,6 +154,13 @@ To run a specific test (say ``tests/test_loader.py``) use:
``tox -- tests/test_loader.py``
To see coverage report install `coverage`_ (``pip install coverage``) and run:
``coverage report``
see output of ``coverage --help`` for more options like html or xml report.
.. _coverage: https://pypi.python.org/pypi/coverage
Writing tests
-------------

View File

@ -13,6 +13,14 @@ os.environ['http_proxy'] = ''
os.environ['https_proxy'] = ''
os.environ['ftp_proxy'] = ''
# Absolutize paths to coverage config and output file because tests that
# spawn subprocesses also changes current working directory.
_sourceroot = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if 'COV_CORE_CONFIG' in os.environ:
os.environ['COVERAGE_FILE'] = os.path.join(_sourceroot, '.coverage')
os.environ['COV_CORE_CONFIG'] = os.path.join(_sourceroot,
os.environ['COV_CORE_CONFIG'])
try:
import unittest.mock as mock
except ImportError:

View File

@ -1,4 +1,5 @@
pytest>=2.6.0
pytest-twisted
pytest-cov
testfixtures
jmespath

View File

@ -3,5 +3,6 @@ mock
mitmproxy==0.10.1
netlib==0.10.1
pytest-twisted
pytest-cov
jmespath
testfixtures

View File

@ -14,4 +14,16 @@ class VersionTest(ProcessTest, unittest.TestCase):
def test_output(self):
encoding = getattr(sys.stdout, 'encoding') or 'utf-8'
_, out, _ = yield self.execute([])
self.assertEqual(out.strip().decode(encoding), "Scrapy %s" % scrapy.__version__)
self.assertEqual(
out.strip().decode(encoding),
"Scrapy %s" % scrapy.__version__,
)
@defer.inlineCallbacks
def test_verbose_output(self):
encoding = getattr(sys.stdout, 'encoding') or 'utf-8'
_, out, _ = yield self.execute(['-v'])
headers = [l.partition(":")[0].strip()
for l in out.strip().decode(encoding).splitlines()]
self.assertEqual(headers, ['Scrapy', 'lxml', 'libxml2', 'Twisted',
'Python', 'pyOpenSSL', 'Platform'])

View File

@ -15,7 +15,7 @@ deps =
leveldb
-rtests/requirements.txt
commands =
py.test {posargs:scrapy tests}
py.test --cov=scrapy --cov-report= {posargs:scrapy tests}
[testenv:precise]
basepython = python2.7
@ -34,7 +34,7 @@ basepython = python2.7
commands =
pip install -U https://github.com/scrapy/w3lib/archive/master.zip#egg=w3lib
pip install -U https://github.com/scrapy/queuelib/archive/master.zip#egg=queuelib
py.test {posargs:scrapy tests}
py.test --cov=scrapy --cov-report= {posargs:scrapy tests}
[testenv:py33]
basepython = python3.3