14
0

Accepting request 1132000 from devel:languages:python

OBS-URL: https://build.opensuse.org/request/show/1132000
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-webassets?expand=0&rev=6
This commit is contained in:
2023-12-08 21:32:27 +00:00
committed by Git OBS Bridge
3 changed files with 569 additions and 139 deletions

View File

@@ -1,3 +1,8 @@
-------------------------------------------------------------------
Thu Dec 7 23:42:33 UTC 2023 - Matej Cepl <mcepl@cepl.eu>
- Clean up packaging.
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 26 23:06:51 UTC 2021 - Ben Greiner <code@bnavigator.de> Mon Apr 26 23:06:51 UTC 2021 - Ben Greiner <code@bnavigator.de>

View File

@@ -1,7 +1,7 @@
# #
# spec file for package python-webassets # spec file for package python-webassets
# #
# Copyright (c) 2021 SUSE LLC # Copyright (c) 2023 SUSE LLC
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,6 @@
# #
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%bcond_without python2 %bcond_without python2
Name: python-webassets Name: python-webassets
Version: 2.0 Version: 2.0
@@ -34,17 +33,21 @@ Source: https://files.pythonhosted.org/packages/source/w/webassets/webas
Patch0: https://github.com/miracle2k/webassets/pull/529.patch#/webassets-py39-threading.patch Patch0: https://github.com/miracle2k/webassets/pull/529.patch#/webassets-py39-threading.patch
# PATCH-FIX-UPSTREAM remove-nose -- gh#miracle2k/webassets#539 # PATCH-FIX-UPSTREAM remove-nose -- gh#miracle2k/webassets#539
Patch1: remove-nose.patch Patch1: remove-nose.patch
BuildRequires: %{python_module setuptools} BuildRequires: %{python_module pip}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: python-rpm-macros BuildRequires: python-rpm-macros
Requires(post): update-alternatives
Requires(postun):update-alternatives
BuildArch: noarch
# SECTION test requirements # SECTION test requirements
# jsmin and rjsmin fail if imported: different utf8 filters
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module Jinja2} BuildRequires: %{python_module Jinja2}
BuildRequires: %{python_module PyYAML} BuildRequires: %{python_module PyYAML}
BuildRequires: %{python_module cssutils} BuildRequires: %{python_module cssutils}
BuildRequires: %{python_module glob2} BuildRequires: %{python_module glob2}
BuildRequires: %{python_module lesscpy} BuildRequires: %{python_module lesscpy}
# jsmin and rjsmin fail if imported: different utf8 filters
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module rcssmin} BuildRequires: %{python_module rcssmin}
BuildRequires: %{python_module slimit} BuildRequires: %{python_module slimit}
BuildRequires: sassc BuildRequires: sassc
@@ -52,10 +55,6 @@ BuildRequires: sassc
BuildRequires: python2-mock BuildRequires: python2-mock
%endif %endif
# /SECTION # /SECTION
Requires: python-setuptools
Requires(post): update-alternatives
Requires(postun):update-alternatives
BuildArch: noarch
%python_subpackages %python_subpackages
%description %description
@@ -65,15 +64,14 @@ URL rewriting in CSS files.
%prep %prep
%autosetup -p1 -n webassets-%{version} %autosetup -p1 -n webassets-%{version}
sed -i 's/#!.*//' src/webassets/filter/rjsmin/rjsmin.py sed -i 's/#!.*//' src/webassets/filter/rjsmin/rjsmin.py
# fix py2 only syntax
sed -i -e 's:e.message:e.args[0]:g' tests/test_filters.py
%build %build
%python_build %pyproject_wheel
%install %install
%python_install %pyproject_install
%python_clone -a %{buildroot}%{_bindir}/webassets %python_clone -a %{buildroot}%{_bindir}/webassets
%python_expand %fdupes %{buildroot}%{$python_sitelib} %python_expand %fdupes %{buildroot}%{$python_sitelib}
@@ -91,6 +89,7 @@ export LANG="en_US.UTF8"
%license LICENSE %license LICENSE
%doc AUTHORS CHANGES README.rst %doc AUTHORS CHANGES README.rst
%python_alternative %{_bindir}/webassets %python_alternative %{_bindir}/webassets
%{python_sitelib}/* %{python_sitelib}/webassets
%{python_sitelib}/webassets-%{version}*-info
%changelog %changelog

View File

@@ -1,7 +1,105 @@
Index: webassets-2.0/tests/helpers.py ---
=================================================================== examples/appengine/webassets/test.py | 12 -
--- webassets-2.0.orig/tests/helpers.py src/webassets/test.py | 12 -
+++ webassets-2.0/tests/helpers.py tests/__init__.py | 2
tests/helpers.py | 27 ----
tests/test_bundle_build.py | 8 -
tests/test_bundle_urls.py | 95 ++++++--------
tests/test_bundle_various.py | 37 ++---
tests/test_cache.py | 14 +-
tests/test_environment.py | 27 ++--
tests/test_ext/test_jinja2.py | 22 +--
tests/test_filters.py | 230 +++++++++++++++--------------------
tests/test_loaders.py | 31 +---
tests/test_script.py | 29 +---
tests/test_updaters.py | 16 +-
tests/test_version.py | 35 ++---
15 files changed, 267 insertions(+), 330 deletions(-)
--- a/examples/appengine/webassets/test.py
+++ b/examples/appengine/webassets/test.py
@@ -27,19 +27,19 @@ class TempDirHelper(object):
default_files = {}
- def setup(self):
+ def setup_method(self):
self._tempdir_created = tempfile.mkdtemp()
self.create_files(self.default_files)
- def teardown(self):
+ def teardown_method(self):
shutil.rmtree(self._tempdir_created)
def __enter__(self):
- self.setup()
+ self.setup_method()
return self
def __exit__(self, type, value, traceback):
- self.teardown()
+ self.teardown_method()
@property
def tempdir(self):
@@ -136,8 +136,8 @@ class TempEnvironmentHelper(TempDirHelpe
default_files = {'in1': 'A', 'in2': 'B', 'in3': 'C', 'in4': 'D'}
- def setup(self):
- TempDirHelper.setup(self)
+ def setup_method(self):
+ TempDirHelper.setup_method(self)
self.env = self._create_environment()
# Unless we explicitly test it, we don't want to use the cache
--- a/src/webassets/test.py
+++ b/src/webassets/test.py
@@ -27,19 +27,19 @@ class TempDirHelper(object):
default_files = {}
- def setup(self):
+ def setup_method(self):
self._tempdir_created = tempfile.mkdtemp()
self.create_files(self.default_files)
- def teardown(self):
+ def teardown_method(self):
shutil.rmtree(self._tempdir_created)
def __enter__(self):
- self.setup()
+ self.setup_method()
return self
def __exit__(self, type, value, traceback):
- self.teardown()
+ self.teardown_method()
@property
def tempdir(self):
@@ -136,8 +136,8 @@ class TempEnvironmentHelper(TempDirHelpe
default_files = {'in1': 'A', 'in2': 'B', 'in3': 'C', 'in4': 'D'}
- def setup(self):
- TempDirHelper.setup(self)
+ def setup_method(self):
+ TempDirHelper.setup_method(self)
self.env = self._create_environment()
# Unless we explicitly test it, we don't want to use the cache
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
-def setup():
+def setup_method():
# For some strange reason (using Python 2.6.6), if a warning has
# already been raised somewhere else before a test attempts to
# capture and verify it using warnings.catch_warnings(), the warning
--- a/tests/helpers.py
+++ b/tests/helpers.py
@@ -5,7 +5,7 @@ from webassets.test import TempDirHelper @@ -5,7 +5,7 @@ from webassets.test import TempDirHelper
@@ -43,10 +141,8 @@ Index: webassets-2.0/tests/helpers.py
try: try:
Index: webassets-2.0/tests/test_bundle_build.py --- a/tests/test_bundle_build.py
=================================================================== +++ b/tests/test_bundle_build.py
--- webassets-2.0.orig/tests/test_bundle_build.py
+++ webassets-2.0/tests/test_bundle_build.py
@@ -6,8 +6,10 @@ more likely` found in `test_bundle_vario @@ -6,8 +6,10 @@ more likely` found in `test_bundle_vario
@@ -59,10 +155,19 @@ Index: webassets-2.0/tests/test_bundle_build.py
from webassets import Bundle from webassets import Bundle
from webassets.cache import MemoryCache from webassets.cache import MemoryCache
from webassets.exceptions import BuildError, BundleError from webassets.exceptions import BuildError, BundleError
Index: webassets-2.0/tests/test_bundle_urls.py @@ -471,8 +473,8 @@ class TestAutoBuild(TempEnvironmentHelpe
=================================================================== generally everything involving the updater (as used by the build() method).
--- webassets-2.0.orig/tests/test_bundle_urls.py """
+++ webassets-2.0/tests/test_bundle_urls.py
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
class CustomUpdater(BaseUpdater):
allow = True
--- a/tests/test_bundle_urls.py
+++ b/tests/test_bundle_urls.py
@@ -6,8 +6,9 @@ more likely` found in `test_bundle_vario @@ -6,8 +6,9 @@ more likely` found in `test_bundle_vario
from __future__ import with_statement from __future__ import with_statement
@@ -75,6 +180,17 @@ Index: webassets-2.0/tests/test_bundle_urls.py
from tests.test_bundle_build import AppendFilter from tests.test_bundle_build import AppendFilter
from webassets import Bundle from webassets import Bundle
@@ -28,8 +29,8 @@ class BaseUrlsTester(TempEnvironmentHelp
default_files = {'a': '', 'b': '', 'c': '', '1': '', '2': ''}
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
self.env.url_expire = False
@@ -64,12 +65,12 @@ class TestUrlsVarious(BaseUrlsTester): @@ -64,12 +65,12 @@ class TestUrlsVarious(BaseUrlsTester):
value.""" value."""
# On the bundle level # On the bundle level
@@ -180,7 +296,7 @@ Index: webassets-2.0/tests/test_bundle_urls.py
assert len(self.build_called) == 1 assert len(self.build_called) == 1
def test_root_debug_true_and_child_debug_false_with_sri(self): def test_root_debug_true_and_child_debug_false_with_sri(self):
@@ -282,7 +275,7 @@ class TestUrlsWithDebugFalse(BaseUrlsTes @@ -282,21 +275,21 @@ class TestUrlsWithDebugFalse(BaseUrlsTes
'1', '2', '1', '2',
self.MockBundle('a', output='child1', debug=False), self.MockBundle('a', output='child1', debug=False),
output='rootout', debug=True) output='rootout', debug=True)
@@ -189,7 +305,14 @@ Index: webassets-2.0/tests/test_bundle_urls.py
class TestUrlsWithDebugTrue(BaseUrlsTester): class TestUrlsWithDebugTrue(BaseUrlsTester):
@@ -295,8 +288,8 @@ class TestUrlsWithDebugTrue(BaseUrlsTest """Test url generation in debug mode.
"""
- def setup(self):
- BaseUrlsTester.setup(self)
+ def setup_method(self):
+ BaseUrlsTester.setup_method(self)
self.env.debug = True
def test_simple_bundle(self): def test_simple_bundle(self):
bundle = self.MockBundle('a', 'b', 'c', output='out') bundle = self.MockBundle('a', 'b', 'c', output='out')
@@ -296,7 +419,7 @@ Index: webassets-2.0/tests/test_bundle_urls.py
assert len(self.build_called) == 1 assert len(self.build_called) == 1
def test_child_bundle_switching_with_sri(self): def test_child_bundle_switching_with_sri(self):
@@ -425,10 +418,10 @@ class TestUrlsWithDebugTrue(BaseUrlsTest @@ -425,17 +418,17 @@ class TestUrlsWithDebugTrue(BaseUrlsTest
bundle = self.MockBundle( bundle = self.MockBundle(
'a', self.MockBundle('1', '2', output='childout', debug='merge'), 'a', self.MockBundle('1', '2', output='childout', debug='merge'),
'c', output='out') 'c', output='out')
@@ -310,6 +433,15 @@ Index: webassets-2.0/tests/test_bundle_urls.py
assert len(self.build_called) == 1 assert len(self.build_called) == 1
class TestUrlsWithDebugMerge(BaseUrlsTester):
- def setup(self):
- BaseUrlsTester.setup(self)
+ def setup_method(self):
+ BaseUrlsTester.setup_method(self)
self.env.debug = 'merge'
def test_simple_bundle(self):
@@ -457,7 +450,7 @@ class TestUrlsWithDebugMerge(BaseUrlsTes @@ -457,7 +450,7 @@ class TestUrlsWithDebugMerge(BaseUrlsTes
bundle = self.MockBundle( bundle = self.MockBundle(
'a', self.MockBundle('1', '2', output='childout', debug=False), 'a', self.MockBundle('1', '2', output='childout', debug=False),
@@ -344,10 +476,8 @@ Index: webassets-2.0/tests/test_bundle_urls.py
- assert_equal(bundle.urls(calculate_sri=True), [{'sri': None, 'uri': '/out'}]) - assert_equal(bundle.urls(calculate_sri=True), [{'sri': None, 'uri': '/out'}])
+ assert bundle.urls(calculate_sri=True) == [{'sri': None, 'uri': '/out'}] + assert bundle.urls(calculate_sri=True) == [{'sri': None, 'uri': '/out'}]
assert len(self.build_called) == 1 assert len(self.build_called) == 1
Index: webassets-2.0/tests/test_bundle_various.py --- a/tests/test_bundle_various.py
=================================================================== +++ b/tests/test_bundle_various.py
--- webassets-2.0.orig/tests/test_bundle_various.py
+++ webassets-2.0/tests/test_bundle_various.py
@@ -13,12 +13,12 @@ try: @@ -13,12 +13,12 @@ try:
HTTPHandler, build_opener, install_opener, addinfourl HTTPHandler, build_opener, install_opener, addinfourl
except ImportError: # Py2 except ImportError: # Py2
@@ -384,6 +514,17 @@ Index: webassets-2.0/tests/test_bundle_various.py
# [bug] Specifically test that we can assign ``None``. # [bug] Specifically test that we can assign ``None``.
self.mkbundle().filters = None self.mkbundle().filters = None
@@ -177,8 +177,8 @@ class TestVersionFeatures(TempEnvironmen
default_files = {'in': 'foo'}
- def setup(self):
- super(TestVersionFeatures, self).setup()
+ def setup_method(self):
+ super(TestVersionFeatures, self).setup_method()
self.env.manifest = DummyManifest()
self.env.versions = DummyVersion()
@@ -272,7 +272,7 @@ class TestVersionFeatures(TempEnvironmen @@ -272,7 +272,7 @@ class TestVersionFeatures(TempEnvironmen
assert bundle.version == 'foo' assert bundle.version == 'foo'
self.env.manifest.version = None self.env.manifest.version = None
@@ -393,6 +534,17 @@ Index: webassets-2.0/tests/test_bundle_various.py
def test_url_expire(self): def test_url_expire(self):
"""Test the url_expire option. """Test the url_expire option.
@@ -371,8 +371,8 @@ class TestLoadPath(TempEnvironmentHelper
an optional feature.
"""
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
self.env.updater = False
self.env.directory = self.path('dir')
self.env.debug = True
@@ -399,7 +399,7 @@ class TestLoadPath(TempEnvironmentHelper @@ -399,7 +399,7 @@ class TestLoadPath(TempEnvironmentHelper
assert self.get('dir/out') == 'a' assert self.get('dir/out') == 'a'
@@ -423,6 +575,17 @@ Index: webassets-2.0/tests/test_bundle_various.py
self.create_files({'sub/file.js': 'sub',}) self.create_files({'sub/file.js': 'sub',})
self.mkbundle('**/*.js', output='out').build() self.mkbundle('**/*.js', output='out').build()
@@ -606,8 +603,8 @@ class TestUrlContents(TempEnvironmentHel
"""Test bundles containing a URL.
"""
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
mock_opener = build_opener(MockHTTPHandler({
'http://foo': u'function() {}'}))
install_opener(mock_opener)
@@ -619,7 +616,7 @@ class TestUrlContents(TempEnvironmentHel @@ -619,7 +616,7 @@ class TestUrlContents(TempEnvironmentHel
def test_invalid_url(self): def test_invalid_url(self):
"""If a bundle contains an invalid url, building will raise an error. """If a bundle contains an invalid url, building will raise an error.
@@ -432,10 +595,8 @@ Index: webassets-2.0/tests/test_bundle_various.py
self.mkbundle('http://bar', output='out').build) self.mkbundle('http://bar', output='out').build)
def test_autorebuild_updaters(self): def test_autorebuild_updaters(self):
Index: webassets-2.0/tests/test_cache.py --- a/tests/test_cache.py
=================================================================== +++ b/tests/test_cache.py
--- webassets-2.0.orig/tests/test_cache.py
+++ webassets-2.0/tests/test_cache.py
@@ -2,7 +2,7 @@ from __future__ import with_statement @@ -2,7 +2,7 @@ from __future__ import with_statement
import random import random
@@ -445,6 +606,17 @@ Index: webassets-2.0/tests/test_cache.py
from webassets.filter import Filter from webassets.filter import Filter
from webassets.cache import BaseCache, FilesystemCache, MemoryCache from webassets.cache import BaseCache, FilesystemCache, MemoryCache
from webassets.updater import TimestampUpdater from webassets.updater import TimestampUpdater
@@ -89,8 +89,8 @@ class TestCacheIsUsed(TempEnvironmentHel
"""Ensure the cache is used during the build process.
"""
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
class MyCache(BaseCache):
def __init__(self):
@@ -123,15 +123,15 @@ class TestCacheIsUsed(TempEnvironmentHel @@ -123,15 +123,15 @@ class TestCacheIsUsed(TempEnvironmentHel
bundle = self.mkbundle('in1', 'in2', output='out', filters=self.filter) bundle = self.mkbundle('in1', 'in2', output='out', filters=self.filter)
self.cache.enabled = False self.cache.enabled = False
@@ -465,10 +637,8 @@ Index: webassets-2.0/tests/test_cache.py
def test_filesystem_cache(self): def test_filesystem_cache(self):
"""Regresssion test for two bugs: """Regresssion test for two bugs:
Index: webassets-2.0/tests/test_environment.py --- a/tests/test_environment.py
=================================================================== +++ b/tests/test_environment.py
--- webassets-2.0.orig/tests/test_environment.py
+++ webassets-2.0/tests/test_environment.py
@@ -1,7 +1,8 @@ @@ -1,7 +1,8 @@
from __future__ import with_statement from __future__ import with_statement
@@ -479,6 +649,15 @@ Index: webassets-2.0/tests/test_environment.py
from webassets import six from webassets import six
from webassets import Environment from webassets import Environment
@@ -12,7 +13,7 @@ from webassets import Bundle
class TestEnvApi(object):
"""General Environment functionality."""
- def setup(self):
+ def setup_method(self):
self.m = Environment(None, None)
def test_register_single_bundle(self):
@@ -92,14 +93,14 @@ class TestEnvApi(object): @@ -92,14 +93,14 @@ class TestEnvApi(object):
env = Environment('tests') env = Environment('tests')
@@ -529,6 +708,24 @@ Index: webassets-2.0/tests/test_environment.py
# Test constructing the environment with values for url and directory # Test constructing the environment with values for url and directory
env = Environment('foo', 'bar') env = Environment('foo', 'bar')
@@ -185,7 +186,7 @@ class TestEnvConfig(object):
"""Custom config values through get_config/set_config.
"""
- def setup(self):
+ def setup_method(self):
self.m = Environment(None, None)
def test_initial_values_override_defaults(self):
@@ -215,7 +216,7 @@ class TestSpecialProperties(object):
as a string, and would receive object instances when accessing the property.
"""
- def setup(self):
+ def setup_method(self):
self.m = Environment('.', None) # we won't create any files
def test_versioner(self):
@@ -242,7 +243,7 @@ class TestSpecialProperties(object): @@ -242,7 +243,7 @@ class TestSpecialProperties(object):
# Invalid value # Invalid value
@@ -538,11 +735,9 @@ Index: webassets-2.0/tests/test_environment.py
def test_cache(self): def test_cache(self):
from webassets.cache import BaseCache, FilesystemCache from webassets.cache import BaseCache, FilesystemCache
Index: webassets-2.0/tests/test_ext/test_jinja2.py --- a/tests/test_ext/test_jinja2.py
=================================================================== +++ b/tests/test_ext/test_jinja2.py
--- webassets-2.0.orig/tests/test_ext/test_jinja2.py @@ -1,20 +1,18 @@
+++ webassets-2.0/tests/test_ext/test_jinja2.py
@@ -1,15 +1,13 @@
-from nose.plugins.skip import SkipTest -from nose.plugins.skip import SkipTest
+import pytest +import pytest
+ +
@@ -564,10 +759,34 @@ Index: webassets-2.0/tests/test_ext/test_jinja2.py
class TestTemplateTag(object): class TestTemplateTag(object):
Index: webassets-2.0/tests/test_filters.py
=================================================================== - def setup(self):
--- webassets-2.0.orig/tests/test_filters.py + def setup_method(self):
+++ webassets-2.0/tests/test_filters.py # Setup the assets environment.
assets_env = AssetsEnvironment('', '')
self.foo_bundle = Bundle()
@@ -46,7 +44,7 @@ class TestTemplateTag(object):
self.jinja_env.add_extension(AssetsExtension)
self.jinja_env.assets_environment = assets_env
- def teardown(self):
+ def teardown_method(self):
AssetsExtension.BundleClass = self._old_bundle_class
del self._old_bundle_class
@@ -125,8 +123,8 @@ class TestLoader(TempEnvironmentHelper):
"""
}
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
self.jinja_env = JinjaEnvironment()
self.jinja_env.add_extension(AssetsExtension)
self.jinja_env.assets_environment = self.env
--- a/tests/test_filters.py
+++ b/tests/test_filters.py
@@ -6,11 +6,17 @@ import os @@ -6,11 +6,17 @@ import os
import os.path import os.path
from subprocess import check_output from subprocess import check_output
@@ -630,8 +849,12 @@ Index: webassets-2.0/tests/test_filters.py
def test_getconfig_os_env_types(self): def test_getconfig_os_env_types(self):
"""Test type conversion for values read from the environment. """Test type conversion for values read from the environment.
@@ -174,7 +180,7 @@ class TestExternalToolClass(object): @@ -171,16 +177,16 @@ class TestExternalToolClass(object):
def setup(self): self.__class__.result = \
argv, data.getvalue() if data is not None else data
- def setup(self):
+ def setup_method(self):
if not hasattr(str, 'format'): if not hasattr(str, 'format'):
# A large part of this functionality is not available on Python 2.5 # A large part of this functionality is not available on Python 2.5
- raise SkipTest() - raise SkipTest()
@@ -639,6 +862,13 @@ Index: webassets-2.0/tests/test_filters.py
self.patcher = patch('subprocess.Popen') self.patcher = patch('subprocess.Popen')
self.popen = self.patcher.start() self.popen = self.patcher.start()
self.popen.return_value = Mock() self.popen.return_value = Mock()
self.popen.return_value.communicate = Mock()
- def teardown(self):
+ def teardown_method(self):
self.patcher.stop()
def test_argv_variables(self):
@@ -225,7 +231,7 @@ class TestExternalToolClass(object): @@ -225,7 +231,7 @@ class TestExternalToolClass(object):
assert Filter.result == ([], None) assert Filter.result == ([], None)
@@ -871,61 +1101,83 @@ Index: webassets-2.0/tests/test_filters.py
assert self.get('out.css') == """h1{font-family:"Verdana";color:#FFFFFF}""" assert self.get('out.css') == """h1{font-family:"Verdana";color:#FFFFFF}"""
def test_find_pyc_files( self ): def test_find_pyc_files( self ):
@@ -625,10 +610,7 @@ class TestBuiltinFilters(TempEnvironment @@ -624,12 +609,9 @@ class TestBuiltinFilters(TempEnvironment
class TestCSSPrefixer(TempEnvironmentHelper): class TestCSSPrefixer(TempEnvironmentHelper):
def setup(self): - def setup(self):
- try: - try:
- import cssprefixer - import cssprefixer
- except ImportError: - except ImportError:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ cssprefixer = pytest.importorskip('cssprefixer') + cssprefixer = pytest.importorskip('cssprefixer')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
@@ -646,7 +628,7 @@ class TestCoffeeScript(TempEnvironmentHe self.create_files({'in': """a { border-radius: 1em; }"""})
@@ -644,10 +626,10 @@ class TestCSSPrefixer(TempEnvironmentHel
def setup(self): class TestCoffeeScript(TempEnvironmentHelper):
- def setup(self):
+ def setup_method(self):
if not find_executable('coffee'): if not find_executable('coffee'):
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no coffee') + pytest.skip('no coffee')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test_default_options(self): def test_default_options(self):
@@ -669,10 +651,7 @@ class TestCoffeeScript(TempEnvironmentHe self.create_files({'in': "alert \"I knew it!\" if elvis?"})
@@ -668,12 +650,9 @@ class TestCoffeeScript(TempEnvironmentHe
class TestJinja2(TempEnvironmentHelper): class TestJinja2(TempEnvironmentHelper):
def setup(self): - def setup(self):
- try: - try:
- import jinja2 - import jinja2
- except ImportError: - except ImportError:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ jinja2 = pytest.importorskip('jinja2') + jinja2 = pytest.importorskip('jinja2')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test_default_options(self): def test_default_options(self):
@@ -700,11 +679,7 @@ class TestClosure(TempEnvironmentHelper) self.create_files({'in': """Hi there, {{ name }}!"""})
@@ -699,13 +678,9 @@ class TestClosure(TempEnvironmentHelper)
"""
} }
def setup(self): - def setup(self):
- try: - try:
- import closure - import closure
- except ImportError: - except ImportError:
- raise SkipTest() - raise SkipTest()
- -
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ closure = pytest.importorskip('closure') + closure = pytest.importorskip('closure')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test_closure(self): def test_closure(self):
@@ -828,7 +803,7 @@ class TestLess(TempEnvironmentHelper): self.mkbundle('foo.js', filters='closure_js', output='out.js').build()
@@ -826,10 +801,10 @@ class TestLess(TempEnvironmentHelper):
'foo.less': "h1 { color: #FFFFFF; }",
}
def setup(self): - def setup(self):
+ def setup_method(self):
if not find_executable('lessc'): if not find_executable('lessc'):
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no lessc') + pytest.skip('no lessc')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
self.mkbundle('foo.less', filters='less', output='out.css').build()
@@ -904,7 +879,7 @@ class TestLess(TempEnvironmentHelper): @@ -904,7 +879,7 @@ class TestLess(TempEnvironmentHelper):
'p1', 'p2', filters=less_output, output='out2.css' 'p1', 'p2', filters=less_output, output='out2.css'
).build() ).build()
@@ -935,9 +1187,12 @@ Index: webassets-2.0/tests/test_filters.py
class TestRubySass(TempEnvironmentHelper): class TestRubySass(TempEnvironmentHelper):
@@ -924,10 +899,10 @@ class TestRubySass(TempEnvironmentHelper @@ -922,14 +897,14 @@ class TestRubySass(TempEnvironmentHelper
""",
}
def setup(self): - def setup(self):
+ def setup_method(self):
if not find_executable('sass'): if not find_executable('sass'):
- raise SkipTest() - raise SkipTest()
+ pytest.skip('no sass') + pytest.skip('no sass')
@@ -946,26 +1201,42 @@ Index: webassets-2.0/tests/test_filters.py
- raise SkipTest() - raise SkipTest()
+ pytest.skip('no Ruby') + pytest.skip('no Ruby')
TempEnvironmentHelper.setup(self) - TempEnvironmentHelper.setup(self)
+ TempEnvironmentHelper.setup_method(self)
@@ -1034,7 +1009,7 @@ class TestSass(TempEnvironmentHelper):
def setup(self):
if not find_executable('sass'):
- raise SkipTest()
+ pytest.skip('no sass')
TempEnvironmentHelper.setup(self)
def test_sass(self): def test_sass(self):
@@ -1098,7 +1073,7 @@ class TestPyScss(TempEnvironmentHelper): sass = get_filter('sass_ruby', debug_info=False)
@@ -1032,10 +1007,10 @@ class TestSass(TempEnvironmentHelper):
""",
}
- def setup(self):
+ def setup_method(self):
if not find_executable('sass'):
- raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no sass')
+ TempEnvironmentHelper.setup_method(self)
def test_sass(self):
sass = get_filter('sass')
@@ -1093,13 +1068,13 @@ class TestPyScss(TempEnvironmentHelper):
'bar.scss': 'h1{color:red}'
}
- def setup(self):
+ def setup_method(self):
try:
import scss import scss
self.scss = scss self.scss = scss
except ImportError: except ImportError:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no scss') + pytest.skip('no scss')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
self.mkbundle('foo.scss', filters='pyscss', output='out.css').build()
@@ -1113,7 +1088,7 @@ class TestPyScss(TempEnvironmentHelper): @@ -1113,7 +1088,7 @@ class TestPyScss(TempEnvironmentHelper):
from PIL import Image from PIL import Image
Image.new('RGB', (10,10)).save(StringIO(), 'png') Image.new('RGB', (10,10)).save(StringIO(), 'png')
@@ -975,78 +1246,137 @@ Index: webassets-2.0/tests/test_filters.py
self.create_files({'noise.scss': 'h1 {background: background-noise()}'}) self.create_files({'noise.scss': 'h1 {background: background-noise()}'})
self.mkbundle('noise.scss', filters='pyscss', output='out.css').build() self.mkbundle('noise.scss', filters='pyscss', output='out.css').build()
@@ -1135,7 +1110,7 @@ class TestLibSass(TempEnvironmentHelper) @@ -1130,13 +1105,13 @@ class TestLibSass(TempEnvironmentHelper)
'b.scss': '$foo: foo !default; .test {background-color: $foo;}'
}
- def setup(self):
+ def setup_method(self):
try:
import sass import sass
self.sass = sass self.sass = sass
except ImportError: except ImportError:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no sass') + pytest.skip('no sass')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
@@ -1194,7 +1169,7 @@ class TestCompass(TempEnvironmentHelper) self.mkbundle('foo.scss', filters='libsass', output='out.css').build()
@@ -1192,10 +1167,10 @@ class TestCompass(TempEnvironmentHelper)
def setup(self): """
if not find_executable('compass'):
- raise SkipTest()
+ pytest.skip('no compass')
TempEnvironmentHelper.setup(self)
def test_compass(self):
@@ -1420,7 +1395,7 @@ class TestHandlebars(TempEnvironmentHelp
def setup(self):
if not find_executable('handlebars'):
- raise SkipTest()
+ pytest.skip('no handlebars')
TempEnvironmentHelper.setup(self)
def test_basic(self):
@@ -1456,10 +1431,7 @@ class TestJinja2JS(TempEnvironmentHelper
} }
def setup(self): - def setup(self):
+ def setup_method(self):
if not find_executable('compass'):
- raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no compass')
+ TempEnvironmentHelper.setup_method(self)
def test_compass(self):
self.mkbundle('foo.sass', filters='compass', output='out.css').build()
@@ -1256,7 +1231,7 @@ class TestCompassConfig(object):
}
}
- def setup(self):
+ def setup_method(self):
self.compass_config = CompassConfig(self.config).to_string()
def test_compass_config_is_unicode(self):
@@ -1288,8 +1263,8 @@ class TestJST(TempEnvironmentHelper):
'templates/bar.html': "<div>Im an html jst template. Go syntax highlighting!</div>"
}
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
def test_jst(self):
self.mkbundle('templates/*', filters='jst', output='out.js').build()
@@ -1418,10 +1393,10 @@ class TestHandlebars(TempEnvironmentHelp
"""
}
- def setup(self):
+ def setup_method(self):
if not find_executable('handlebars'):
- raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no handlebars')
+ TempEnvironmentHelper.setup_method(self)
def test_basic(self):
self.mkbundle('foo.html', 'dir/bar.html',
@@ -1455,12 +1430,9 @@ class TestJinja2JS(TempEnvironmentHelper
)
}
- def setup(self):
- try: - try:
- import closure_soy - import closure_soy
- except: - except:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ closure_soy = pytest.importorskip('closure_soy') + closure_soy = pytest.importorskip('closure_soy')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
@@ -1486,7 +1458,7 @@ class TestTypeScript(TempEnvironmentHelp self.mkbundle('foo.soy', filters='closure_tmpl', output='out.js').build()
@@ -1484,10 +1456,10 @@ class TestTypeScript(TempEnvironmentHelp
'foo.ts': """class X { z: number; }"""
}
def setup(self): - def setup(self):
+ def setup_method(self):
if not find_executable('tsc'): if not find_executable('tsc'):
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no tsc') + pytest.skip('no tsc')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test(self): def test(self):
@@ -1517,7 +1489,7 @@ define("script/app",["./utils"],function self.mkbundle('foo.ts', filters='typescript', output='out.js').build()
@@ -1515,10 +1487,10 @@ define("script/utils",[],function(){retu
define("script/app",["./utils"],function(e){e.debug("APP")});\
'''
def setup(self): - def setup(self):
+ def setup_method(self):
if not find_executable('r.js'): if not find_executable('r.js'):
- raise SkipTest('"r.js" executable not found') - raise SkipTest('"r.js" executable not found')
- TempEnvironmentHelper.setup(self)
+ pytest.skip('"r.js" executable not found') + pytest.skip('"r.js" executable not found')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
self.env.config['requirejs_config'] = self.path('requirejs.json') self.env.config['requirejs_config'] = self.path('requirejs.json')
self.env.config['requirejs_baseUrl'] = self.path('') self.env.config['requirejs_baseUrl'] = self.path('')
@@ -1569,7 +1541,7 @@ class TestClosureStylesheets(TempEnviron
def setup(self): @@ -1567,10 +1539,10 @@ class TestClosureStylesheets(TempEnviron
"""
}
- def setup(self):
+ def setup_method(self):
if not 'CLOSURE_STYLESHEETS_PATH' in os.environ: if not 'CLOSURE_STYLESHEETS_PATH' in os.environ:
- raise SkipTest() - raise SkipTest()
- TempEnvironmentHelper.setup(self)
+ pytest.skip('no CLOSURE_STYLESHEETS_PATH in env') + pytest.skip('no CLOSURE_STYLESHEETS_PATH in env')
TempEnvironmentHelper.setup(self) + TempEnvironmentHelper.setup_method(self)
def test_compiler(self): def test_compiler(self):
@@ -1596,7 +1568,7 @@ class TestAutoprefixer6Filter(TempEnviro self.mkbundle('test.css', filters = 'closure_stylesheets_compiler', output = 'output.css').build()
@@ -1595,8 +1567,8 @@ class TestAutoprefixer6Filter(TempEnviro
self.mkbundle('test.css', filters='autoprefixer6', output='output.css').build()
except FilterError as e: except FilterError as e:
# postcss is not installed, that's ok. # postcss is not installed, that's ok.
if 'Program file not found' in e.message: - if 'Program file not found' in e.message:
- raise SkipTest() - raise SkipTest()
+ pytest.skip(e.message) + if 'Program file not found' in e.args[0]:
+ raise pytest.skip(e.args[0])
else: else:
raise raise
out = self.get('output.css') out = self.get('output.css')
@@ -1055,23 +1385,23 @@ Index: webassets-2.0/tests/test_filters.py
# babel is not installed, that's ok. # babel is not installed, that's ok.
if 'Program file not found' in str(e): if 'Program file not found' in str(e):
- raise SkipTest() - raise SkipTest()
+ pytest.skip(e.message) + pytest.skip(e.args[0])
else: else:
raise raise
assert "var x = function x" in self.get('output.js') assert "var x = function x" in self.get('output.js')
@@ -1627,7 +1599,7 @@ class TestBabel(TempEnvironmentHelper): @@ -1626,8 +1598,8 @@ class TestBabel(TempEnvironmentHelper):
self.mkbundle('test.es6', filters='babel', output='output.js').build()
except FilterError as e: except FilterError as e:
# babel is not installed, that's ok. # babel is not installed, that's ok.
if 'Program file not found' in e.message: - if 'Program file not found' in e.message:
- raise SkipTest() - raise SkipTest()
+ pytest.skip(e.message) + if 'Program file not found' in e.args[0]:
+ raise pytest.skip(e.args[0])
else: else:
raise raise
assert (self.get('output.js').strip() == assert (self.get('output.js').strip() ==
Index: webassets-2.0/tests/test_loaders.py --- a/tests/test_loaders.py
=================================================================== +++ b/tests/test_loaders.py
--- webassets-2.0.orig/tests/test_loaders.py
+++ webassets-2.0/tests/test_loaders.py
@@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
from __future__ import with_statement from __future__ import with_statement
import sys import sys
@@ -1091,17 +1421,24 @@ Index: webassets-2.0/tests/test_loaders.py
class TestYAML(object): class TestYAML(object):
def setup(self): - def setup(self):
- try: - try:
- import yaml - import yaml
- except ImportError: - except ImportError:
- raise SkipTest() - raise SkipTest()
+ def setup_method(self):
+ yaml = pytest.importorskip("yaml") + yaml = pytest.importorskip("yaml")
def loader(self, text, filename=None): def loader(self, text, filename=None):
io = StringIO(textwrap.dedent(text)) io = StringIO(textwrap.dedent(text))
@@ -195,10 +193,7 @@ class TestYAMLCustomFilters(TestYAML): @@ -191,14 +189,11 @@ class TestPython(object):
super(TestYAMLCustomFilters, self).setup()
class TestYAMLCustomFilters(TestYAML):
- def setup(self):
- super(TestYAMLCustomFilters, self).setup()
+ def setup_method(self):
+ super(TestYAMLCustomFilters, self).setup_method()
# If zope.dottedname is not installed, that's OK # If zope.dottedname is not installed, that's OK
- try: - try:
@@ -1153,10 +1490,8 @@ Index: webassets-2.0/tests/test_loaders.py
# Check that it's back # Check that it's back
- assert_true(isinstance(get_filter('less'), Filter)) - assert_true(isinstance(get_filter('less'), Filter))
+ assert isinstance(get_filter('less'), Filter) + assert isinstance(get_filter('less'), Filter)
Index: webassets-2.0/tests/test_script.py --- a/tests/test_script.py
=================================================================== +++ b/tests/test_script.py
--- webassets-2.0.orig/tests/test_script.py
+++ webassets-2.0/tests/test_script.py
@@ -8,14 +8,12 @@ from __future__ import with_statement @@ -8,14 +8,12 @@ from __future__ import with_statement
import logging import logging
@@ -1176,6 +1511,17 @@ Index: webassets-2.0/tests/test_script.py
from webassets import Bundle from webassets import Bundle
from webassets.exceptions import BuildError from webassets.exceptions import BuildError
@@ -40,8 +38,8 @@ class MockBundle(Bundle):
class TestCLI(TempEnvironmentHelper):
- def setup(self):
- super(TestCLI, self).setup()
+ def setup_method(self):
+ super(TestCLI, self).setup_method()
self.assets_env = self.env
self.cmd_env = CommandLineEnvironment(self.assets_env, logging)
@@ -96,7 +94,7 @@ class TestBuildCommand(TestCLI): @@ -96,7 +94,7 @@ class TestBuildCommand(TestCLI):
# Building to a non-existing path would fail, directories # Building to a non-existing path would fail, directories
@@ -1194,6 +1540,17 @@ Index: webassets-2.0/tests/test_script.py
directory=self.path('some/path')) directory=self.path('some/path'))
def test_no_cache(self): def test_no_cache(self):
@@ -212,8 +210,8 @@ class TestWatchCommand(TestWatchMixin, T
default_files = {'in': 'foo', 'out': 'bar'}
- def setup(self):
- super(TestWatchCommand, self).setup()
+ def setup_method(self):
+ super(TestWatchCommand, self).setup_method()
# Pay particular attention that the watch command works with auto_build
# disabled (since normally this implies no use of the updater, but
@@ -313,15 +311,12 @@ class TestArgparseImpl(TestWatchMixin, T @@ -313,15 +311,12 @@ class TestArgparseImpl(TestWatchMixin, T
the commandline, we fail with a clean error. the commandline, we fail with a clean error.
""" """
@@ -1212,10 +1569,8 @@ Index: webassets-2.0/tests/test_script.py
self.cmd_env = CommandLineEnvironment(self.env, logging) self.cmd_env = CommandLineEnvironment(self.env, logging)
self.cmd_env.commands['watch'] = \ self.cmd_env.commands['watch'] = \
Index: webassets-2.0/tests/test_updaters.py --- a/tests/test_updaters.py
=================================================================== +++ b/tests/test_updaters.py
--- webassets-2.0.orig/tests/test_updaters.py
+++ webassets-2.0/tests/test_updaters.py
@@ -1,5 +1,7 @@ @@ -1,5 +1,7 @@
import os import os
-from nose.tools import assert_raises -from nose.tools import assert_raises
@@ -1225,6 +1580,26 @@ Index: webassets-2.0/tests/test_updaters.py
from webassets import Environment, Bundle from webassets import Environment, Bundle
from webassets.exceptions import BundleError, BuildError from webassets.exceptions import BundleError, BuildError
from webassets.updater import TimestampUpdater, BundleDefUpdater, SKIP_CACHE from webassets.updater import TimestampUpdater, BundleDefUpdater, SKIP_CACHE
@@ -13,7 +15,7 @@ class TestBundleDefBaseUpdater(object):
changes.
"""
- def setup(self):
+ def setup_method(self):
self.env = Environment(None, None) # we won't create files
self.env.cache = MemoryCache(capacity=100)
self.bundle = Bundle(output="target")
@@ -63,8 +65,8 @@ class TestTimestampUpdater(TempEnvironme
default_files = {'in': '', 'out': ''}
- def setup(self):
- TempEnvironmentHelper.setup(self)
+ def setup_method(self):
+ TempEnvironmentHelper.setup_method(self)
# Test the timestamp updater with cache disabled, so that the
# BundleDefUpdater() base class won't interfere.
@@ -201,7 +203,7 @@ class TestTimestampUpdater(TempEnvironme @@ -201,7 +203,7 @@ class TestTimestampUpdater(TempEnvironme
an error is raised. an error is raised.
""" """
@@ -1252,10 +1627,8 @@ Index: webassets-2.0/tests/test_updaters.py
# As soon as a manifest is set, the updater will start to work, # As soon as a manifest is set, the updater will start to work,
# even if the manifest does not actually have a version. This is # even if the manifest does not actually have a version. This is
Index: webassets-2.0/tests/test_version.py --- a/tests/test_version.py
=================================================================== +++ b/tests/test_version.py
--- webassets-2.0.orig/tests/test_version.py
+++ webassets-2.0/tests/test_version.py
@@ -3,7 +3,8 @@ @@ -3,7 +3,8 @@
import hashlib import hashlib
@@ -1266,6 +1639,17 @@ Index: webassets-2.0/tests/test_version.py
from webassets.env import Environment from webassets.env import Environment
from webassets.merge import MemoryHunk from webassets.merge import MemoryHunk
@@ -31,8 +32,8 @@ def test_builtin_manifest_accessors():
class TestTimestampVersion(TempEnvironmentHelper):
- def setup(self):
- super(TestTimestampVersion, self).setup()
+ def setup_method(self):
+ super(TestTimestampVersion, self).setup_method()
self.v = TimestampVersion()
# Create a bunch of files with known mtimes
@@ -60,7 +61,7 @@ class TestTimestampVersion(TempEnvironme @@ -60,7 +61,7 @@ class TestTimestampVersion(TempEnvironme
# What if the output file does not exist? (this should not happen, right?) # What if the output file does not exist? (this should not happen, right?)
@@ -1284,7 +1668,18 @@ Index: webassets-2.0/tests/test_version.py
self.bundle, self.env, None) self.bundle, self.env, None)
def test_outputfile_timestamp(self): def test_outputfile_timestamp(self):
@@ -127,13 +128,13 @@ class TestHashVersion(TempEnvironmentHel @@ -94,8 +95,8 @@ class TestTimestampVersion(TempEnvironme
class TestHashVersion(TempEnvironmentHelper):
- def setup(self):
- super(TestHashVersion, self).setup()
+ def setup_method(self):
+ super(TestHashVersion, self).setup_method()
self.v = HashVersion()
# Create a bunch of files with known content
@@ -127,20 +128,20 @@ class TestHashVersion(TempEnvironmentHel
# What if the output file does not exist? (this should not happen, right?) # What if the output file does not exist? (this should not happen, right?)
self.unlink('out') self.unlink('out')
@@ -1300,6 +1695,37 @@ Index: webassets-2.0/tests/test_version.py
self.bundle, self.env, None) self.bundle, self.env, None)
class TestFileManifest(TempEnvironmentHelper):
- def setup(self):
- super(TestFileManifest, self).setup()
+ def setup_method(self):
+ super(TestFileManifest, self).setup_method()
self.bundle = self.mkbundle(output='foo')
def test_repl(self):
@@ -176,8 +177,8 @@ class TestFileManifest(TempEnvironmentHe
class TestJsonManifest(TempEnvironmentHelper):
- def setup(self):
- super(TestJsonManifest, self).setup()
+ def setup_method(self):
+ super(TestJsonManifest, self).setup_method()
self.bundle = self.mkbundle(output='foo')
def test_repl(self):
@@ -199,8 +200,8 @@ class TestJsonManifest(TempEnvironmentHe
class TestCacheManifest(TempEnvironmentHelper):
- def setup(self):
- super(TestCacheManifest, self).setup()
+ def setup_method(self):
+ super(TestCacheManifest, self).setup_method()
self.bundle = self.mkbundle(output='foo')
def test_repl(self):
@@ -221,7 +222,7 @@ class TestCacheManifest(TempEnvironmentH @@ -221,7 +222,7 @@ class TestCacheManifest(TempEnvironmentH
# If no cache is enabled, an error is raised # If no cache is enabled, an error is raised