Bug 1265584 - Add a test for wpttest metadata, r=maja_zf
MozReview-Commit-ID: Jme9GND8ihS
--- a/testing/web-platform/tests/tools/wptrunner/wptrunner/tests/test_chunker.py
+++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/tests/test_chunker.py
@@ -1,37 +1,48 @@
import unittest
import sys
from os.path import join, dirname
from mozlog import structured
+import mock
import pytest
+sys.path.insert(0, join(dirname(__file__), "..", "..", ".."))
sys.path.insert(0, join(dirname(__file__), "..", ".."))
from wptrunner.testloader import EqualTimeChunker
+from manifest.sourcefile import SourceFile
structured.set_default_logger(structured.structuredlog.StructuredLogger("TestChunker"))
+
+testharness_test = """<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>"""
+
+
class MockTest(object):
default_timeout = 10
- def __init__(self, id, timeout=10):
+ def __init__(self, id, path, timeout=10, contents=testharness_test):
self.id = id
+ self.url = "/" + path
self.item_type = "testharness"
self.timeout = timeout
+ self.source_file = SourceFile("/", path, "/", contents=contents)
def make_mock_manifest(*items):
rv = []
for test_type, dir_path, num_tests in items:
for i in range(num_tests):
+ filename = "/%i.html" % i
rv.append((test_type,
- dir_path + "/%i.test" % i,
- set([MockTest(i)])))
+ dir_path + filename,
+ set([MockTest("%i.html" % i, dir_path + filename)])))
return rv
class TestEqualTimeChunker(unittest.TestCase):
def test_include_all(self):
tests = make_mock_manifest(("test", "a", 10), ("test", "a/b", 10),
("test", "c", 10))
--- a/testing/web-platform/tests/tools/wptrunner/wptrunner/tests/test_products.py
+++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/tests/test_products.py
@@ -7,17 +7,17 @@ import mock
import pytest
from .base import all_products, active_products
sys.path.insert(0, join(dirname(__file__), "..", "..", "..", "..")) # repo root
from tools import localpaths
-import sslutils
+from wptserve import sslutils
from wptrunner import environment
from wptrunner import products
test_paths = {"/": {"tests_path": join(dirname(__file__), "..", "..", "..", "..")}} # repo root
environment.do_delayed_imports(None, test_paths)
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/tests/test_wpttest.py
@@ -0,0 +1,50 @@
+import os
+import sys
+from io import BytesIO
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
+
+from wptrunner import manifestexpected, wpttest
+from .test_chunker import make_mock_manifest
+
+dir_ini_0 = """\
+prefs: [a:b]
+"""
+
+dir_ini_1 = """\
+prefs: [@Reset, b:c]
+max-asserts: 2
+min-asserts: 1
+tags: [b, c]
+"""
+
+test_0 = """\
+[0.html]
+ prefs: [c:d]
+ max-asserts: 3
+ tags: [a, @Reset]
+"""
+
+
+def test_metadata_inherit():
+ tests = make_mock_manifest(("test", "a", 10), ("test", "a/b", 10),
+ ("test", "c", 10))
+
+ inherit_metadata = [
+ manifestexpected.static.compile(
+ BytesIO(item),
+ {},
+ data_cls_getter=lambda x,y: manifestexpected.DirectoryManifest)
+ for item in [dir_ini_0, dir_ini_1]]
+ test_metadata = manifestexpected.static.compile(BytesIO(test_0),
+ {},
+ data_cls_getter=manifestexpected.data_cls_getter,
+ test_path="a",
+ url_base="")
+
+ test = tests[0][2].pop()
+ test_obj = wpttest.from_manifest(test, inherit_metadata, test_metadata.get_test(test.id))
+ assert test_obj.max_assertion_count == 3
+ assert test_obj.min_assertion_count == 1
+ assert test_obj.prefs == {"b": "c", "c": "d"}
+ assert test_obj.tags == {"a", "dir:a"}