summaryrefslogtreecommitdiff
path: root/scss/tests
diff options
context:
space:
mode:
authorEevee (Alex Munroe) <eevee.git@veekun.com>2014-08-26 13:03:48 -0700
committerEevee (Alex Munroe) <eevee.git@veekun.com>2014-08-26 14:32:01 -0700
commite045cd72c467eacd16aaee2613ef0850e559a3ce (patch)
treefd6dec2df10907e5f2c912a8ab83f070223e4278 /scss/tests
parent77f24e0a2e8fb394004023191c8662febd8ceda0 (diff)
downloadpyscss-e045cd72c467eacd16aaee2613ef0850e559a3ce.tar.gz
Revamp py.test's handling of test files.
Each .scss file is now its own test -- you can run them directly, with `py.test scss/tests/files/foo/bar.scss`, or use wildcards, or specify a partial directory, or whatever. Accordingly, `test_files.py` is gone, as is the `--test-file-filter` option that was so cumbersome I never actually used it. Regressions: - xfail is no longer supported. - Ruby tests are now not collected at all, rather than marked as skipped.
Diffstat (limited to 'scss/tests')
-rw-r--r--scss/tests/conftest.py81
-rw-r--r--scss/tests/test_files.py50
2 files changed, 0 insertions, 131 deletions
diff --git a/scss/tests/conftest.py b/scss/tests/conftest.py
deleted file mode 100644
index b2036ff..0000000
--- a/scss/tests/conftest.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""py.test plugin configuration."""
-
-import glob
-import os.path
-import re
-
-import pytest
-
-try:
- import fontforge
-except ImportError:
- fontforge = None
-
-FILES_DIR = os.path.relpath(os.path.join(os.path.dirname(__file__), 'files'))
-
-# Globals, yuck! Populated below.
-test_file_tuples = None
-test_file_ids = None
-
-
-def pytest_configure(config):
- """Scan for test files. Done here because other hooks tend to run once
- *per test*, and there's no reason to do this work more than once.
- """
- global test_file_tuples
- global test_file_ids
-
- include_ruby = config.getoption('include_ruby')
- test_file_filter = config.getoption('test_file_filter')
- if test_file_filter:
- file_filters = [
- re.compile(filt)
- for filt in test_file_filter.split(',')
- ]
- else:
- file_filters = []
-
- # Tuples are 3-tuples of the form (scss filename, css filename, pytest
- # marker). That last one is used to carry xfail/skip, and is None for
- # regular tests.
- # "ids" are just names for the tests, in a parellel list. We just use
- # relative paths to the input file.
- test_file_tuples = []
- test_file_ids = []
- for fn in glob.glob(os.path.join(FILES_DIR, '*%s*.scss' % os.sep)):
- if os.path.basename(fn)[0] == '_':
- continue
-
- relfn = os.path.relpath(fn, FILES_DIR)
- pytest_trigger = None
-
- if relfn.startswith(('from-sassc' + os.sep, 'from-ruby' + os.sep)):
- pytest_trigger = pytest.mark.skipif(
- not include_ruby, reason="skipping ruby tests by default")
- elif relfn.startswith('xfail' + os.sep):
- pytest_trigger = pytest.mark.xfail
- elif relfn.startswith('fonts' + os.sep):
- pytest_trigger = pytest.mark.skipif(
- not fontforge, reason="font tests require fontforge")
-
- if file_filters and not any(rx.search(relfn) for rx in file_filters):
- pytest_trigger = pytest.mark.skipif(
- reason="skipping due to --test-file-filter")
-
- pair = (fn, fn[:-5] + '.css')
- if pytest_trigger:
- pair = pytest_trigger(pair)
-
- test_file_tuples.append(pair)
- test_file_ids.append(fn)
-
-
-def pytest_generate_tests(metafunc):
- """Inject the test files as parametrizations.
-
- Relies on the command-line option `--test-file-filter`, set by the root
- conftest.py.
- """
-
- if 'scss_file_pair' in metafunc.fixturenames:
- metafunc.parametrize('scss_file_pair', test_file_tuples, ids=test_file_ids)
diff --git a/scss/tests/test_files.py b/scss/tests/test_files.py
deleted file mode 100644
index eaaba4c..0000000
--- a/scss/tests/test_files.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""Evaluates all the tests that live in `scss/tests/files`.
-
-A test is any file with a `.scss` extension. It'll be compiled, and the output
-will be compared to the contents of a file named `foo.css`.
-
-Currently, test files must be nested exactly one directory below `files/`.
-This limitation is completely arbitrary. Files starting with '_' are skipped.
-
-"""
-
-from __future__ import absolute_import, unicode_literals
-
-import os.path
-import logging
-
-import six
-
-import scss
-
-
-if six.PY2:
- from io import open
-
-
-console = logging.StreamHandler()
-logger = logging.getLogger('scss')
-logger.setLevel(logging.ERROR)
-logger.addHandler(console)
-
-
-def test_pair_programmatic(scss_file_pair):
- scss_fn, css_fn = scss_file_pair
-
- with open(scss_fn, 'rb') as fh:
- source = fh.read()
- with open(css_fn, 'r', encoding='utf8') as fh:
- expected = fh.read()
-
- directory, _ = os.path.split(scss_fn)
- include_dir = os.path.join(directory, 'include')
- scss.config.STATIC_ROOT = os.path.join(directory, 'static')
-
- compiler = scss.Scss(scss_opts=dict(style='expanded'), search_paths=[include_dir, directory])
- actual = compiler.compile(source)
-
- # Normalize leading and trailing newlines
- actual = actual.strip('\n')
- expected = expected.strip('\n')
-
- assert expected == actual