From 44f1cbc95458bac891cb40c18096f7ef5aa4b28862d1989e70e497bd34831d74 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Thu, 7 Dec 2023 16:28:34 +0000 Subject: [PATCH 1/2] fix patches and clean up the SPEC file. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-webassets?expand=0&rev=13 --- python-webassets.spec | 27 +- remove-nose.patch | 676 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 564 insertions(+), 139 deletions(-) diff --git a/python-webassets.spec b/python-webassets.spec index edef790..bebc987 100644 --- a/python-webassets.spec +++ b/python-webassets.spec @@ -1,7 +1,7 @@ # # 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 # remain the property of their copyright owners, unless otherwise agreed @@ -16,7 +16,6 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} %bcond_without python2 Name: python-webassets 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 # PATCH-FIX-UPSTREAM remove-nose -- gh#miracle2k/webassets#539 Patch1: remove-nose.patch -BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros +Requires(post): update-alternatives +Requires(postun):update-alternatives +BuildArch: noarch # SECTION test requirements -# jsmin and rjsmin fail if imported: different utf8 filters -BuildRequires: %{python_module pytest} BuildRequires: %{python_module Jinja2} BuildRequires: %{python_module PyYAML} BuildRequires: %{python_module cssutils} BuildRequires: %{python_module glob2} BuildRequires: %{python_module lesscpy} +# jsmin and rjsmin fail if imported: different utf8 filters +BuildRequires: %{python_module pytest} BuildRequires: %{python_module rcssmin} BuildRequires: %{python_module slimit} BuildRequires: sassc @@ -52,10 +55,6 @@ BuildRequires: sassc BuildRequires: python2-mock %endif # /SECTION -Requires: python-setuptools -Requires(post): update-alternatives -Requires(postun):update-alternatives -BuildArch: noarch %python_subpackages %description @@ -65,15 +64,14 @@ URL rewriting in CSS files. %prep %autosetup -p1 -n webassets-%{version} + 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 -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_clone -a %{buildroot}%{_bindir}/webassets %python_expand %fdupes %{buildroot}%{$python_sitelib} @@ -91,6 +89,7 @@ export LANG="en_US.UTF8" %license LICENSE %doc AUTHORS CHANGES README.rst %python_alternative %{_bindir}/webassets -%{python_sitelib}/* +%{python_sitelib}/webassets +%{python_sitelib}/webassets-%{version}*-info %changelog diff --git a/remove-nose.patch b/remove-nose.patch index 0a57eba..b6e4727 100644 --- a/remove-nose.patch +++ b/remove-nose.patch @@ -1,7 +1,105 @@ -Index: webassets-2.0/tests/helpers.py -=================================================================== ---- webassets-2.0.orig/tests/helpers.py -+++ webassets-2.0/tests/helpers.py +--- + examples/appengine/webassets/test.py | 12 - + src/webassets/test.py | 12 - + 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 @@ -43,10 +141,8 @@ Index: webassets-2.0/tests/helpers.py try: -Index: webassets-2.0/tests/test_bundle_build.py -=================================================================== ---- webassets-2.0.orig/tests/test_bundle_build.py -+++ webassets-2.0/tests/test_bundle_build.py +--- a/tests/test_bundle_build.py ++++ b/tests/test_bundle_build.py @@ -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.cache import MemoryCache from webassets.exceptions import BuildError, BundleError -Index: webassets-2.0/tests/test_bundle_urls.py -=================================================================== ---- webassets-2.0.orig/tests/test_bundle_urls.py -+++ 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). + """ + +- 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 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 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): value.""" # On the bundle level @@ -180,7 +296,7 @@ Index: webassets-2.0/tests/test_bundle_urls.py assert len(self.build_called) == 1 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', self.MockBundle('a', output='child1', debug=False), output='rootout', debug=True) @@ -189,7 +305,14 @@ Index: webassets-2.0/tests/test_bundle_urls.py 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): 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 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( 'a', self.MockBundle('1', '2', output='childout', debug='merge'), 'c', output='out') @@ -310,6 +433,15 @@ Index: webassets-2.0/tests/test_bundle_urls.py 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 bundle = self.MockBundle( '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 bundle.urls(calculate_sri=True) == [{'sri': None, 'uri': '/out'}] assert len(self.build_called) == 1 -Index: webassets-2.0/tests/test_bundle_various.py -=================================================================== ---- webassets-2.0.orig/tests/test_bundle_various.py -+++ webassets-2.0/tests/test_bundle_various.py +--- a/tests/test_bundle_various.py ++++ b/tests/test_bundle_various.py @@ -13,12 +13,12 @@ try: HTTPHandler, build_opener, install_opener, addinfourl except ImportError: # Py2 @@ -384,6 +514,17 @@ Index: webassets-2.0/tests/test_bundle_various.py # [bug] Specifically test that we can assign ``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 assert bundle.version == 'foo' self.env.manifest.version = None @@ -393,6 +534,17 @@ Index: webassets-2.0/tests/test_bundle_various.py def test_url_expire(self): """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 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.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 def test_invalid_url(self): """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) def test_autorebuild_updaters(self): -Index: webassets-2.0/tests/test_cache.py -=================================================================== ---- webassets-2.0.orig/tests/test_cache.py -+++ webassets-2.0/tests/test_cache.py +--- a/tests/test_cache.py ++++ b/tests/test_cache.py @@ -2,7 +2,7 @@ from __future__ import with_statement import random @@ -445,6 +606,17 @@ Index: webassets-2.0/tests/test_cache.py from webassets.filter import Filter from webassets.cache import BaseCache, FilesystemCache, MemoryCache 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 bundle = self.mkbundle('in1', 'in2', output='out', filters=self.filter) self.cache.enabled = False @@ -465,10 +637,8 @@ Index: webassets-2.0/tests/test_cache.py def test_filesystem_cache(self): """Regresssion test for two bugs: -Index: webassets-2.0/tests/test_environment.py -=================================================================== ---- webassets-2.0.orig/tests/test_environment.py -+++ webassets-2.0/tests/test_environment.py +--- a/tests/test_environment.py ++++ b/tests/test_environment.py @@ -1,7 +1,8 @@ from __future__ import with_statement @@ -479,6 +649,15 @@ Index: webassets-2.0/tests/test_environment.py from webassets import six 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): 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 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): # Invalid value @@ -538,11 +735,9 @@ Index: webassets-2.0/tests/test_environment.py def test_cache(self): from webassets.cache import BaseCache, FilesystemCache -Index: webassets-2.0/tests/test_ext/test_jinja2.py -=================================================================== ---- webassets-2.0.orig/tests/test_ext/test_jinja2.py -+++ webassets-2.0/tests/test_ext/test_jinja2.py -@@ -1,15 +1,13 @@ +--- a/tests/test_ext/test_jinja2.py ++++ b/tests/test_ext/test_jinja2.py +@@ -1,20 +1,18 @@ -from nose.plugins.skip import SkipTest +import pytest + @@ -564,10 +759,34 @@ Index: webassets-2.0/tests/test_ext/test_jinja2.py class TestTemplateTag(object): -Index: webassets-2.0/tests/test_filters.py -=================================================================== ---- webassets-2.0.orig/tests/test_filters.py -+++ webassets-2.0/tests/test_filters.py + +- def setup(self): ++ def setup_method(self): + # 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 import os.path from subprocess import check_output @@ -630,8 +849,12 @@ Index: webassets-2.0/tests/test_filters.py def test_getconfig_os_env_types(self): """Test type conversion for values read from the environment. -@@ -174,7 +180,7 @@ class TestExternalToolClass(object): - def setup(self): +@@ -171,16 +177,16 @@ class TestExternalToolClass(object): + 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'): # A large part of this functionality is not available on Python 2.5 - raise SkipTest() @@ -639,6 +862,13 @@ Index: webassets-2.0/tests/test_filters.py self.patcher = patch('subprocess.Popen') self.popen = self.patcher.start() 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): 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}""" def test_find_pyc_files( self ): -@@ -625,10 +610,7 @@ class TestBuiltinFilters(TempEnvironment +@@ -624,12 +609,9 @@ class TestBuiltinFilters(TempEnvironment + class TestCSSPrefixer(TempEnvironmentHelper): - def setup(self): +- def setup(self): - try: - import cssprefixer - except ImportError: - raise SkipTest() +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): + cssprefixer = pytest.importorskip('cssprefixer') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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'): - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no coffee') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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): - def setup(self): +- def setup(self): - try: - import jinja2 - except ImportError: - raise SkipTest() +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): + jinja2 = pytest.importorskip('jinja2') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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: - import closure - except ImportError: - raise SkipTest() - +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): + closure = pytest.importorskip('closure') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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'): - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no lessc') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) def test(self): + self.mkbundle('foo.less', filters='less', output='out.css').build() @@ -904,7 +879,7 @@ class TestLess(TempEnvironmentHelper): 'p1', 'p2', filters=less_output, output='out2.css' ).build() @@ -935,9 +1187,12 @@ Index: webassets-2.0/tests/test_filters.py 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'): - raise SkipTest() + pytest.skip('no sass') @@ -946,26 +1201,42 @@ Index: webassets-2.0/tests/test_filters.py - raise SkipTest() + pytest.skip('no Ruby') - TempEnvironmentHelper.setup(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) +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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 self.scss = scss except ImportError: - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no scss') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) def test(self): + self.mkbundle('foo.scss', filters='pyscss', output='out.css').build() @@ -1113,7 +1088,7 @@ class TestPyScss(TempEnvironmentHelper): from PIL import Image 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.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 self.sass = sass except ImportError: - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no sass') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) def test(self): -@@ -1194,7 +1169,7 @@ 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 + self.mkbundle('foo.scss', filters='libsass', output='out.css').build() +@@ -1192,10 +1167,10 @@ class TestCompass(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': "
Im an html jst template. Go syntax highlighting!
" + } + +- 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: - import closure_soy - except: - raise SkipTest() +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): + closure_soy = pytest.importorskip('closure_soy') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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'): - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no tsc') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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'): - raise SkipTest('"r.js" executable not found') +- TempEnvironmentHelper.setup(self) + 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_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: - raise SkipTest() +- TempEnvironmentHelper.setup(self) + pytest.skip('no CLOSURE_STYLESHEETS_PATH in env') - TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(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: # 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() -+ pytest.skip(e.message) ++ if 'Program file not found' in e.args[0]: ++ raise pytest.skip(e.args[0]) else: raise out = self.get('output.css') @@ -1055,23 +1385,23 @@ Index: webassets-2.0/tests/test_filters.py # babel is not installed, that's ok. if 'Program file not found' in str(e): - raise SkipTest() -+ pytest.skip(e.message) ++ pytest.skip(e.args[0]) else: raise 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: # 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() -+ pytest.skip(e.message) ++ if 'Program file not found' in e.args[0]: ++ raise pytest.skip(e.args[0]) else: raise assert (self.get('output.js').strip() == -Index: webassets-2.0/tests/test_loaders.py -=================================================================== ---- webassets-2.0.orig/tests/test_loaders.py -+++ webassets-2.0/tests/test_loaders.py +--- a/tests/test_loaders.py ++++ b/tests/test_loaders.py @@ -1,6 +1,8 @@ from __future__ import with_statement import sys @@ -1091,17 +1421,24 @@ Index: webassets-2.0/tests/test_loaders.py class TestYAML(object): - def setup(self): +- def setup(self): - try: - import yaml - except ImportError: - raise SkipTest() ++ def setup_method(self): + yaml = pytest.importorskip("yaml") def loader(self, text, filename=None): io = StringIO(textwrap.dedent(text)) -@@ -195,10 +193,7 @@ class TestYAMLCustomFilters(TestYAML): - super(TestYAMLCustomFilters, self).setup() +@@ -191,14 +189,11 @@ class TestPython(object): + + 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 - try: @@ -1153,10 +1490,8 @@ Index: webassets-2.0/tests/test_loaders.py # Check that it's back - assert_true(isinstance(get_filter('less'), Filter)) + assert isinstance(get_filter('less'), Filter) -Index: webassets-2.0/tests/test_script.py -=================================================================== ---- webassets-2.0.orig/tests/test_script.py -+++ webassets-2.0/tests/test_script.py +--- a/tests/test_script.py ++++ b/tests/test_script.py @@ -8,14 +8,12 @@ from __future__ import with_statement import logging @@ -1176,6 +1511,17 @@ Index: webassets-2.0/tests/test_script.py from webassets import Bundle 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): # 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')) 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 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.commands['watch'] = \ -Index: webassets-2.0/tests/test_updaters.py -=================================================================== ---- webassets-2.0.orig/tests/test_updaters.py -+++ webassets-2.0/tests/test_updaters.py +--- a/tests/test_updaters.py ++++ b/tests/test_updaters.py @@ -1,5 +1,7 @@ import os -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.exceptions import BundleError, BuildError 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 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, # even if the manifest does not actually have a version. This is -Index: webassets-2.0/tests/test_version.py -=================================================================== ---- webassets-2.0.orig/tests/test_version.py -+++ webassets-2.0/tests/test_version.py +--- a/tests/test_version.py ++++ b/tests/test_version.py @@ -3,7 +3,8 @@ import hashlib @@ -1266,6 +1639,17 @@ Index: webassets-2.0/tests/test_version.py from webassets.env import Environment 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 # 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) 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?) self.unlink('out') @@ -1300,6 +1695,37 @@ Index: webassets-2.0/tests/test_version.py 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 # If no cache is enabled, an error is raised From 1e7fc5af2f0abada0362c84c50aa5adfa0888fb6a247ff81060ac111c50648d3 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Thu, 7 Dec 2023 23:43:25 +0000 Subject: [PATCH 2/2] Accepting request 1131999 from home:mcepl:branches:devel:languages:python - Clean up packaging. OBS-URL: https://build.opensuse.org/request/show/1131999 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-webassets?expand=0&rev=14 --- python-webassets.changes | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/python-webassets.changes b/python-webassets.changes index 32996a3..ea77e61 100644 --- a/python-webassets.changes +++ b/python-webassets.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Dec 7 23:42:33 UTC 2023 - Matej Cepl + +- Clean up packaging. + ------------------------------------------------------------------- Mon Apr 26 23:06:51 UTC 2021 - Ben Greiner