diff --git a/mincss/__init__.py b/mincss/__init__.py index 2b3823f..4ad2f68 100644 --- a/mincss/__init__.py +++ b/mincss/__init__.py @@ -1 +1 @@ -__version__ = '0.11.2' +__version__ = '0.11.3' diff --git a/mincss/processor.py b/mincss/processor.py index de4d924..d856496 100644 --- a/mincss/processor.py +++ b/mincss/processor.py @@ -389,7 +389,7 @@ def commentmatcher(match): for temp_key, old, __ in inner_improvements: assert old in content, old - content = content.replace(old, temp_key) + content = content.replace(old, temp_key, 1) _regex = re.compile('((.*?){(.*?)})', re.DOTALL | re.M) diff --git a/tests/duplicate-media-queries.html b/tests/duplicate-media-queries.html new file mode 100644 index 0000000..611662b --- /dev/null +++ b/tests/duplicate-media-queries.html @@ -0,0 +1,12 @@ + + + + + + +

Hello world

+ + diff --git a/tests/test_mincss.py b/tests/test_mincss.py index 99b8d77..ee462d3 100644 --- a/tests/test_mincss.py +++ b/tests/test_mincss.py @@ -355,3 +355,16 @@ def test_before_after(self): after = p.inlines[0].after ok_('ul li:after { content: "x"; }' not in after) ok_('ol li:before { content: "x"; }' in after) + + def test_duplicate_media_queries(self): + """if two media queries look exactly the same, it shouldn't fail. + + This is kinda hackish but it desperately tries to solve + https://github.com/peterbe/mincss/issues/46 + """ + html = os.path.join(HERE, 'duplicate-media-queries.html') + url = 'file://' + html + p = Processor() + p.process(url) + snippet = '@media screen and (min-width: 600px) {' + eq_(p.inlines[0].after.count(snippet), 2)