Skip to content

Commit

Permalink
Test language tool run (#192)
Browse files Browse the repository at this point in the history
* switch to pytest
* add language tool test
  • Loading branch information
sumpfork committed Feb 19, 2018
1 parent 1ddb09b commit 0ffa111
Show file tree
Hide file tree
Showing 7 changed files with 478 additions and 412 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -7,4 +7,4 @@ install:
- pip install -U pycodestyle
- pip install .
# command to run tests
script: nosetests
script: py.test
140 changes: 89 additions & 51 deletions domdiv/tests/carddb_tests.py
@@ -1,58 +1,96 @@
import unittest
from __future__ import print_function
import subprocess
import shutil
import os
import contextlib

import pytest

from .. import main
from .. import cards as domdiv_cards


class TestCardDB(unittest.TestCase):
@pytest.fixture
def rmtestcardb(request):

def rmd():
testcardb_dir = os.path.join(str(request.config.rootdir), 'tools/card_db')
if os.path.exists(testcardb_dir):
print('removing {}'.format(testcardb_dir))
shutil.rmtree(testcardb_dir)
request.addfinalizer(rmd)


def test_cardread():
options = main.parse_opts([])
options.data_path = '.'
cards = main.read_card_data(options)
assert len(cards) == 524
valid_cardsets = {
u'base',
u'dominion1stEdition',
u'dominion2ndEdition',
u'dominion2ndEditionUpgrade',
u'intrigue1stEdition',
u'intrigue2ndEdition',
u'intrigue2ndEditionUpgrade',
u'seaside',
u'alchemy',
u'prosperity',
u'cornucopia extras',
u'cornucopia',
u'hinterlands',
u'dark ages',
u'dark ages extras',
u'guilds',
u'adventures',
u'adventures extras',
u'empires',
u'empires extras',
u'nocturne',
u'nocturne extras',
u'promo',
u'extras',
u'animals'
}
for c in cards:
assert isinstance(c, domdiv_cards.Card)
assert c.cardset_tag in valid_cardsets

def test_cardread(self):
options = main.parse_opts([])

def test_languages():
languages = main.get_languages('card_db')
for lang in languages:
print('checking ' + lang)
# for now, just test that they load
options = main.parse_opts(['--language', lang])
options.data_path = '.'
cards = main.read_card_data(options)
self.assertEquals(len(cards), 524)
valid_cardsets = {
u'base',
u'dominion1stEdition',
u'dominion2ndEdition',
u'dominion2ndEditionUpgrade',
u'intrigue1stEdition',
u'intrigue2ndEdition',
u'intrigue2ndEditionUpgrade',
u'seaside',
u'alchemy',
u'prosperity',
u'cornucopia extras',
u'cornucopia',
u'hinterlands',
u'dark ages',
u'dark ages extras',
u'guilds',
u'adventures',
u'adventures extras',
u'empires',
u'empires extras',
u'nocturne',
u'nocturne extras',
u'promo',
u'extras',
u'animals'
}
for c in cards:
self.assertIsInstance(c, domdiv_cards.Card)
self.assertIn(c.cardset_tag, valid_cardsets)

def test_languages(self):
languages = main.get_languages('card_db')
for lang in languages:
print('checking ' + lang)
# for now, just test that they load
options = main.parse_opts(['--language', lang])
options.data_path = '.'
cards = main.read_card_data(options)
self.assertTrue(cards, '"{}" cards did not read properly'.format(lang))
cards = main.add_card_text(options, cards, 'en_us')
cards = main.add_card_text(options, cards, lang)
if lang == 'it':
self.assertIn("Maledizione", [card.name for card in cards])
elif lang == 'de':
self.assertIn("Fluch", [card.name for card in cards])
assert cards, '"{}" cards did not read properly'.format(lang)
cards = main.add_card_text(options, cards, 'en_us')
cards = main.add_card_text(options, cards, lang)
if lang == 'it':
assert "Maledizione" in [card.name for card in cards]
elif lang == 'de':
assert "Fluch" in [card.name for card in cards]


@contextlib.contextmanager
def change_cwd(d):
curdir = os.getcwd()
try:
os.chdir(d)
yield
finally:
os.chdir(curdir)


def test_languagetool_run(pytestconfig):
with change_cwd(str(pytestconfig.rootdir)):
cmd = 'python tools/update_language.py'
print(cmd)
assert subprocess.check_call(cmd.split()) == 0
cmd = 'diff -rw domdiv/card_db tools/card_db'
out = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
print(out)
assert out == ''
15 changes: 6 additions & 9 deletions domdiv/tests/codestyle_tests.py
@@ -1,13 +1,10 @@
import unittest
import pycodestyle
import glob

import pycodestyle

class TestCodeFormat(unittest.TestCase):

def test_conformance(self):
"""Test that we conform to PEP-8."""
style = pycodestyle.StyleGuide(max_line_length=120)
result = style.check_files(glob.glob('*.py') + glob.glob('domdiv/*.py') + glob.glob('tests/*.py'))
self.assertEqual(result.total_errors, 0,
"Found code style errors (and warnings).")
def test_conformance():
"""Test that we conform to PEP-8."""
style = pycodestyle.StyleGuide(max_line_length=120)
result = style.check_files(glob.glob('*.py') + glob.glob('domdiv/*.py') + glob.glob('tests/*.py'))
assert result.total_errors == 0, "Found code style errors (and warnings)."
56 changes: 28 additions & 28 deletions domdiv/tests/layout_tests.py
@@ -1,34 +1,34 @@
import unittest
from .. import main
from reportlab.lib.units import cm

from .. import main


def test_horizontal():
# should be the default
options = main.parse_opts([])
assert options.orientation == 'horizontal'
main.calculate_layout(options)
assert options.numDividersHorizontal == 2
assert options.numDividersVertical == 3
assert options.dividerWidth == 9.1 * cm
assert options.labelHeight == 0.9 * cm
assert options.dividerHeight == 5.9 * cm + options.labelHeight

class TestLayout(unittest.TestCase):

def test_horizontal(self):
# should be the default
options = main.parse_opts([])
self.assertEquals(options.orientation, 'horizontal')
main.calculate_layout(options)
self.assertEquals(options.numDividersHorizontal, 2)
self.assertEquals(options.numDividersVertical, 3)
self.assertEquals(options.dividerWidth, 9.1 * cm)
self.assertEquals(options.labelHeight, 0.9 * cm)
self.assertEquals(options.dividerHeight, 5.9 * cm + options.labelHeight)
def test_vertical():
options = main.parse_opts(['--orientation', 'vertical'])
assert options.orientation == 'vertical'
main.calculate_layout(options)
assert options.numDividersHorizontal == 3
assert options.numDividersVertical == 2
assert options.dividerWidth == 5.9 * cm
assert options.labelHeight == 0.9 * cm
assert options.dividerHeight == 9.1 * cm + options.labelHeight

def test_vertical(self):
options = main.parse_opts(['--orientation', 'vertical'])
self.assertEquals(options.orientation, 'vertical')
main.calculate_layout(options)
self.assertEquals(options.numDividersHorizontal, 3)
self.assertEquals(options.numDividersVertical, 2)
self.assertEquals(options.dividerWidth, 5.9 * cm)
self.assertEquals(options.labelHeight, 0.9 * cm)
self.assertEquals(options.dividerHeight, 9.1 * cm + options.labelHeight)

def test_sleeved(self):
options = main.parse_opts(['--size', 'sleeved'])
main.calculate_layout(options)
self.assertEquals(options.dividerWidth, 9.4 * cm)
self.assertEquals(options.labelHeight, 0.9 * cm)
self.assertEquals(options.dividerHeight, 6.15 * cm + options.labelHeight)
def test_sleeved():
options = main.parse_opts(['--size', 'sleeved'])
main.calculate_layout(options)
assert options.dividerWidth == 9.4 * cm
assert options.labelHeight == 0.9 * cm
assert options.dividerHeight == 6.15 * cm + options.labelHeight

0 comments on commit 0ffa111

Please sign in to comment.