Skip to content

Update Travis to use tox, and add Appveyor CI #293

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# To activate, change the Appveyor settings to use `.appveyor.yml`.
init:
- SET PATH=C:\\Python27\\Scripts\\;%PATH%"
- SET COVERAGE_RUN_OPTIONS="--parallel-mode"

install:
- git submodule update --init --recursive
- python -m pip install tox codecov

build: off

test_script:
# Avoid py35-optional, as pypi does not have lxml wheels for py35
- python -m tox -e "py35-base,{py26,py27,py33,py34}-{base,optional}"

on_success:
- coverage combine
- codecov
2 changes: 1 addition & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ ignore=tests

[MESSAGES CONTROL]
# messages up to fixme should probably be fixed somehow
disable = redefined-builtin,attribute-defined-outside-init,anomalous-backslash-in-string,no-self-use,redefined-outer-name,bad-continuation,wrong-import-order,superfluous-parens,no-member,duplicate-code,super-init-not-called,abstract-method,property-on-old-class,wrong-import-position,no-name-in-module,no-init,bad-mcs-classmethod-argument,bad-classmethod-argument,fixme,invalid-name,import-error,too-few-public-methods,too-many-ancestors,too-many-arguments,too-many-boolean-expressions,too-many-branches,too-many-instance-attributes,too-many-locals,too-many-lines,too-many-public-methods,too-many-return-statements,too-many-statements,missing-docstring,line-too-long,locally-disabled,locally-enabled,bad-builtin,deprecated-lambda
disable = redefined-builtin,attribute-defined-outside-init,anomalous-backslash-in-string,no-self-use,redefined-outer-name,bad-continuation,wrong-import-order,superfluous-parens,no-member,duplicate-code,super-init-not-called,abstract-method,property-on-old-class,wrong-import-position,no-name-in-module,no-init,bad-mcs-classmethod-argument,bad-classmethod-argument,fixme,invalid-name,import-error,too-few-public-methods,too-many-ancestors,too-many-arguments,too-many-boolean-expressions,too-many-branches,too-many-instance-attributes,too-many-locals,too-many-lines,too-many-public-methods,too-many-return-statements,too-many-statements,missing-docstring,line-too-long,locally-disabled,locally-enabled,bad-builtin,deprecated-lambda,bad-option-value,star-args,abstract-class-little-used,abstract-class-not-used

[FORMAT]
max-line-length=139
Expand Down
15 changes: 5 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,17 @@ cache:
- $HOME/.cache/pip

env:
- USE_OPTIONAL=true
- USE_OPTIONAL=false

before_install:
- git submodule update --init --recursive
- TOXENV=optional
- TOXENV=base

install:
- bash requirements-install.sh
- pip install tox codecov

script:
- if [[ $TRAVIS_PYTHON_VERSION == pypy* ]]; then py.test; fi
- if [[ $TRAVIS_PYTHON_VERSION != pypy* ]]; then coverage run -m pytest; fi
- bash flake8-run.sh
- tox

after_script:
- python debug-info.py

after_success:
- if [[ $TRAVIS_PYTHON_VERSION != pypy* ]]; then coverage combine && codecov; fi
- codecov
9 changes: 0 additions & 9 deletions flake8-run.sh

This file was deleted.

6 changes: 5 additions & 1 deletion requirements-optional.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ chardet>=2.2

# lxml is supported with its own treebuilder ("lxml") and otherwise
# uses the standard ElementTree support
lxml ; platform_python_implementation == 'CPython'
lxml ; platform_python_implementation == 'CPython' and sys_platform != 'win32'
lxml==3.6.0 ; platform_python_implementation == 'CPython' and sys_platform == 'win32' and python_version <= '3.4'
lxml==3.6.0 ; platform_python_implementation == 'CPython' and sys_platform == 'win_amd64' and python_version <= '3.4'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we have this pinned to 3.6.0? (answers preferably as a comment!)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not mandatory, but highly recommended to simplify life for Windows users.
My reasoning in the commit msg is:

Require lxml 3.6.0 on Windows as it has wheels available for 2.6-3.4.

3.6.1 doesnt have wheels; if we dont pin it, pip will attempt to install 3.6.1 from source.

If you agree with this reasoning, ill add a comment explaining it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, please do add a comment!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is all unnecessary now with later releases of lxml. yay. #363

lxml ; platform_python_implementation == 'CPython' and sys_platform == 'win32' and python_version >= '3.5'
lxml ; platform_python_implementation == 'CPython' and sys_platform == 'win_amd64' and python_version >= '3.5'

# DATrie can be used in place of our Python trie implementation for
# slightly better parsing performance.
Expand Down
8 changes: 8 additions & 0 deletions requirements-test.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
-r requirements.txt

tox

flake8<3.0

pylint==1.6.4 ; python_version > '2.6'
pylint==1.3.1 ; python_version <= '2.6'
astroid==1.3.5 ; python_version <= '2.6'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was to get Python 2.6 builds to work , as pylint dropped support for Python 2.6 a while ago, hence this workaround.
Anyway, #330 has landed, so that is unnecessary now.


pytest
coverage
pytest-expect>=1.1,<2.0
mock
18 changes: 9 additions & 9 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ envlist = {py26,py27,py33,py34,py35,pypy}-{base,optional}

[testenv]
deps =
flake8<3.0
pytest
pytest-expect>=1.1,<2.0
mock
base: six
base: webencodings
py26-base: ordereddict
-r{toxinidir}/requirements-test.txt
optional: -r{toxinidir}/requirements-optional.txt

passenv =
COVERAGE_RUN_OPTIONS
commands =
{envbindir}/py.test
{toxinidir}/flake8-run.sh
coverage run {env:COVERAGE_RUN_OPTIONS:} -m pytest
flake8
pylint --rcfile={toxinidir}/.pylintrc html5lib

[flake8]
exclude = ./.tox