Skip to content

Commit

Permalink
💫 Tidy up and auto-format tests (explosion#2967)
Browse files Browse the repository at this point in the history
* Auto-format tests with black

* Add flake8 config

* Tidy up and remove unused imports

* Fix redefinitions of test functions

* Replace orths_and_spaces with words and spaces

* Fix compatibility with pytest 4.0

* xfail test for now

Test was previously overwritten by following test due to naming conflict, so failure wasn't reported

* Unfail passing test

* Only use fixture via arguments

Fixes pytest 4.0 compatibility
  • Loading branch information
ines authored and honnibal committed Nov 27, 2018
1 parent 2c37e0c commit b6e9914
Show file tree
Hide file tree
Showing 109 changed files with 2,278 additions and 1,717 deletions.
4 changes: 4 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[flake8]
ignore = E203, E266, E501, W503
max-line-length = 80
select = B,C,E,F,W,T4,B9
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ujson>=1.35
dill>=0.2,<0.3
regex==2018.01.10
requests>=2.13.0,<3.0.0
pytest>=3.6.0,<4.0.0
pytest>=4.0.0,<5.0.0
pytest-timeout>=1.3.0,<2.0.0
mock>=2.0.0,<3.0.0
pathlib==1.0.1; python_version < "3.4"
114 changes: 61 additions & 53 deletions spacy/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from __future__ import unicode_literals

import pytest
from io import StringIO, BytesIO
from spacy.util import get_lang_class


Expand All @@ -11,126 +10,135 @@ def pytest_addoption(parser):


def pytest_runtest_setup(item):
for opt in ['slow']:
for opt in ["slow"]:
if opt in item.keywords and not item.config.getoption("--%s" % opt):
pytest.skip("need --%s option to run" % opt)


@pytest.fixture(scope='module')
@pytest.fixture(scope="module")
def tokenizer():
return get_lang_class('xx').Defaults.create_tokenizer()
return get_lang_class("xx").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def en_tokenizer():
return get_lang_class('en').Defaults.create_tokenizer()
return get_lang_class("en").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def en_vocab():
return get_lang_class('en').Defaults.create_vocab()
return get_lang_class("en").Defaults.create_vocab()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def en_parser(en_vocab):
nlp = get_lang_class('en')(en_vocab)
return nlp.create_pipe('parser')
nlp = get_lang_class("en")(en_vocab)
return nlp.create_pipe("parser")


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def es_tokenizer():
return get_lang_class('es').Defaults.create_tokenizer()
return get_lang_class("es").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def de_tokenizer():
return get_lang_class('de').Defaults.create_tokenizer()
return get_lang_class("de").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def fr_tokenizer():
return get_lang_class('fr').Defaults.create_tokenizer()
return get_lang_class("fr").Defaults.create_tokenizer()


@pytest.fixture
def hu_tokenizer():
return get_lang_class('hu').Defaults.create_tokenizer()
return get_lang_class("hu").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def fi_tokenizer():
return get_lang_class('fi').Defaults.create_tokenizer()
return get_lang_class("fi").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def ro_tokenizer():
return get_lang_class('ro').Defaults.create_tokenizer()
return get_lang_class("ro").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def id_tokenizer():
return get_lang_class('id').Defaults.create_tokenizer()
return get_lang_class("id").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def sv_tokenizer():
return get_lang_class('sv').Defaults.create_tokenizer()
return get_lang_class("sv").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def bn_tokenizer():
return get_lang_class('bn').Defaults.create_tokenizer()
return get_lang_class("bn").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def ga_tokenizer():
return get_lang_class('ga').Defaults.create_tokenizer()
return get_lang_class("ga").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def he_tokenizer():
return get_lang_class('he').Defaults.create_tokenizer()
return get_lang_class("he").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def nb_tokenizer():
return get_lang_class('nb').Defaults.create_tokenizer()
return get_lang_class("nb").Defaults.create_tokenizer()

@pytest.fixture(scope='session')

@pytest.fixture(scope="session")
def da_tokenizer():
return get_lang_class('da').Defaults.create_tokenizer()
return get_lang_class("da").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def ja_tokenizer():
mecab = pytest.importorskip("MeCab")
return get_lang_class('ja').Defaults.create_tokenizer()
return get_lang_class("ja").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def th_tokenizer():
pythainlp = pytest.importorskip("pythainlp")
return get_lang_class('th').Defaults.create_tokenizer()
return get_lang_class("th").Defaults.create_tokenizer()

@pytest.fixture(scope='session')

@pytest.fixture(scope="session")
def tr_tokenizer():
return get_lang_class('tr').Defaults.create_tokenizer()
return get_lang_class("tr").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def tt_tokenizer():
return get_lang_class('tt').Defaults.create_tokenizer()
return get_lang_class("tt").Defaults.create_tokenizer()

@pytest.fixture(scope='session')

@pytest.fixture(scope="session")
def el_tokenizer():
return get_lang_class('el').Defaults.create_tokenizer()
return get_lang_class("el").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def ar_tokenizer():
return get_lang_class('ar').Defaults.create_tokenizer()
return get_lang_class("ar").Defaults.create_tokenizer()

@pytest.fixture(scope='session')

@pytest.fixture(scope="session")
def ur_tokenizer():
return get_lang_class('ur').Defaults.create_tokenizer()
return get_lang_class("ur").Defaults.create_tokenizer()


@pytest.fixture(scope='session')
@pytest.fixture(scope="session")
def ru_tokenizer():
pymorphy = pytest.importorskip('pymorphy2')
return get_lang_class('ru').Defaults.create_tokenizer()
pymorphy = pytest.importorskip("pymorphy2")
return get_lang_class("ru").Defaults.create_tokenizer()
4 changes: 2 additions & 2 deletions spacy/tests/doc/test_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def test_doc_scalar_attr_of_token(en_tokenizer, en_vocab):

def test_doc_array_tag(en_tokenizer):
text = "A nice sentence."
pos = ['DET', 'ADJ', 'NOUN', 'PUNCT']
pos = ["DET", "ADJ", "NOUN", "PUNCT"]
tokens = en_tokenizer(text)
doc = get_doc(tokens.vocab, words=[t.text for t in tokens], pos=pos)
assert doc[0].pos != doc[1].pos != doc[2].pos != doc[3].pos
Expand All @@ -51,7 +51,7 @@ def test_doc_array_tag(en_tokenizer):

def test_doc_array_dep(en_tokenizer):
text = "A nice sentence."
deps = ['det', 'amod', 'ROOT', 'punct']
deps = ["det", "amod", "ROOT", "punct"]
tokens = en_tokenizer(text)
doc = get_doc(tokens.vocab, words=[t.text for t in tokens], deps=deps)
feats_array = doc.to_array((ORTH, DEP))
Expand Down
20 changes: 10 additions & 10 deletions spacy/tests/doc/test_creation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

@pytest.fixture
def lemmatizer():
return Lemmatizer(lookup={'dogs': 'dog', 'boxen': 'box', 'mice': 'mouse'})
return Lemmatizer(lookup={"dogs": "dog", "boxen": "box", "mice": "mouse"})


@pytest.fixture
Expand All @@ -23,15 +23,15 @@ def test_empty_doc(vocab):


def test_single_word(vocab):
doc = Doc(vocab, words=['a'])
assert doc.text == 'a '
doc = Doc(vocab, words=['a'], spaces=[False])
assert doc.text == 'a'
doc = Doc(vocab, words=["a"])
assert doc.text == "a "
doc = Doc(vocab, words=["a"], spaces=[False])
assert doc.text == "a"


def test_lookup_lemmatization(vocab):
doc = Doc(vocab, words=['dogs', 'dogses'])
assert doc[0].text == 'dogs'
assert doc[0].lemma_ == 'dog'
assert doc[1].text == 'dogses'
assert doc[1].lemma_ == 'dogses'
doc = Doc(vocab, words=["dogs", "dogses"])
assert doc[0].text == "dogs"
assert doc[0].lemma_ == "dog"
assert doc[1].text == "dogses"
assert doc[1].lemma_ == "dogses"
Loading

0 comments on commit b6e9914

Please sign in to comment.