]> granicus.if.org Git - graphviz/commitdiff
move XML validation tests into a separate CI job
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 23 Mar 2022 00:42:32 +0000 (17:42 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 26 Mar 2022 14:29:56 +0000 (07:29 -0700)
This parametrized test was checking the validity of checked in Graphviz HTML
sources. There is no need to run this identical check in every single CI test
job nor on end users machines where they may have differing versions of
`xmllint` installed.

Gitlab: closes #2216

.gitlab-ci.yml
rtest/test_regression.py

index 6bdd32e69e49074abfd8fb6b11a2d5105a3a5dc5..2924059df56efcd2d5393463d66e7802a1860530 100644 (file)
@@ -1475,6 +1475,16 @@ lint_cmake_format:
   except:
     - tags
 
+lint_html:
+  image: "$CI_REGISTRY_IMAGE/ubuntu-21.10:$CI_COMMIT_SHA"
+  stage: test
+  needs:
+    - docker_build_ubuntu-21.10
+  script:
+    - git ls-files -z -- '**/*.html' | xargs -0 -- xmllint --nonet --noout --html --valid
+  except:
+    - tags
+
 lint_pylint:
   image: "$CI_REGISTRY_IMAGE/ubuntu-21.10:$CI_COMMIT_SHA"
   stage: test
index 50a390acb5a8471de222898d4d8ce05231f5fbf4..7c692cf099a9024dbe5d9a88ac594fdbe6f1f5c4 100644 (file)
@@ -820,30 +820,6 @@ def test_1902():
 # root directory of this checkout
 ROOT = Path(__file__).parent.parent.resolve()
 
-# find all HTML files
-html = set()
-for (prefix, _, files) in os.walk(ROOT):
-  for name in files:
-    if Path(name).suffix.lower() in (".htm", ".html"):
-      html.add(Path(prefix) / name)
-
-@pytest.mark.parametrize("src", html)
-@pytest.mark.skipif(shutil.which("xmllint") is None, reason="xmllint not found")
-def test_html(src: Path):
-  """
-  check that HTML files are valid and conforming
-  """
-
-  # validate the file
-  with subprocess.Popen(["xmllint", "--nonet", "--noout", "--html", "--valid",
-                         src], stderr=subprocess.PIPE,
-                        universal_newlines=True) as p:
-    _, stderr = p.communicate()
-
-    # expect it to succeed
-    assert p.returncode == 0
-  assert stderr == ""
-
 def test_1855():
   """
   SVGs should have a scale with sufficient precision