Skip to content
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

fix: upgrade pip before running tox #522

Merged
merged 4 commits into from Jul 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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
Copy link

Choose a reason for hiding this comment

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

wow, that is slow.I wonder if pypy-3.8-nightly is any faster?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I can try

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link

Choose a reason for hiding this comment

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

wow, 16m 26s for pypy3.8 on windows, ~2m for cpython on windows, ~3 min for pypy on ubuntu, ~1 min for cpython on ubuntu.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I wonder what exactly is happening.

A lot of tests use regex, could that be it?

Anyway, I'm rewriting the plugin, and as an effect of that, I'm also having to re-write a lot of the test.

It will be interesting to see what the difference might be.


# 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