Skip to content

Commit

Permalink
fix: upgrade pip before running tox (#522)
Browse files Browse the repository at this point in the history
* fix: upgrade pip before running tox

* Use "-X utf8" to solve encoding issues on Windows

* Disable pypy3.8 on windows
  • Loading branch information
BeyondEvil committed Jul 17, 2022
1 parent 3fbfd25 commit ea89db8
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 33 deletions.
19 changes: 15 additions & 4 deletions .github/workflows/tests.yml
Expand Up @@ -63,9 +63,10 @@ jobs:
name: pypy3-ubuntu
python-version: pypy-3.8

- os: windows-latest
name: pypy3-windows
python-version: pypy-3.8
# TODO: This test takes 10(!) times as long as the regular py38 on Windows
# - os: windows-latest
# name: pypy3-windows
# python-version: pypy-3.8

# https://github.com/pytest-dev/pytest-html/issues/482
- os: macOS-latest
Expand All @@ -79,27 +80,37 @@ jobs:
steps:
- name: Set Newline Behavior
run : git config --global core.autocrlf false

- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: ${{ matrix['python-version'] }}

- name: Upgrade pip
run: python -m pip install --upgrade pip

- name: Install tox
run: python -m pip install --upgrade tox

- name: Get Tox Environment Name From Matrix Name
uses: rishabhgupta/split-by@v1
id: split-matrix-name
with:
string: '${{ matrix.name }}'
split-by: '-'

- name: Test with coverage
if: "! contains(matrix.name, 'pypy3')"
run: python -m tox -e ${{ steps.split-matrix-name.outputs._0}}-cov
run: python -m tox -rvv -e ${{ steps.split-matrix-name.outputs._0}}-cov

- name: Test without coverage
if: "contains(matrix.name, 'pypy3')"
run: python -m tox -e ${{ steps.split-matrix-name.outputs._0}}

# TODO: https://github.com/pytest-dev/pytest-html/issues/481
# - name: Upload coverage to codecov
# if: github.event.schedule == ''
Expand Down
29 changes: 2 additions & 27 deletions testing/test_pytest_html.py
@@ -1,7 +1,6 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import builtins
import json
import os
import random
Expand All @@ -13,28 +12,6 @@

pytest_plugins = ("pytester",)

if os.name == "nt":
# Force a utf-8 encoding on file io (since by default windows does not). See
# https://github.com/pytest-dev/pytest-html/issues/336
# If we drop support for Python 3.6 and earlier could use python -X utf8 instead.
_real_open = builtins.open

def _open(file, mode="r", buffering=-1, encoding=None, *args, **kwargs):
if mode in ("r", "w") and encoding is None:
encoding = "utf-8"

return _real_open(file, mode, buffering, encoding, *args, **kwargs)

builtins.open = _open


def remove_deprecation_from_recwarn(recwarn):
# TODO: Temporary hack until they fix
# https://github.com/pytest-dev/pytest/issues/6936
return [
item for item in recwarn if "TerminalReporter.writer" not in repr(item.message)
]


def run(testdir, path="report.html", *args):
path = testdir.tmpdir.join(path)
Expand Down Expand Up @@ -972,12 +949,12 @@ def test_ansi():
assert result.ret == 0
assert not re.search(r"\[[\d;]+m", html)

@pytest.mark.parametrize("content", [("'foo'"), ("u'\u0081'")])
@pytest.mark.parametrize("content", ["'foo'", "u'\u0081'"])
def test_utf8_longrepr(self, testdir, content):
testdir.makeconftest(
f"""
import pytest
@pytest.hookimpl(hookwrapper=True)
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
Expand Down Expand Up @@ -1021,8 +998,6 @@ def test_css(self, testdir, recwarn, colors):
cssargs.extend(["--css", path])
result, html = run(testdir, "report.html", "--self-contained-html", *cssargs)
assert result.ret == 0
warnings = remove_deprecation_from_recwarn(recwarn)
assert len(warnings) == 0
for k, v in css.items():
assert str(v["path"]) in html
assert v["style"] in html
Expand Down
4 changes: 2 additions & 2 deletions tox.ini
Expand Up @@ -16,8 +16,8 @@ deps =
ansi2html # soft-dependency
cov: pytest-cov
commands =
!cov: pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html {posargs}
cov: pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html --cov={envsitepackagesdir}/pytest_html --cov-report=term --cov-report=xml {posargs}
!cov: python -X utf8 -m pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html {posargs}
cov: python -X utf8 -m pytest -v -r a --color=yes --html={envlogdir}/report.html --self-contained-html --cov={envsitepackagesdir}/pytest_html --cov-report=term --cov-report=xml {posargs}

[testenv:linting]
skip_install = True
Expand Down

0 comments on commit ea89db8

Please sign in to comment.