def test_custom_output_dir(self): try: old_output_dir = settings.COMPRESS_OUTPUT_DIR settings.COMPRESS_OUTPUT_DIR = 'custom' output = u'<script type="text/javascript" src="/media/custom/js/066cd253eada.js"></script>' self.assertEqual(output, JsCompressor(self.js).output()) settings.COMPRESS_OUTPUT_DIR = '' output = u'<script type="text/javascript" src="/media/js/066cd253eada.js"></script>' self.assertEqual(output, JsCompressor(self.js).output()) settings.COMPRESS_OUTPUT_DIR = '/custom/nested/' output = u'<script type="text/javascript" src="/media/custom/nested/js/066cd253eada.js"></script>' self.assertEqual(output, JsCompressor(self.js).output()) finally: settings.COMPRESS_OUTPUT_DIR = old_output_dir
def setUp(self): self.css = """\ <link rel="stylesheet" href="/static/css/one.css" type="text/css" /> <style type="text/css">p { border:5px solid green;}</style> <link rel="stylesheet" href="/static/css/two.css" type="text/css" />""" self.css_node = CssCompressor(self.css) self.js = """\ <script src="/static/js/one.js" type="text/javascript"></script> <script type="text/javascript">obj.value = "value";</script>""" self.js_node = JsCompressor(self.js)
def test_js_output(self): def extract_attr(tag): if tag.has_attr('async'): return 'async' if tag.has_attr('defer'): return 'defer' js_node = JsCompressor(self.js) output = [None, 'async', 'defer', None, 'async', None] scripts = make_soup(js_node.output()).find_all('script') attrs = [extract_attr(s) for s in scripts] self.assertEqual(output, attrs)
def test_js_output(self): def extract_attr(tag): if tag.has_attr("async"): return "async" if tag.has_attr("defer"): return "defer" js_node = JsCompressor(self.js) output = [None, "async", "defer", None, "async", None] scripts = make_soup(js_node.output()).find_all("script") attrs = [extract_attr(s) for s in scripts] self.assertEqual(output, attrs)
def setUp(self): settings.COMPRESS_ENABLED = True settings.COMPRESS_PRECOMPILERS = {} settings.COMPRESS_DEBUG_TOGGLE = 'nocompress' self.css = """\ <link rel="stylesheet" href="/media/css/one.css" type="text/css" /> <style type="text/css">p { border:5px solid green;}</style> <link rel="stylesheet" href="/media/css/two.css" type="text/css" />""" self.css_node = CssCompressor(self.css) self.js = """\ <script src="/media/js/one.js" type="text/javascript"></script> <script type="text/javascript">obj.value = "value";</script>""" self.js_node = JsCompressor(self.js)
def setUp(self): settings.COMPRESS_ENABLED = True self.css = """ <link rel="stylesheet" href="/media/css/one.css" type="text/css" charset="utf-8"> <style type="text/css">p { border:5px solid green;}</style> <link rel="stylesheet" href="/media/css/two.css" type="text/css" charset="utf-8"> """ self.css_node = CssCompressor(self.css) self.js = """ <script src="/media/js/one.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8">obj.value = "value";</script> """ self.js_node = JsCompressor(self.js)
def test_js_output(self): def extract_attr(tag): if tag.has_attr('async'): return 'async' if tag.has_attr('defer'): return 'defer' js_node = JsCompressor(self.js) output = [None, 'async', 'defer', None, 'async', None] scripts = soup_find_all(js_node.output(), 'script') if use_bs4: attrs = [extract_attr(i) for i in scripts] else: attrs = [s.get('async') or s.get('defer') for s in scripts] self.assertEqual(output, attrs)
def setUp(self): settings.COMPRESS_ENABLED = True settings.COMPRESS_PRECOMPILERS = {} self.css = """\ <link rel="stylesheet" href="/media/css/one.css" type="text/css" /> <style type="text/css">p { border:5px solid green;}</style> <link rel="stylesheet" href="/media/css/one.less" type="text/less" /> <link rel="stylesheet" href="/media/css/two.less" type="text/less" />""" self.css_node = CssCompressor(self.css) self.css_node.opts = {'group_first': 'true'} self.js = """\ <script src="/media/js/one.js" type="text/javascript"></script> <script type="text/javascript">obj.value = "value";</script> <script src="/media/js/one.coffee" type="text/coffeescript"></script> <script src="/media/js/two.coffee" type="text/coffeescript"></script>""" self.js_node = JsCompressor(self.js)
def render_tag(self, context, name, nodelist): request = context['request'] rendered_contents = nodelist.render(context) content = request.media_holder[name].render() if settings.COMPRESS: if name == 'css': compressor = CssCompressor(content) elif name == 'js': compressor = JsCompressor(content) output = self.cache_get(compressor.cachekey) if output is None: try: output = compressor.output() self.cache_set(compressor.cachekey, output) except: from traceback import format_exc raise Exception(format_exc()) else: output = content # no compression return '%s\n%s' % (output, rendered_contents)
def test_js_content(self): js_node = JsCompressor(self.js) content = js_node.filter_input() self.assertEqual(content[0], ';obj = {};') self.assertEqual(content[1], ';pollos = {}')
def test_custom_output_dir3(self): output = '<script type="text/javascript" src="/static/custom/nested/js/74e158ccb432.js"></script>' self.assertEqual(output, JsCompressor(self.js).output())
def test_custom_output_dir3(self): output = '<script src="/static/custom/nested/js/8a0fed36c317.js"></script>' self.assertEqual(output, JsCompressor('js', self.js).output())
def test_custom_output_dir2(self): output = '<script type="text/javascript" src="/static/js/066cd253eada.js"></script>' self.assertEqual(output, JsCompressor(self.js).output())