Clean ups tests with topics' lazy evaluation.
authorJakub Pawlowicz <contact@jakubpawlowicz.com>
Sun, 15 Mar 2015 15:08:04 +0000 (15:08 +0000)
committerJakub Pawlowicz <contact@jakubpawlowicz.com>
Sun, 15 Mar 2015 15:08:04 +0000 (15:08 +0000)
It is easier to debug tests when all code is lazily evaluated, means
all topics are functions or static values, not calls to objects.

test/media-queries-test.js
test/module-test.js
test/source-map-test.js
test/text/escape-store-test.js
test/utils/chunker-test.js
test/utils/compatibility-test.js

index 0c2212f..7886e38 100644 (file)
@@ -5,13 +5,17 @@ var CleanCSS = require('../index');
 vows.describe('media queries')
   .addBatch({
     'different ones': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media print{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media print{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}}@media print{div{display:block}}');
       }
     },
     'other than @media': {
-      topic: new CleanCSS().minify('@font-face{font-family:A}@font-face{font-family:B}'),
+      'topic': function () {
+        return new CleanCSS().minify('@font-face{font-family:A}@font-face{font-family:B}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@font-face{font-family:A}@font-face{font-family:B}');
       }
@@ -19,67 +23,89 @@ vows.describe('media queries')
   })
   .addBatch({
     'same two adjacent': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}div{display:block}}');
       }
     },
     'same three adjacent': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media screen{div{display:block}}@media screen{body{width:100%}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media screen{div{display:block}}@media screen{body{width:100%}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}div{display:block}body{width:100%}}');
       }
     },
     'same two with selectors in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}body{width:100%}.one{height:100px}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}body{width:100%}.one{height:100px}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, 'body{width:100%}.one{height:100px}@media screen{a{color:red}div{display:block}}');
       }
     },
     'same two with other @media in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){body{width:100%}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){body{width:100%}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media (min-width:1024px){body{width:100%}}@media screen{a{color:red}div{display:block}}');
       }
     },
     'same two with breaking properties in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}.one{color:#00f}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}.one{color:#00f}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}}.one{color:#00f}@media screen{div{display:block}}');
       }
     },
     'same two with breaking @media in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){.one{color:#00f}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){.one{color:#00f}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}}@media (min-width:1024px){.one{color:#00f}}@media screen{div{display:block}}');
       }
     },
     'same two with breaking nested @media in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){@media screen{.one{color:#00f}}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){@media screen{.one{color:#00f}}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}}@media (min-width:1024px){@media screen{.one{color:#00f}}}@media screen{div{display:block}}');
       }
     },
     'intermixed': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){p{width:100%}}@media screen{div{display:block}}@media (min-width:1024px){body{height:100%}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){p{width:100%}}@media screen{div{display:block}}@media (min-width:1024px){body{height:100%}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}div{display:block}}@media (min-width:1024px){p{width:100%}body{height:100%}}');
       }
     },
     'same two with overriding shorthand in between': {
-      topic: new CleanCSS().minify('@media screen{a{font-size:10px}}@media (min-width:1024px){.one{font:12px Helvetica}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{font-size:10px}}@media (min-width:1024px){.one{font:12px Helvetica}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{font-size:10px}}@media (min-width:1024px){.one{font:12px Helvetica}}@media screen{div{display:block}}');
       }
     },
     'same two with different component property in between': {
-      topic: new CleanCSS().minify('@media screen{a{font-size:10px}}@media (min-width:1024px){.one{font-weight:700}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{font-size:10px}}@media (min-width:1024px){.one{font-weight:700}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media (min-width:1024px){.one{font-weight:700}}@media screen{a{font-size:10px}div{display:block}}');
       }
     },
     'same two with same values as moved in between': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){.one{color:red}}@media screen{div{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media (min-width:1024px){.one{color:red}}@media screen{div{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media (min-width:1024px){.one{color:red}}@media screen{a{color:red}div{display:block}}');
       }
@@ -87,7 +113,9 @@ vows.describe('media queries')
   })
   .addBatch({
     'further optimizations': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}@media screen{a{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}@media screen{a{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red;display:block}}');
       }
@@ -95,7 +123,9 @@ vows.describe('media queries')
   })
   .addBatch({
     'with comments': {
-      topic: new CleanCSS().minify('@media screen{a{color:red}}/*! a comment */@media screen{a{display:block}}'),
+      'topic': function () {
+        return new CleanCSS().minify('@media screen{a{color:red}}/*! a comment */@media screen{a{display:block}}');
+      },
       'get merged': function(minified) {
         assert.equal(minified.styles, '/*! a comment */@media screen{a{color:red;display:block}}');
       }
@@ -103,7 +133,9 @@ vows.describe('media queries')
   })
   .addBatch({
     'disabled': {
-      topic: new CleanCSS({ mediaMerging: false }).minify('@media screen{a{color:red}}@media screen{a{display:block}}'),
+      'topic': function () {
+        return new CleanCSS({ mediaMerging: false }).minify('@media screen{a{color:red}}@media screen{a{display:block}}');
+      },
       'keeps @media intact': function(minified) {
         assert.equal(minified.styles, '@media screen{a{color:red}}@media screen{a{display:block}}');
       }
index 7eb12f7..4012a3b 100644 (file)
@@ -67,13 +67,17 @@ vows.describe('module tests').addBatch({
     }
   },
   'no debug': {
-    'topic': new CleanCSS().minify('a{ color: #f00 }'),
+    'topic': function () {
+      return new CleanCSS().minify('a{ color: #f00 }');
+    },
     'should not populate stats hash': function (error, minified) {
       assert.isEmpty(minified.stats);
     }
   },
   'debug': {
-    'topic': new CleanCSS({ debug: true }).minify('a{ color: #f00 }'),
+    'topic': function () {
+      return new CleanCSS({ debug: true }).minify('a{ color: #f00 }');
+    },
     'should give time taken': function (error, minified) {
       assert.isNumber(minified.stats.timeSpent);
     },
@@ -88,13 +92,17 @@ vows.describe('module tests').addBatch({
     }
   },
   'no warnings': {
-    'topic': new CleanCSS().minify('a{ color: #f00 }'),
+    'topic': function () {
+      return new CleanCSS().minify('a{ color: #f00 }');
+    },
     'if no reasons given': function (error, minified) {
       assert.isEmpty(minified.warnings);
     }
   },
   'warnings': {
-    'topic': new CleanCSS({ root: 'test/fixtures', target: 'custom-warnings.css' }).minify('a{color:red}'),
+    'topic': function () {
+      return new CleanCSS({ root: 'test/fixtures', target: 'custom-warnings.css' }).minify('a{color:red}');
+    },
     'are an array': function (error, minified) {
       assert.isArray(minified.warnings);
     },
@@ -104,7 +112,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on extra closing brace': {
-    'topic': new CleanCSS().minify('a{display:block}}'),
+    'topic': function () {
+      return new CleanCSS().minify('a{display:block}}');
+    },
     'should minify correctly': function (error, minified) {
       assert.equal(minified.styles, 'a{display:block}');
     },
@@ -117,7 +127,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on missing closing brace': {
-    'topic': new CleanCSS().minify('a{display:block'),
+    'topic': function () {
+      return new CleanCSS().minify('a{display:block');
+    },
     'should minify correctly': function (error, minified) {
       assert.equal(minified.styles, '');
     },
@@ -130,7 +142,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on unexpected body': {
-    'topic': new CleanCSS().minify('a{display:block}color:#535353}p{color:red}'),
+    'topic': function () {
+      return new CleanCSS().minify('a{display:block}color:#535353}p{color:red}');
+    },
     'should minify correctly': function (error, minified) {
       assert.equal(minified.styles, 'a{display:block}p{color:red}');
     },
@@ -143,7 +157,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on invalid properties': {
-    'topic': new CleanCSS().minify('a{color:}'),
+    'topic': function () {
+      return new CleanCSS().minify('a{color:}');
+    },
     'should minify correctly': function (error, minified) {
       assert.isEmpty(minified.styles);
     },
@@ -156,7 +172,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on broken urls': {
-    'topic': new CleanCSS().minify('a{background:url(image/}'),
+    'topic': function () {
+      return new CleanCSS().minify('a{background:url(image/}');
+    },
     'should output correct content': function (error, minified) {
       assert.equal(minified.styles, 'a{background:url(image/}');
     },
@@ -169,7 +187,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on broken imports': {
-    'topic': new CleanCSS().minify('@impor'),
+    'topic': function () {
+      return new CleanCSS().minify('@impor');
+    },
     'should output correct content': function (error, minified) {
       assert.isEmpty(minified.styles);
     },
@@ -182,7 +202,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'warnings on broken comments': {
-    'topic': new CleanCSS().minify('a{}/* '),
+    'topic': function () {
+      return new CleanCSS().minify('a{}/* ');
+    },
     'should output correct content': function (error, minified) {
       assert.isEmpty(minified.styles);
     },
@@ -195,13 +217,17 @@ vows.describe('module tests').addBatch({
     }
   },
   'no errors': {
-    'topic': new CleanCSS().minify('a{color:red}'),
+    'topic': function () {
+      return new CleanCSS().minify('a{color:red}');
+    },
     'if no reasons given': function (error, minified) {
       assert.isEmpty(minified.errors);
     }
   },
   'errors': {
-    'topic': new CleanCSS(),
+    'topic': function () {
+      return new CleanCSS();
+    },
     'if both root and output used reasons given': function(minifier) {
       assert.doesNotThrow(function () {
         minifier.minify('@import url(/some/fake/file);', function (errors) {
@@ -213,7 +239,9 @@ vows.describe('module tests').addBatch({
     }
   },
   'errors when re-running minification': {
-    'topic': new CleanCSS(),
+    'topic': function () {
+      return new CleanCSS();
+    },
     'if both root and output used reasons given': function (minifier) {
       minifier.minify('@import url(/some/fake/file);');
       minifier.minify('@import url(/some/fake/file);', function(errors) {
@@ -290,46 +318,58 @@ vows.describe('module tests').addBatch({
   },
   'options': {
     'advanced': {
-      'topic': new CleanCSS({ advanced: true }).minify('a{color:red}a{color:#fff}'),
+      'topic': function () {
+        return new CleanCSS({ advanced: true }).minify('a{color:red}a{color:#fff}');
+      },
       'gets right output': function (minified) {
         assert.equal(minified.styles, 'a{color:#fff}');
       }
     },
     'aggressive merging': {
-      'topic': new CleanCSS({ aggressiveMerging: true }).minify('a{display:block;color:red;display:inline-block}'),
+      'topic': function () {
+        return new CleanCSS({ aggressiveMerging: true }).minify('a{display:block;color:red;display:inline-block}');
+      },
       'gets right output': function (minified) {
         assert.equal(minified.styles, 'a{color:red;display:inline-block}');
       }
     },
     'process import': {
-      'topic': new CleanCSS({ processImport: true }).minify('@import url(/test/fixtures/partials/one.css);'),
+      'topic': function () {
+        return new CleanCSS({ processImport: true }).minify('@import url(/test/fixtures/partials/one.css);');
+      },
       'gets right output': function (minified) {
         assert.equal(minified.styles, '.one{color:red}');
       }
     },
     'rebase': {
-      'topic': new CleanCSS({ rebase: true, relativeTo: path.join(process.cwd(), 'test', 'fixtures'), root: process.cwd() }).minify('div{background:url(./dummy.png)}'),
+      'topic': function () {
+        return new CleanCSS({ rebase: true, relativeTo: path.join(process.cwd(), 'test', 'fixtures'), root: process.cwd() }).minify('div{background:url(./dummy.png)}');
+      },
       'gets right output': function (minified) {
         assert.include(minified.styles, 'url(/test/fixtures/dummy.png)');
       }
     },
-    'restructuring': {
-      'on': {
-        'topic': new CleanCSS({ restructuring: true }).minify('div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}'),
-        'gets right output': function (minified) {
-          assert.equal(minified.styles, '.two,div{margin-top:0}.one{margin:0}.two{display:block}');
-        }
+    'restructuring - on': {
+      'topic': function () {
+        new CleanCSS({ restructuring: true }).minify('div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}', this.callback);
       },
-      'off': {
-        'topic': new CleanCSS({ restructuring: false }).minify('div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}'),
-        'gets right output': function (minified) {
-          assert.equal(minified.styles, 'div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}');
-        }
+      'gets right output': function (minified) {
+        assert.equal(minified.styles, '.two,div{margin-top:0}.one{margin:0}.two{display:block}');
+      }
+    },
+    'restructuring - off': {
+      'topic': function () {
+        return new CleanCSS({ restructuring: false }).minify('div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}');
+      },
+      'gets right output': function (minified) {
+        assert.equal(minified.styles, 'div{margin-top:0}.one{margin:0}.two{display:block;margin-top:0}');
       }
     }
   },
   'source map': {
-    'topic': new CleanCSS({ sourceMap: true }).minify('/*! a */div[data-id=" abc "] { color:red; }'),
+    'topic': function () {
+      return new CleanCSS({ sourceMap: true }).minify('/*! a */div[data-id=" abc "] { color:red; }');
+    },
     'should minify correctly': function (minified) {
       assert.equal(minified.styles, '/*! a */div[data-id=" abc "]{color:red}');
     },
@@ -340,13 +380,17 @@ vows.describe('module tests').addBatch({
   'accepts a list of source files as array': {
     'rebased to the current dir': {
       'relative': {
-        'topic': new CleanCSS().minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']),
+        'topic': function () {
+          return new CleanCSS().minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(test/fixtures/partials/extra/down.gif)}');
         }
       },
       'absolute': {
-        'topic': new CleanCSS({ relativeTo: process.cwd() }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]),
+        'topic': function () {
+          return new CleanCSS({ relativeTo: process.cwd() }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(test/fixtures/partials/extra/down.gif)}');
         }
@@ -354,13 +398,17 @@ vows.describe('module tests').addBatch({
     },
     'rebased to a path': {
       'relative': {
-        'topic': new CleanCSS({ relativeTo: 'test/fixtures' }).minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']),
+        'topic': function () {
+          return new CleanCSS({ relativeTo: 'test/fixtures' }).minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(partials/extra/down.gif)}');
         }
       },
       'absolute': {
-        'topic': new CleanCSS({ relativeTo: 'test/fixtures' }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]),
+        'topic': function () {
+          return new CleanCSS({ relativeTo: 'test/fixtures' }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(partials/extra/down.gif)}');
         }
@@ -368,35 +416,47 @@ vows.describe('module tests').addBatch({
     },
     'rebased to root': {
       'relative': {
-        'topic': new CleanCSS({ root: 'test/fixtures', relativeTo: 'test/fixtures' }).minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']),
+        'topic': function () {
+          return new CleanCSS({ root: 'test/fixtures', relativeTo: 'test/fixtures' }).minify(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(/partials/extra/down.gif)}');
         }
       },
       'absolute': {
-        'topic': new CleanCSS({ root: 'test/fixtures', relativeTo: 'test/fixtures' }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]),
+        'topic': function () {
+          return new CleanCSS({ root: 'test/fixtures', relativeTo: 'test/fixtures' }).minify([path.resolve('test/fixtures/partials/one.css'), path.resolve('test/fixtures/partials/three.css')]);
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(/partials/extra/down.gif)}');
         }
       }
     },
-    'with imports off': {
-      'topic': new CleanCSS({ processImport: false }).minify(['./test/fixtures/partials/two.css']),
-      'should give right output': function (minified) {
-        assert.equal(minified.styles, '@import url(one.css);@import url(extra/three.css);@import url(./extra/four.css);.two{color:#fff}');
+    'with imports': {
+      'off': {
+        'topic': function () {
+          return new CleanCSS({ processImport: false }).minify(['./test/fixtures/partials/two.css']);
+        },
+        'should give right output': function (minified) {
+          assert.equal(minified.styles, '@import url(one.css);@import url(extra/three.css);@import url(./extra/four.css);.two{color:#fff}');
+        }
       }
     }
   },
   'accepts a list of source files as hash': {
     'rebased to the current dir': {
       'with relative paths': {
-        'topic': new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'])),
+        'topic': function () {
+          return new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(test/fixtures/partials/extra/down.gif)}');
         }
       },
       'with absolute paths': {
-        'topic': new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true)),
+        'topic': function () {
+          return new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(test/fixtures/partials/extra/down.gif)}');
         }
@@ -404,13 +464,17 @@ vows.describe('module tests').addBatch({
     },
     'rebased to a relative path': {
       'with relative paths': {
-        'topic': new CleanCSS({ target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'])),
+        'topic': function () {
+          return new CleanCSS({ target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(partials/extra/down.gif)}');
         }
       },
       'with absolute paths': {
-        'topic': new CleanCSS({ target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true)),
+        'topic': function () {
+          return new CleanCSS({ target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(partials/extra/down.gif)}');
         }
@@ -418,13 +482,17 @@ vows.describe('module tests').addBatch({
     },
     'rebased to an absolute root': {
       'with relative paths': {
-        'topic': new CleanCSS({ root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'])),
+        'topic': function () {
+          return new CleanCSS({ root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(/partials/extra/down.gif)}');
         }
       },
       'with absolute paths': {
-        'topic': new CleanCSS({ root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true)),
+        'topic': function () {
+          return new CleanCSS({ root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(/partials/extra/down.gif)}');
         }
@@ -432,45 +500,59 @@ vows.describe('module tests').addBatch({
     },
     'with rebasing off': {
       'with relative paths': {
-        'topic': new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'])),
+        'topic': function () {
+          return new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(extra/down.gif)}');
         }
       },
       'with absolute paths': {
-        'topic': new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true)),
+        'topic': function () {
+          return new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/one.css', 'test/fixtures/partials/three.css'], true));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '.one{color:red}.three{background-image:url(extra/down.gif)}');
         }
       }
     },
     'with other imports': {
-      'topic': new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/two.css'])),
+      'topic': function () {
+        return new CleanCSS().minify(sourcesAsHash(['test/fixtures/partials/two.css']));
+      },
       'should give right output': function (minified) {
         assert.equal(minified.styles, '.one{color:red}.three{color:#0f0}.four{color:#00f}.two{color:#fff}');
       }
     },
     'with other imports and rebasing off': {
-      'topic': new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/two.css'])),
+      'topic': function () {
+        return new CleanCSS({ rebase: false }).minify(sourcesAsHash(['test/fixtures/partials/two.css']));
+      },
       'should give right output': function (minified) {
         assert.equal(minified.styles, '.one{color:red}.three{color:#0f0}.four{color:#00f}.two{color:#fff}');
       }
     },
     'with other imports and processing imports off': {
       'relative to current path': {
-        'topic': new CleanCSS({ processImport: false }).minify(sourcesAsHash(['test/fixtures/partials/two.css'])),
+        'topic': function () {
+          return new CleanCSS({ processImport: false }).minify(sourcesAsHash(['test/fixtures/partials/two.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '@import url(test/fixtures/partials/one.css);@import url(test/fixtures/partials/extra/three.css);@import url(test/fixtures/partials/extra/four.css);.two{color:#fff}');
         }
       },
       'relative to different path': {
-        'topic': new CleanCSS({ processImport: false, target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/two.css'])),
+        'topic': function () {
+          return new CleanCSS({ processImport: false, target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/two.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '@import url(partials/one.css);@import url(partials/extra/three.css);@import url(partials/extra/four.css);.two{color:#fff}');
         }
       },
       'absolute': {
-        'topic': new CleanCSS({ processImport: false, root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/two.css'])),
+        'topic': function () {
+          return new CleanCSS({ processImport: false, root: 'test/fixtures', target: 'test/fixtures' }).minify(sourcesAsHash(['test/fixtures/partials/two.css']));
+        },
         'should give right output': function (minified) {
           assert.equal(minified.styles, '@import url(/partials/one.css);@import url(/partials/extra/three.css);@import url(/partials/extra/four.css);.two{color:#fff}');
         }
index 0e033cc..6bea37c 100644 (file)
@@ -18,13 +18,17 @@ var port = 24682;
 vows.describe('source-map')
   .addBatch({
     'vendor prefix with comments': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('html{font-family:sans-serif;/* 1 */-ms-text-size-adjust:100%;/* 2 */-webkit-text-size-adjust:100%/* 3 */}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('html{font-family:sans-serif;/* 1 */-ms-text-size-adjust:100%;/* 2 */-webkit-text-size-adjust:100%/* 3 */}');
+      },
       'gets right output': function (minified) {
         assert.equal(minified.styles, 'html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}');
       }
     },
     'background gradient': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('a{background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 0, rgba(0, 0, 0, 0.1))}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('a{background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 0, rgba(0, 0, 0, 0.1))}');
+      },
       'gets right output': function (minified) {
         assert.equal(minified.styles, 'a{background:linear-gradient(to bottom,rgba(0,0,0,.1) 0,rgba(0,0,0,.1))}');
       }
@@ -32,7 +36,9 @@ vows.describe('source-map')
   })
   .addBatch({
     'module #1': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('/*! a */div[data-id=" abc "] { color:red; }'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('/*! a */div[data-id=" abc "] { color:red; }');
+      },
       'should have 2 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -60,7 +66,9 @@ vows.describe('source-map')
       }
     },
     'module #2': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('@media screen {\n@font-face \n{ \nfont-family: test; } }'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('@media screen {\n@font-face \n{ \nfont-family: test; } }');
+      },
       'should have 3 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 3);
       },
@@ -99,7 +107,9 @@ vows.describe('source-map')
       }
     },
     'with keepBreaks': {
-      'topic': new CleanCSS({ sourceMap: true, keepBreaks: true }).minify('@media screen { a{color:red} p {color:blue} }div{color:pink}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true, keepBreaks: true }).minify('@media screen { a{color:red} p {color:blue} }div{color:pink}');
+      },
       'should have 7 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 7);
       },
@@ -182,7 +192,9 @@ vows.describe('source-map')
       }
     },
     'shorthands': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('a{background:url(image.png);background-color:red}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('a{background:url(image.png);background-color:red}');
+      },
       'should have 3 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 3);
       },
@@ -221,7 +233,9 @@ vows.describe('source-map')
       }
     },
     'keyframes': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('@-webkit-keyframes frames {\n  0% {\n    border: 1px;\n  }\n  100% {\n    border: 3px;\n  }\n}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('@-webkit-keyframes frames {\n  0% {\n    border: 1px;\n  }\n  100% {\n    border: 3px;\n  }\n}');
+      },
       'should have 5 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 5);
       },
@@ -282,7 +296,9 @@ vows.describe('source-map')
       }
     },
     'double comments': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('/* COMMENT 1 */\n/* COMMENT 2 */\ndiv{color:red}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('/* COMMENT 1 */\n/* COMMENT 2 */\ndiv{color:red}');
+      },
       'should have 2 mappings': function(minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -312,7 +328,9 @@ vows.describe('source-map')
   })
   .addBatch({
     'input map as string': {
-      'topic': new CleanCSS({ sourceMap: inputMap }).minify('div > a {\n  color: red;\n}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: inputMap }).minify('div > a {\n  color: red;\n}');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -340,7 +358,9 @@ vows.describe('source-map')
       }
     },
     'input map from source': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('div > a {\n  color: red;\n}/*# sourceMappingURL=' + inputMapPath + ' */'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('div > a {\n  color: red;\n}/*# sourceMappingURL=' + inputMapPath + ' */');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -368,7 +388,9 @@ vows.describe('source-map')
       }
     },
     'input map from source with root': {
-      'topic': new CleanCSS({ sourceMap: true, relativeTo: path.dirname(inputMapPath) }).minify('div > a {\n  color: red;\n}/*# sourceMappingURL=styles.css.map */'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true, relativeTo: path.dirname(inputMapPath) }).minify('div > a {\n  color: red;\n}/*# sourceMappingURL=styles.css.map */');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -396,7 +418,9 @@ vows.describe('source-map')
       }
     },
     'complex input map': {
-      'topic': new CleanCSS({ sourceMap: true, root: path.dirname(inputMapPath) }).minify('@import url(import.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true, root: path.dirname(inputMapPath) }).minify('@import url(import.css);');
+      },
       'should have 4 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 4);
       },
@@ -446,13 +470,17 @@ vows.describe('source-map')
       }
     },
     'complex input map referenced by path': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/import.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/import.css);');
+      },
       'should have 4 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 4);
       }
     },
     'complex but partial input map referenced by path': {
-      'topic': new CleanCSS({ sourceMap: true, target: process.cwd() }).minify('@import url(test/fixtures/source-maps/no-map-import.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true, target: process.cwd() }).minify('@import url(test/fixtures/source-maps/no-map-import.css);');
+      },
       'should have 4 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 4);
       },
@@ -470,7 +498,9 @@ vows.describe('source-map')
       }
     },
     'complex input map with an existing file as target': {
-      'topic': new CleanCSS({ sourceMap: true, target: path.join(process.cwd(), 'test', 'fixtures', 'source-maps', 'styles.css') }).minify('@import url(test/fixtures/source-maps/styles.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true, target: path.join(process.cwd(), 'test', 'fixtures', 'source-maps', 'styles.css') }).minify('@import url(test/fixtures/source-maps/styles.css);');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -482,7 +512,9 @@ vows.describe('source-map')
       }
     },
     'nested once': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/nested/once.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/nested/once.css);');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -510,7 +542,9 @@ vows.describe('source-map')
       }
     },
     'nested twice': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/nested/twice.css);'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('@import url(test/fixtures/source-maps/nested/twice.css);');
+      },
       'should have 2 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 2);
       },
@@ -538,7 +572,9 @@ vows.describe('source-map')
       }
     },
     'input source map with missing mutliselector input': {
-      'topic': new CleanCSS({ sourceMap: '{"version":3,"sources":["source.css"],"names":[],"mappings":"AAAA;;;;IAII,YAAW;EACd"}' }).minify('a,\na:hover,\na:visited\n{\n    color: red;\n}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: '{"version":3,"sources":["source.css"],"names":[],"mappings":"AAAA;;;;IAII,YAAW;EACd"}' }).minify('a,\na:hover,\na:visited\n{\n    color: red;\n}');
+      },
       'should have 4 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 4);
       },
@@ -588,7 +624,9 @@ vows.describe('source-map')
       }
     },
     'input source map with missing mutliselector sortable input': {
-      'topic': new CleanCSS({ sourceMap: '{"version":3,"sources":["source.css"],"names":[],"mappings":"AAAA;;;;IAII,YAAW;EACd"}' }).minify('a.button:link,\na.button:visited,\na.button:hover\n{\n    color: red;\n}'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: '{"version":3,"sources":["source.css"],"names":[],"mappings":"AAAA;;;;IAII,YAAW;EACd"}' }).minify('a.button:link,\na.button:visited,\na.button:hover\n{\n    color: red;\n}');
+      },
       'should have 4 mappings': function (minified) {
         assert.lengthOf(minified.sourceMap._mappings._array, 4);
       },
@@ -776,19 +814,25 @@ vows.describe('source-map')
   })
   .addBatch({
     'important comment after a property': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!comment*/ }'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!comment*/ }');
+      },
       'has right output': function (errors, minified) {
         assert.equal(minified.styles, 'div{color:red!important/*!comment*/}');
       }
     },
     'important comment between properties': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!comment*/; display: block }'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!comment*/; display: block }');
+      },
       'has right output': function (errors, minified) {
         assert.equal(minified.styles, 'div{color:red!important;/*!comment*/display:block}');
       }
     },
     'important comments after a property': {
-      'topic': new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!1*//*!2*/ }'),
+      'topic': function () {
+        return new CleanCSS({ sourceMap: true }).minify('div { color: #f00 !important; /*!1*//*!2*/ }');
+      },
       'has right output': function (errors, minified) {
         assert.equal(minified.styles, 'div{color:red!important/*!1*//*!2*/}');
       }
@@ -797,20 +841,22 @@ vows.describe('source-map')
   .addBatch({
     'multiple source maps': {
       'relative to local': {
-        'topic': new CleanCSS({ sourceMap: true }).minify({
-          'test/fixtures/source-maps/some.css': {
-            styles: 'div {\n  color: red;\n}',
-            sourceMap: '{"version":3,"sources":["some.less"],"names":[],"mappings":"AAAA;EACE,UAAA","file":"some.css"}'
-          },
-          'test/fixtures/source-maps/styles.css': {
-            styles: 'div > a {\n  color: blue;\n}',
-            sourceMap: '{"version":3,"sources":["styles.less"],"names":[],"mappings":"AAAA,GAAI;EACF,WAAA","file":"styles.css"}'
-          },
-          'test/fixtures/source-maps/nested/once.css': {
-            styles: 'section > div a {\n  color: red;\n}',
-            sourceMap: '{"version":3,"sources":["once.less"],"names":[],"mappings":"AAAA,OACE,MAAM;EACJ,UAAA","file":"once.css"}'
-          }
-        }),
+        'topic': function () {
+          return new CleanCSS({ sourceMap: true }).minify({
+            'test/fixtures/source-maps/some.css': {
+              styles: 'div {\n  color: red;\n}',
+              sourceMap: '{"version":3,"sources":["some.less"],"names":[],"mappings":"AAAA;EACE,UAAA","file":"some.css"}'
+            },
+            'test/fixtures/source-maps/styles.css': {
+              styles: 'div > a {\n  color: blue;\n}',
+              sourceMap: '{"version":3,"sources":["styles.less"],"names":[],"mappings":"AAAA,GAAI;EACF,WAAA","file":"styles.css"}'
+            },
+            'test/fixtures/source-maps/nested/once.css': {
+              styles: 'section > div a {\n  color: red;\n}',
+              sourceMap: '{"version":3,"sources":["once.less"],"names":[],"mappings":"AAAA,OACE,MAAM;EACJ,UAAA","file":"once.css"}'
+            }
+          });
+        },
         'has right output': function (errors, minified) {
           assert.equal(minified.styles, 'div,section>div a{color:red}div>a{color:#00f}');
         },
@@ -876,20 +922,22 @@ vows.describe('source-map')
     },
     'relative to path': {
       'complex but partial input map referenced by path': {
-        'topic': new CleanCSS({ sourceMap: true, target: process.cwd() }).minify({
-          'test/fixtures/source-maps/some.css': {
-            styles: 'div {\n  color: red;\n}',
-            sourceMap: '{"version":3,"sources":["some.less"],"names":[],"mappings":"AAAA;EACE,UAAA","file":"some.css"}'
-          },
-          'test/fixtures/source-maps/styles.css': {
-            styles: 'div > a {\n  color: blue;\n}',
-            sourceMap: '{"version":3,"sources":["styles.less"],"names":[],"mappings":"AAAA,GAAI;EACF,WAAA","file":"styles.css"}'
-          },
-          'test/fixtures/source-maps/nested/once.css': {
-            styles: 'section > div a {\n  color: red;\n}',
-            sourceMap: '{"version":3,"sources":["once.less"],"names":[],"mappings":"AAAA,OACE,MAAM;EACJ,UAAA","file":"once.css"}'
-          }
-        }),
+        'topic': function () {
+          return new CleanCSS({ sourceMap: true, target: process.cwd() }).minify({
+            'test/fixtures/source-maps/some.css': {
+              styles: 'div {\n  color: red;\n}',
+              sourceMap: '{"version":3,"sources":["some.less"],"names":[],"mappings":"AAAA;EACE,UAAA","file":"some.css"}'
+            },
+            'test/fixtures/source-maps/styles.css': {
+              styles: 'div > a {\n  color: blue;\n}',
+              sourceMap: '{"version":3,"sources":["styles.less"],"names":[],"mappings":"AAAA,GAAI;EACF,WAAA","file":"styles.css"}'
+            },
+            'test/fixtures/source-maps/nested/once.css': {
+              styles: 'section > div a {\n  color: red;\n}',
+              sourceMap: '{"version":3,"sources":["once.less"],"names":[],"mappings":"AAAA,OACE,MAAM;EACJ,UAAA","file":"once.css"}'
+            }
+          });
+        },
         'should have 5 mappings': function (minified) {
           assert.lengthOf(minified.sourceMap._mappings._array, 5);
         },
@@ -912,7 +960,9 @@ vows.describe('source-map')
   .addBatch({
     'advanced optimizations': {
       'new property in smart sort': {
-        'topic': new CleanCSS({ sourceMap: true }).minify('a{color:#000}div{color:red}.one{display:block}.two{display:inline;color:red}'),
+        'topic': function () {
+          return new CleanCSS({ sourceMap: true }).minify('a{color:#000}div{color:red}.one{display:block}.two{display:inline;color:red}');
+        },
         'should have 5 mappings': function (minified) {
           assert.lengthOf(minified.sourceMap._mappings._array, 9);
         },
index bcdf592..9a27ecd 100644 (file)
@@ -5,7 +5,9 @@ var EscapeStore = require('../../lib/text/escape-store');
 vows.describe(EscapeStore)
   .addBatch({
     'no metadata': {
-      topic: new EscapeStore('TEST'),
+      topic: function () {
+        return new EscapeStore('TEST');
+      },
       store: function (escapeStore) {
         var placeholder = escapeStore.store('data');
         assert.equal(placeholder, '__ESCAPED_TEST_CLEAN_CSS0__');
@@ -22,7 +24,9 @@ vows.describe(EscapeStore)
       }
     },
     'with metadata': {
-      topic: new EscapeStore('TEST'),
+      topic: function () {
+        return new EscapeStore('TEST');
+      },
       store: function (escapeStore) {
         var placeholder = escapeStore.store('data', ['brown', 'fox', 'jumped', 'over']);
         assert.equal(placeholder, '__ESCAPED_TEST_CLEAN_CSS0(brown,fox,jumped,over)__');
@@ -39,7 +43,9 @@ vows.describe(EscapeStore)
       }
     },
     'same data with different metadata': {
-      topic: new EscapeStore('TEST'),
+      topic: function () {
+        return new EscapeStore('TEST');
+      },
       'store first': function (escapeStore) {
         escapeStore.store('data1', [0, 1, 2]);
         var placeholder = escapeStore.store('data1', [1, 2, 3]);
index 1203e41..38966bb 100644 (file)
@@ -5,7 +5,9 @@ var Chunker = require('../../lib/utils/chunker');
 vows.describe(Chunker)
   .addBatch({
     'empty string': {
-      topic: new Chunker('', '', 128),
+      'topic': function () {
+        return new Chunker('', '', 128);
+      },
       'is empty': function (chunker) {
         assert.isTrue(chunker.isEmpty());
       },
@@ -14,7 +16,9 @@ vows.describe(Chunker)
       }
     },
     'css': {
-      topic: new Chunker('a{color:red}p{}', '}', 3),
+      'topic': function () {
+        return new Chunker('a{color:red}p{}', '}', 3);
+      },
       'is not empty': function (chunker) {
         assert.isFalse(chunker.isEmpty());
       },
@@ -26,7 +30,9 @@ vows.describe(Chunker)
       }
     },
     'comments': {
-      topic: new Chunker('/* one */ /* two */', '*/', 3),
+      'topic': function () {
+        return new Chunker('/* one */ /* two */', '*/', 3);
+      },
       'is not empty': function (chunker) {
         assert.isFalse(chunker.isEmpty());
       },
index 5d32c40..b0c43bd 100644 (file)
@@ -5,7 +5,9 @@ var Compatibility = require('../../lib/utils/compatibility');
 vows.describe(Compatibility)
   .addBatch({
     'as an empty hash': {
-      topic: new Compatibility({}).toOptions(),
+      'topic': function () {
+        return new Compatibility({}).toOptions();
+      },
       'gets default options': function(options) {
         assert.isFalse(options.properties.iePrefixHack);
         assert.isFalse(options.properties.ieSuffixHack);
@@ -20,13 +22,17 @@ vows.describe(Compatibility)
       }
     },
     'not given': {
-      topic: new Compatibility().toOptions(),
+      'topic': function () {
+        return new Compatibility().toOptions();
+      },
       'gets default options': function(options) {
         assert.deepEqual(options, new Compatibility({}).toOptions());
       }
     },
     'as a populated hash': {
-      topic: new Compatibility({ units: { rem: false }, properties: { prefix: true } }).toOptions(),
+      'topic': function () {
+        return new Compatibility({ units: { rem: false }, properties: { prefix: true } }).toOptions();
+      },
       'gets merged options': function(options) {
         assert.isFalse(options.properties.iePrefixHack);
         assert.isFalse(options.properties.ieSuffixHack);
@@ -44,7 +50,9 @@ vows.describe(Compatibility)
   })
   .addBatch({
     'as an ie8 template': {
-      topic: new Compatibility('ie8').toOptions(),
+      'topic': function () {
+        return new Compatibility('ie8').toOptions();
+      },
       'gets template options': function(options) {
         assert.isTrue(options.properties.iePrefixHack);
         assert.isTrue(options.properties.ieSuffixHack);
@@ -60,7 +68,9 @@ vows.describe(Compatibility)
       }
     },
     'as an ie7 template': {
-      topic: new Compatibility('ie7').toOptions(),
+      'topic': function () {
+        return new Compatibility('ie7').toOptions();
+      },
       'gets template options': function(options) {
         assert.isTrue(options.properties.iePrefixHack);
         assert.isTrue(options.properties.ieSuffixHack);
@@ -76,7 +86,9 @@ vows.describe(Compatibility)
       }
     },
     'as an unknown template': {
-      topic: new Compatibility('').toOptions(),
+      'topic': function () {
+        return new Compatibility('').toOptions();
+      },
       'gets default options': function(options) {
         assert.deepEqual(options, new Compatibility({}).toOptions());
       }
@@ -84,7 +96,9 @@ vows.describe(Compatibility)
   })
   .addBatch({
     'as a complex string value with group': {
-      topic: new Compatibility('ie8,-properties.iePrefixHack,+colors.opacity').toOptions(),
+      'topic': function () {
+        return new Compatibility('ie8,-properties.iePrefixHack,+colors.opacity').toOptions();
+      },
       'gets calculated options': function(options) {
         assert.isFalse(options.properties.iePrefixHack);
         assert.isTrue(options.properties.ieSuffixHack);
@@ -98,7 +112,9 @@ vows.describe(Compatibility)
       }
     },
     'as a single string value without group': {
-      topic: new Compatibility('+properties.iePrefixHack').toOptions(),
+      'topic': function () {
+        return new Compatibility('+properties.iePrefixHack').toOptions();
+      },
       'gets calculated options': function(options) {
         assert.isTrue(options.properties.iePrefixHack);
         assert.isFalse(options.properties.ieSuffixHack);
@@ -112,7 +128,9 @@ vows.describe(Compatibility)
       }
     },
     'as a complex string value without group': {
-      topic: new Compatibility('+properties.iePrefixHack,-units.rem').toOptions(),
+      'topic': function () {
+        return new Compatibility('+properties.iePrefixHack,-units.rem').toOptions();
+      },
       'gets calculated options': function(options) {
         assert.isTrue(options.properties.iePrefixHack);
         assert.isFalse(options.properties.ieSuffixHack);