def test_get_webassets_env_from_settings_no_base_url(self): from pyramid_webassets import get_webassets_env_from_settings settings = {'webassets.base_dir': '/home'} with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings) assert str(cm.exception) == "You need to provide webassets.base_url in your configuration"
def test_get_webassets_env_from_settings_no_base_url(self): from pyramid_webassets import get_webassets_env_from_settings settings = {'webassets.base_dir': '/home'} with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings) assert cm.exception.message == "You need to provide webassets.base_url in your configuration"
def test_get_webassets_env_from_settings_no_base_dir(self): from pyramid_webassets import get_webassets_env_from_settings settings = {'webassets.base_url': '/static'} with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings) assert cm.exception.message == "You need to provide webassets.base_dir in your configuration"
def test_get_webassets_env_from_settings_no_base_dir(self): from pyramid_webassets import get_webassets_env_from_settings settings = {'webassets.base_url': '/static'} with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings) assert str( cm.exception ) == "You need to provide webassets.base_dir in your configuration"
def test_get_webassets_env_from_settings_prefix_bad_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': '/static', 'foo.base_dir': os.getcwd(), } with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings, prefix='webassets') assert cm.exception.message == "You need to provide webassets.base_dir in your configuration"
def test_get_webassets_env_from_settings_prefix_bad_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': '/static', 'foo.base_dir': '/home/sontek', } with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings, prefix='webassets') assert cm.exception.message == "You need to provide webassets.base_dir in your configuration"
def test_get_webassets_env_from_settings_prefix_bad_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': 'static', 'foo.base_dir': os.getcwd(), } with self.assertRaises(Exception) as cm: get_webassets_env_from_settings(settings, prefix='webassets') assert str(cm.exception) == "You need to provide webassets.base_dir in your configuration"
def test_get_webassets_env_from_settings_paths(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.paths': '{"/path/to/scripts": "/js", "/path/to/styles": "/css"}', } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url'] self.assertEqual(env.url_mapping, { '/path/to/scripts': '/js', '/path/to/styles': '/css', }) self.assertEqual(sorted(env.load_path), sorted([ '/path/to/styles', '/path/to/scripts', ]))
def test_bundles_yamlloader_asset(self): try: import yaml except ImportError: raise unittest.SkipTest('PyYAML not installed') from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.bundles': ('dotted.package.name:foo/bar.yaml\n' 'dotted.package.name:foo/baz.yaml'), } self.create_files({ 'dotted/__init__.py': '', 'dotted/package/__init__.py': '', 'dotted/package/name/__init__.py': '', 'dotted/package/name/foo/bar.yaml': ('mycss: {contents: style/mycssoverride.css}'), 'dotted/package/name/foo/baz.yaml': ('mycss: {contents: style/mycss.css}\n' 'myjs: {contents: js/myjs.js}'), }) env = get_webassets_env_from_settings(settings) self.assertEqual(env.config.get('bundles'), None) self.assertIsNotNone(env['mycss']) self.assertEqual(sorted(env._named_bundles.keys()), ['mycss', 'myjs']) self.assertIn('style/mycssoverride.css', env['mycss'].contents)
def test_get_webassets_env_from_settings_complete(self): from pyramid_webassets import get_webassets_env_from_settings import webassets settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.debug': 'true', 'webassets.cache': 'false', 'webassets.updater': 'always', 'webassets.jst_compiler': 'Handlebars.compile', 'webassets.jst_namespace': 'window.Ember.TEMPLATES' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url'] assert env.debug is True assert isinstance(env.updater, webassets.updater.AlwaysUpdater) assert env.config['JST_COMPILER'] == settings['webassets.jst_compiler'] assert env.config['JST_NAMESPACE'] == settings[ 'webassets.jst_namespace'] assert env.cache is None assert env.auto_build is True
def test_bundles_yamlloader_asset(self): try: import yaml except ImportError: raise unittest.SkipTest('PyYAML not installed') from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.bundles': ( 'dotted.package.name:foo/bar.yaml\n' 'dotted.package.name:foo/baz.yaml' ), } self.create_files({ 'dotted/__init__.py': '', 'dotted/package/__init__.py': '', 'dotted/package/name/__init__.py': '', 'dotted/package/name/foo/bar.yaml': ( 'mycss: {contents: style/mycssoverride.css}' ), 'dotted/package/name/foo/baz.yaml': ( 'mycss: {contents: style/mycss.css}\n' 'myjs: {contents: js/myjs.js}' ), }) env = get_webassets_env_from_settings(settings) self.assertEqual(env.config.get('bundles'), None) self.assertIsNotNone(env['mycss']) self.assertEqual(sorted(env._named_bundles.keys()), ['mycss', 'myjs']) self.assertIn('style/mycssoverride.css', env['mycss'].contents)
def test_auto_bool(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.less_run_in_debug': 'true', } env = get_webassets_env_from_settings(settings) assert env.config['less_run_in_debug'] is True
def test_auto_json(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.less_extra_args': 'json:["--foo", "--bar"]', } env = get_webassets_env_from_settings(settings) assert env.config['less_extra_args'] == ['--foo', '--bar']
def test_auto_bool(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.less_run_in_debug': 'true', } env = get_webassets_env_from_settings(settings) assert env.config['less_run_in_debug'] is True
def test_auto_json(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.less_extra_args': 'json:["--foo", "--bar"]', } env = get_webassets_env_from_settings(settings) assert env.config['less_extra_args'] == ['--foo', '--bar']
def test_get_webassets_env_from_settings_minimal(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url']
def test_get_webassets_env_from_settings_with_cache(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': '/home/sontek', 'webassets.cache': 'true', } env = get_webassets_env_from_settings(settings) assert env.cache != None
def test_get_webassets_env_from_settings_load_path(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.load_path': '/foo bar/\nbaz' } env = get_webassets_env_from_settings(settings) assert env.load_path == ['/foo', 'bar/', 'baz']
def test_get_webassets_env_from_settings_with_cache(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.cache': 'true', } env = get_webassets_env_from_settings(settings) assert env.cache is not None
def test_get_webassets_env_from_settings_load_path(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.load_path': '/foo bar/\nbaz' } env = get_webassets_env_from_settings(settings) assert env.load_path == ['/foo', 'bar/', 'baz']
def test_get_webassets_env_from_settings_with_cache(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.cache': 'true', } env = get_webassets_env_from_settings(settings) assert env.cache is not None
def test_get_webassets_env_from_settings_asset_spec_dir(self): import pyramid_webassets from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': 'pyramid_webassets:static', } env = get_webassets_env_from_settings(settings) expected = os.path.join(pyramid_webassets.__path__[0], 'static') assert env.directory == expected
def test_get_webassets_env_from_settings_prefix_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': '/static', 'foo.base_dir': '/home/sontek', } env = get_webassets_env_from_settings(settings, prefix='foo') assert env != None assert env.directory == settings['foo.base_dir'] assert env.url == settings['foo.base_url']
def test_get_webassets_env_from_settings_asset_spec_dir(self): import pyramid_webassets from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': 'pyramid_webassets:static', } env = get_webassets_env_from_settings(settings) expected = os.path.join(pyramid_webassets.__path__[0], 'static') assert env.directory == expected
def test_get_webassets_env_from_settings_dir_with_colon(self): import pyramid_webassets from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': 'here:static', } env = get_webassets_env_from_settings(settings) expected = os.path.abspath('here:static') assert env.directory == expected
def test_webassets_static_view_setting(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.static_view': True, } env = get_webassets_env_from_settings(settings) assert env is not None assert env.config['static_view'] == settings['webassets.static_view']
def test_get_webassets_env_from_settings_prefix_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': 'static', 'foo.base_dir': os.getcwd(), } env = get_webassets_env_from_settings(settings, prefix='foo') assert env is not None assert env.directory == settings['foo.base_dir'] assert env.url == '/' + settings['foo.base_url']
def test_get_webassets_env_from_settings_prefix_change(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'foo.base_url': '/static', 'foo.base_dir': os.getcwd(), } env = get_webassets_env_from_settings(settings, prefix='foo') assert env is not None assert env.directory == settings['foo.base_dir'] assert env.url == settings['foo.base_url']
def test_webassets_static_view_setting(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.static_view': True, } env = get_webassets_env_from_settings(settings) assert env is not None assert env.config['static_view'] == settings['webassets.static_view']
def test_get_webassets_env_from_settings_dir_with_colon(self): import pyramid_webassets from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': 'here:static', } env = get_webassets_env_from_settings(settings) expected = os.path.abspath('here:static') assert env.directory == expected
def test_get_webassets_env_from_settings_autobuild_disabled(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.auto_build': 'false' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url'] assert env.auto_build is False
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) env = get_webassets_env_from_settings(settings) for name, bundle in assets: print("Building asset {0}".format(name)) bundle.build(env)
def test_get_webassets_env_from_settings_minimal(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == '/' + settings['webassets.base_url'] self.assertEqual(env.url_mapping, {}) self.assertEqual(env.load_path, [])
def test_get_webassets_env_from_settings_autobuild_disabled(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.auto_build': 'false' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == '/' + settings['webassets.base_url'] assert env.auto_build is False
def test_get_webassets_env_from_settings_autobuild_disabled(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': '/home/sontek', 'webassets.auto_build': 'false' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url'] assert env.auto_build == False
def test_webassets_static_view_cache_control_setting(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.static_view': True, 'webassets.cache_max_age': 3600, } env = get_webassets_env_from_settings(settings) assert env is not None assert env.config['static_view'] == settings['webassets.static_view'] assert env.config['cache_max_age'] == settings['webassets.cache_max_age']
def test_webassets_static_view_cache_control_setting(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.static_view': True, 'webassets.cache_max_age': 3600, } env = get_webassets_env_from_settings(settings) assert env != None assert env.config['static_view'] == settings['webassets.static_view'] assert env.config['cache_max_age'] == settings['webassets.cache_max_age']
def test_bundles_yamlloader_file(self): try: import yaml except ImportError: raise unittest.SkipTest('PyYAML not installed') from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.bundles': self.tempdir + '/foo/bar.yaml', } self.create_files({'foo/bar.yaml': 'mycss: {contents: style/mycss.css}'}) env = get_webassets_env_from_settings(settings) self.assertEqual(env.config.get('bundles'), None) self.assertIsNotNone(env['mycss']) self.assertEqual(list(env._named_bundles.keys()), ['mycss'])
def test_bundles_yamlloader_file(self): try: import yaml except ImportError: raise unittest.SkipTest('PyYAML not installed') from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.bundles': self.tempdir + '/foo/bar.yaml', } self.create_files({'foo/bar.yaml': 'mycss: {contents: style/mycss.css}'}) env = get_webassets_env_from_settings(settings) self.assertEqual(env.config.get('bundles'), None) self.assertIsNotNone(env['mycss']) self.assertEqual(env._named_bundles.keys(), ['mycss'])
def test_get_webassets_env_from_settings_paths_null_url(self): from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.paths': '{"/path/to/scripts": null, "/path/to/styles": "/css"}', } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == '/' + settings['webassets.base_url'] self.assertEqual(env.url_mapping, { '/path/to/styles': '/css', }) self.assertEqual(sorted(env.load_path), sorted([ '/path/to/styles', '/path/to/scripts', ]))
def test_get_webassets_env_from_settings_complete(self): from pyramid_webassets import get_webassets_env_from_settings import webassets settings = { 'webassets.base_url': '/static', 'webassets.base_dir': '/home/sontek', 'webassets.debug': 'true', 'webassets.cache': 'false', 'webassets.updater': 'always', 'webassets.jst_compiler': 'Handlebars.compile' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == settings['webassets.base_url'] assert env.debug == True assert isinstance(env.updater, webassets.updater.AlwaysUpdater) assert env.config['JST_COMPILER'] == settings['webassets.jst_compiler'] assert env.cache == None
def test_get_webassets_env_from_settings_with_cache_directory(self): from pyramid_webassets import get_webassets_env_from_settings from uuid import uuid4 import shutil tmpdir = os.path.join(os.getcwd(), 'test-cache-dir-' + str(uuid4())) settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.cache': tmpdir, } assert not os.path.isdir(tmpdir) env = get_webassets_env_from_settings(settings) assert env.cache is not None assert env.cache == tmpdir assert os.path.isdir(tmpdir) shutil.rmtree(tmpdir)
def test_get_webassets_env_from_settings_with_cache_directory(self): from pyramid_webassets import get_webassets_env_from_settings from uuid import uuid4 import shutil tmpdir = os.path.join(os.getcwd(), 'test-cache-dir-' + str(uuid4())) settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.cache': tmpdir, } assert not os.path.isdir(tmpdir) env = get_webassets_env_from_settings(settings) assert env.cache is not None assert env.cache == tmpdir assert os.path.isdir(tmpdir) shutil.rmtree(tmpdir)
def test_get_webassets_env_from_settings_complete(self): from pyramid_webassets import get_webassets_env_from_settings import webassets settings = { 'webassets.base_url': 'static', 'webassets.base_dir': os.getcwd(), 'webassets.debug': 'true', 'webassets.cache': 'false', 'webassets.updater': 'always', 'webassets.jst_compiler': 'Handlebars.compile', 'webassets.jst_namespace': 'window.Ember.TEMPLATES' } env = get_webassets_env_from_settings(settings) assert env.directory == settings['webassets.base_dir'] assert env.url == '/' + settings['webassets.base_url'] assert env.debug is True assert isinstance(env.updater, webassets.updater.AlwaysUpdater) assert env.config['JST_COMPILER'] == settings['webassets.jst_compiler'] assert env.config['JST_NAMESPACE'] == settings['webassets.jst_namespace'] assert env.cache is None assert env.auto_build is True
def test_webassets_source_url_versions(self): import md5 from pyramid_webassets import get_webassets_env_from_settings settings = { 'webassets.base_url': '/static', 'webassets.base_dir': os.getcwd(), 'webassets.static_view': True, 'webassets.cache_max_age': 3600, } env = get_webassets_env_from_settings(settings) env.append_path(os.getcwd(), 'http://static.example.com') version = md5.md5(open(__file__).read()).hexdigest()[:8] path = 'pyramid_webassets/tests/test_webassets.py' spec = 'pyramid_webassets:tests/test_webassets.py' expected = 'http://static.example.com/%s?%s' % (path, version) assert ( env.resolver.resolve_source_to_url(os.path.abspath(path), spec) == expected )