Bug 1345206 - Correct faulty assertions in test_page_parser. r=xidorn draft
authorJ. Ryan Stinnett <jryans@gmail.com>
Mon, 03 Apr 2017 18:17:09 -0500
changeset 558636 e42258641c845ceb8354add4217c4360464a5911
parent 558406 22df0c5cfbf8a2aa2822bf9c763e6c1c5a3f69de
child 558637 b8bd09a9df6cdc72a1e5a9f133e4421c29b2911b
child 559395 4b96f3c39b90e7c32e2ae924eb01d9457205fa15
push id52927
push userbmo:jryans@gmail.com
push dateFri, 07 Apr 2017 20:53:03 +0000
reviewersxidorn
bugs1345206
milestone55.0a1
Bug 1345206 - Correct faulty assertions in test_page_parser. r=xidorn test_page_parser.html tried to check parser behavior with a property that's not allowed in an @page context, such as `position: absolute`. However, the test forgot to apply the @page wrapper for this rule, so we weren't checking the intended case after all. MozReview-Commit-ID: LSd3aLwZAST
layout/style/test/test_page_parser.html
--- a/layout/style/test/test_page_parser.html
+++ b/layout/style/test/test_page_parser.html
@@ -16,17 +16,17 @@
 <style type="text/css" id="testbox"></style>
 <script class="testbody" type="text/javascript">
   function _(b) { return "@page { " + b + " }"; };
 
   var testset = [
     // CSS 2.1 only allows margin properties in the page rule.
 
     // Check a bad property.
-    { rule: "position: absolute;" },
+    { rule: _("position: absolute;") },
 
     // Check good properties with invalid units.
     { rule: _("margin: 2in; margin: 2vw;"), expected: {
       "margin-top": "2in",
       "margin-right": "2in",
       "margin-bottom": "2in",
       "margin-left": "2in"
     }},
@@ -47,61 +47,47 @@
     { rule: _("margin-bottom: 2in;"), expected: {"margin-bottom": "2in"}},
     { rule: _("margin-right: 2in;"), expected: {"margin-right": "2in"}}
   ];
 
   var display = document.getElementById("display");
   var sheet = document.styleSheets[1];
 
   for (var curTest = 0; curTest < testset.length; curTest++) {
-    try {
-      while(sheet.cssRules.length > 0)
-        sheet.deleteRule(0);
-      sheet.insertRule(testset[curTest].rule, 0);
-    } catch (e) {
-      ok(e.name == "SyntaxError"
-         && e instanceof DOMException
-         && e.code == DOMException.SYNTAX_ERR
-         && !('expected' in testset[curTest]),
-         testset[curTest].rule + " syntax error thrown", e);
+    while(sheet.cssRules.length > 0) {
+      sheet.deleteRule(0);
     }
+    sheet.insertRule(testset[curTest].rule, 0);
 
     try {
+      is(sheet.cssRules.length, 1,
+          testset[curTest].rule + " rule count");
+      is(sheet.cssRules[0].type, CSSRule.PAGE_RULE,
+          testset[curTest].rule + " rule type");
+
       if (testset[curTest].expected) {
-        is(sheet.cssRules.length, 1,
-           testset[curTest].rule + " rule count");
-           is(sheet.cssRules[0].type, CSSRule.PAGE_RULE,
-           testset[curTest].rule + " rule type");
-
         var expected = testset[curTest].expected;
         var s = sheet.cssRules[0].style;
         var n = 0;
 
         // everything is set that should be
         for (var name in expected) {
           is(s.getPropertyValue(name), expected[name],
              testset[curTest].rule + " (prop " + name + ")");
           n++;
         }
         // nothing else is set
-        is(s.length, n, testset[curTest].rule + "prop count");
+        is(s.length, n, testset[curTest].rule + " prop count");
         for (var i = 0; i < s.length; i++) {
           ok(s[i] in expected, testset[curTest].rule,
              "Unexpected item #" + i + ": " + s[i]);
         }
       } else {
-        if (sheet.cssRules.length == 0) {
-          is(sheet.cssRules.length, 0,
-             testset[curTest].rule + " rule count (0)");
-        } else {
-          is(sheet.cssRules.length, 1,
-             testset[curTest].rule + " rule count (1 non-page)");
-          isnot(sheet.cssRules[0].type, CSSRule.PAGE_RULE,
-                testset[curTest].rule + " rule type (1 non-page)");
-        }
+        is(Object.keys(sheet.cssRules[0].style).length, 0,
+            testset[curTest].rule + " rule has no properties");
       }
     } catch (e) {
       ok(false, testset[curTest].rule, "During test: " + e);
     }
   }
 </script>
 </body>
 </html>