diff options
Diffstat (limited to 'testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py')
-rw-r--r-- | testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py b/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py new file mode 100644 index 000000000..da51406c7 --- /dev/null +++ b/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py @@ -0,0 +1,251 @@ +from ..sourcefile import SourceFile + +def create(filename, contents=b""): + assert isinstance(contents, bytes) + return SourceFile("/", filename, "/", contents=contents) + + +def items(s): + return [ + (item.item_type, item.url) + for item in s.manifest_items() + ] + + +def test_name_is_non_test(): + non_tests = [ + ".gitignore", + ".travis.yml", + "MANIFEST.json", + "tools/test.html", + "resources/test.html", + "common/test.html", + "conformance-checkers/test.html", + ] + + for rel_path in non_tests: + s = create(rel_path) + assert s.name_is_non_test + + assert not s.content_is_testharness + + assert items(s) == [] + + +def test_name_is_manual(): + manual_tests = [ + "html/test-manual.html", + "html/test-manual.xhtml", + "html/test-manual.https.html", + "html/test-manual.https.xhtml" + ] + + for rel_path in manual_tests: + s = create(rel_path) + assert not s.name_is_non_test + assert s.name_is_manual + + assert not s.content_is_testharness + + assert items(s) == [("manual", "/" + rel_path)] + + +def test_worker(): + s = create("html/test.worker.js") + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert s.name_is_worker + assert not s.name_is_reference + + assert not s.content_is_testharness + + assert items(s) == [("testharness", "/html/test.worker")] + +def test_worker_long_timeout(): + s = create("html/test.worker.js", + contents="""// <meta> timeout=long +importScripts('/resources/testharnes.js') +test()""") + + manifest_items = s.manifest_items() + assert len(manifest_items) == 1 + assert manifest_items[0].timeout == "long" + + +def test_multi_global(): + s = create("html/test.any.js") + assert not s.name_is_non_test + assert not s.name_is_manual + assert s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert not s.content_is_testharness + + assert items(s) == [ + ("testharness", "/html/test.any.html"), + ("testharness", "/html/test.any.worker"), + ] + + +def test_testharness(): + content = b"<script src=/resources/testharness.js></script>" + + for ext in ["htm", "html"]: + filename = "html/test." + ext + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert s.content_is_testharness + + assert items(s) == [("testharness", "/" + filename)] + + +def test_relative_testharness(): + content = b"<script src=../resources/testharness.js></script>" + + for ext in ["htm", "html"]: + filename = "html/test." + ext + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert not s.content_is_testharness + + assert items(s) == [] + + +def test_testharness_xhtml(): + content = b""" +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body/> +</html> +""" + + for ext in ["xhtml", "xht", "xml"]: + filename = "html/test." + ext + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert s.content_is_testharness + + assert items(s) == [("testharness", "/" + filename)] + + +def test_relative_testharness_xhtml(): + content = b""" +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<script src="../resources/testharness.js"></script> +<script src="../resources/testharnessreport.js"></script> +</head> +<body/> +</html> +""" + + for ext in ["xhtml", "xht", "xml"]: + filename = "html/test." + ext + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert not s.content_is_testharness + + assert items(s) == [] + + +def test_testharness_svg(): + content = b"""\ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + version="1.1" + width="100%" height="100%" viewBox="0 0 400 400"> +<title>Null test</title> +<h:script src="/resources/testharness.js"/> +<h:script src="/resources/testharnessreport.js"/> +</svg> +""" + + filename = "html/test.svg" + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert s.root + assert s.content_is_testharness + + assert items(s) == [("testharness", "/" + filename)] + + +def test_relative_testharness_svg(): + content = b"""\ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + version="1.1" + width="100%" height="100%" viewBox="0 0 400 400"> +<title>Null test</title> +<h:script src="../resources/testharness.js"/> +<h:script src="../resources/testharnessreport.js"/> +</svg> +""" + + filename = "html/test.svg" + s = create(filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert s.root + assert not s.content_is_testharness + + assert items(s) == [] + + +def test_testharness_ext(): + content = b"<script src=/resources/testharness.js></script>" + + for filename in ["test", "test.test"]: + s = create("html/" + filename, content) + + assert not s.name_is_non_test + assert not s.name_is_manual + assert not s.name_is_multi_global + assert not s.name_is_worker + assert not s.name_is_reference + + assert not s.root + assert not s.content_is_testharness + + assert items(s) == [] |