Skip to content

Commit f556354

Browse files
committed
Tox env with no dependencies
1 parent e4238a4 commit f556354

File tree

4 files changed

+53
-40
lines changed

4 files changed

+53
-40
lines changed

.github/workflows/main.yml

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [push]
44

55
jobs:
66
checks:
7-
name: Lint, typing, coverage
7+
name: Flake8, typing, black
88
runs-on: ubuntu-latest
99

1010
steps:
@@ -27,12 +27,6 @@ jobs:
2727
- name: Black
2828
run: tox -e black
2929

30-
- name: Generate coverage report
31-
run: tox -e py
32-
33-
- name: Upload coverage report
34-
run: bash <(curl -s https://codecov.io/bash)
35-
3630

3731
tests-ubuntu:
3832
name: "Tests: Python ${{ matrix.python-version }}, Ubuntu"
@@ -55,6 +49,32 @@ jobs:
5549
- name: Run tests
5650
run: tox -e py
5751

52+
- name: Upload coverage report
53+
run: bash <(curl -s https://codecov.io/bash) -cF tests
54+
55+
56+
tests-no-deps:
57+
name: "Tests: Python 3.8, Ubuntu, no deps"
58+
runs-on: ubuntu-latest
59+
60+
steps:
61+
- uses: actions/checkout@v2
62+
63+
- name: Set up Python 3.8
64+
uses: actions/setup-python@v1
65+
with:
66+
python-version: 3.8
67+
68+
- name: Install tox
69+
run: pip install tox
70+
71+
- name: Run tests
72+
run: tox -e py38-no-deps
73+
74+
- name: Upload coverage report
75+
run: bash <(curl -s https://codecov.io/bash) -cF tests
76+
77+
5878
tests-other-os:
5979
name: "Tests: Python 3.8, ${{ matrix.os }}"
6080
runs-on: "${{ matrix.os }}"

tests/requirements.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

tests/test_utils.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
from tests import AttrsItem, DataClassItem, ScrapyItem, ScrapySubclassedItem
77

88

9-
def mocked_import(name, *args, **kwargs):
10-
raise ImportError(name)
11-
12-
139
class ItemLikeTestCase(unittest.TestCase):
1410
def test_false(self):
1511
self.assertFalse(is_item(int))
@@ -50,8 +46,6 @@ def test_false(self):
5046
self.assertFalse(is_attrs_instance(sum))
5147
self.assertFalse(is_attrs_instance(1234))
5248
self.assertFalse(is_attrs_instance(object()))
53-
self.assertFalse(is_attrs_instance(ScrapyItem()))
54-
self.assertFalse(is_attrs_instance(ScrapySubclassedItem()))
5549
self.assertFalse(is_attrs_instance("a string"))
5650
self.assertFalse(is_attrs_instance(b"some bytes"))
5751
self.assertFalse(is_attrs_instance({"a": "dict"}))
@@ -60,11 +54,6 @@ def test_false(self):
6054
self.assertFalse(is_attrs_instance({"a", "set"}))
6155
self.assertFalse(is_attrs_instance(AttrsItem))
6256

63-
@unittest.skipIf(not AttrsItem, "attrs module is not available")
64-
@mock.patch("builtins.__import__", mocked_import)
65-
def test_module_not_available(self):
66-
self.assertFalse(is_attrs_instance(AttrsItem(name="asdf", value=1234)))
67-
6857
@unittest.skipIf(not AttrsItem, "attrs module is not available")
6958
def test_true(self):
7059
self.assertTrue(is_attrs_instance(AttrsItem()))
@@ -77,9 +66,6 @@ def test_false(self):
7766
self.assertFalse(is_dataclass_instance(sum))
7867
self.assertFalse(is_dataclass_instance(1234))
7968
self.assertFalse(is_dataclass_instance(object()))
80-
self.assertFalse(is_dataclass_instance(ScrapyItem()))
81-
self.assertFalse(is_dataclass_instance(AttrsItem()))
82-
self.assertFalse(is_dataclass_instance(ScrapySubclassedItem()))
8369
self.assertFalse(is_dataclass_instance("a string"))
8470
self.assertFalse(is_dataclass_instance(b"some bytes"))
8571
self.assertFalse(is_dataclass_instance({"a": "dict"}))
@@ -88,11 +74,6 @@ def test_false(self):
8874
self.assertFalse(is_dataclass_instance({"a", "set"}))
8975
self.assertFalse(is_dataclass_instance(DataClassItem))
9076

91-
@unittest.skipIf(not DataClassItem, "dataclasses module is not available")
92-
@mock.patch("builtins.__import__", mocked_import)
93-
def test_module_not_available(self):
94-
self.assertFalse(is_dataclass_instance(DataClassItem(name="asdf", value=1234)))
95-
9677
@unittest.skipIf(not DataClassItem, "dataclasses module is not available")
9778
def test_true(self):
9879
self.assertTrue(is_dataclass_instance(DataClassItem()))
@@ -105,7 +86,6 @@ def test_false(self):
10586
self.assertFalse(is_scrapy_item(sum))
10687
self.assertFalse(is_scrapy_item(1234))
10788
self.assertFalse(is_scrapy_item(object()))
108-
self.assertFalse(is_scrapy_item(AttrsItem()))
10989
self.assertFalse(is_scrapy_item("a string"))
11090
self.assertFalse(is_scrapy_item(b"some bytes"))
11191
self.assertFalse(is_scrapy_item({"a": "dict"}))
@@ -114,11 +94,6 @@ def test_false(self):
11494
self.assertFalse(is_scrapy_item({"a", "set"}))
11595
self.assertFalse(is_scrapy_item(ScrapySubclassedItem))
11696

117-
@unittest.skipIf(not ScrapySubclassedItem, "scrapy module is not available")
118-
@mock.patch("builtins.__import__", mocked_import)
119-
def test_module_not_available(self):
120-
self.assertFalse(is_scrapy_item(ScrapySubclassedItem(name="asdf", value=1234)))
121-
12297
@unittest.skipIf(not ScrapySubclassedItem, "scrapy module is not available")
12398
def test_true(self):
12499
self.assertTrue(is_scrapy_item(ScrapyItem()))

tox.ini

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,46 @@
11
[tox]
2-
envlist = py35,py36,py37,py38,flake8,typing,black
2+
envlist = py35,py36,py37,py38,py38-no-deps,flake8,typing,black
33

44
[testenv]
55
deps =
6-
-rtests/requirements.txt
6+
pytest>=5.4
7+
pytest-cov>=2.8
78
commands =
8-
pytest --verbose --cov=itemadapter --cov-report=term-missing --cov-report=html --cov-report=xml {posargs: itemadapter tests}
9+
pytest --verbose --cov=itemadapter --cov-report=term-missing --cov-report=html --cov-report=xml --cov-append {posargs: itemadapter tests}
910

1011
[testenv:py35]
1112
basepython = python3.5
13+
deps =
14+
{[testenv]deps}
15+
attrs
16+
scrapy>=2.0
1217

1318
[testenv:py36]
1419
basepython = python3.6
20+
deps =
21+
{[testenv]deps}
22+
attrs
23+
dataclasses
24+
scrapy>=2.0
1525

1626
[testenv:py37]
1727
basepython = python3.7
28+
deps =
29+
{[testenv]deps}
30+
attrs
31+
scrapy>=2.0
1832

1933
[testenv:py38]
2034
basepython = python3.8
35+
deps =
36+
{[testenv]deps}
37+
attrs
38+
scrapy>=2.0
39+
40+
[testenv:py38-no-deps]
41+
deps =
42+
{[testenv]deps}
43+
basepython = python3.8
2144

2245
[testenv:flake8]
2346
basepython = python3.8

0 commit comments

Comments
 (0)