]> granicus.if.org Git - graphviz/commitdiff
run_c: check return code of compiled program before returning
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 11 Jan 2022 01:05:58 +0000 (17:05 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 15 Jan 2022 20:57:25 +0000 (12:57 -0800)
Every call to `run_c` was immediately checking that the compiled program
succeeded. So by moving the check inside `run_c` itself we can write more
concise test cases.

rtest/gvtest.py
rtest/test_examples.py
rtest/test_itos.py
rtest/test_regression.py
rtest/test_sprint.py
rtest/test_vmalloc.py

index c6c699258a34de02575134142a0544d2ee1c7e08..383cb827553652b8c950a8a23b0fb8d1ee5a2c34 100644 (file)
@@ -4,6 +4,7 @@ import os
 from pathlib import Path
 import platform
 import subprocess
+import sys
 import sysconfig
 import tempfile
 from typing import List, Optional, Tuple, Union
@@ -94,7 +95,7 @@ def dot(T: str, source_file: Optional[Path] = None, source: Optional[str] = None
 
 def run_c(src: Path, args: List[str] = None, input: str = "",
           cflags: List[str] = None, link: List[str] = None
-          ) -> Tuple[int, str, str]:
+          ) -> Tuple[str, str]:
   """compile and run a C program"""
 
   if args is None:
@@ -120,4 +121,10 @@ def run_c(src: Path, args: List[str] = None, input: str = "",
     p = subprocess.run([exe] + args, input=input, stdout=subprocess.PIPE,
       stderr=subprocess.PIPE, universal_newlines=True)
 
-    return p.returncode, p.stdout, p.stderr
+    # check it succeeded
+    if p.returncode != 0:
+      sys.stdout.write(p.stdout)
+      sys.stderr.write(p.stderr)
+    p.check_returncode()
+
+    return p.stdout, p.stderr
index 5395d431aa7da0b9bfad183c7062b0c5d55a61af..ca91a002febe41214a41a1b0f894bc289809a60b 100644 (file)
@@ -40,13 +40,7 @@ def test_compile_example(src):
   else:
     cflags = None
 
-  ret, out, err = run_c(filepath, args, "graph {a -- b}", cflags=cflags, link=libs)
-
-  print(f"returncode: {ret} = 0x{ret:08x}")
-  if ret != 0:
-    print(out)
-    print(err)
-  assert ret == 0
+  _, _ = run_c(filepath, args, "graph {a -- b}", cflags=cflags, link=libs)
 
 @pytest.mark.parametrize("src", ["addrings", "attr", "bbox", "bipart",
   "chkedges", "clustg", "collapse", "cycle", "deghist", "delmulti", "depath",
index 7e47bee797b8d7ee14ec78acf069bad2fdfcf7b9..459258722473335ad3b82ddaffd9e261c31922a6 100644 (file)
@@ -20,6 +20,4 @@ def test_itos():
   # extra C flags this compilation needs
   cflags = ['-I', lib]
 
-  ret, _, _ = run_c(src, cflags=cflags)
-
-  assert ret == 0
+  _, _ = run_c(src, cflags=cflags)
index 4f3e588b073dea310813e82b0a63abfe3259b0aa..ff2e9330cc49c59ccac946ca05642c2172ad380c 100644 (file)
@@ -571,8 +571,7 @@ def test_1767():
   src = (Path(__file__).parent / "1767.dot").resolve()
   assert src.exists(), "missing test case"
 
-  ret, _, _ = run_c(c_src, [src], link=["cgraph", "gvc"])
-  assert ret == 0
+  _, _ = run_c(c_src, [src], link=["cgraph", "gvc"])
 
   # FIXME: uncomment this when #1767 is fixed
   # assert stdout == "Loaded graph:clusters\n" \
@@ -972,8 +971,7 @@ def test_1910():
   assert c_src.exists(), "missing test case"
 
   # run the test
-  ret, _, _ = run_c(c_src, link=["cgraph", "gvc"])
-  assert ret == 0
+  _, _ = run_c(c_src, link=["cgraph", "gvc"])
 
 def test_1913():
   """
@@ -1122,8 +1120,7 @@ def test_2057():
   assert c_src.exists(), "missing test case"
 
   # run the test
-  ret, _, _ = run_c(c_src, link=["gvc"])
-  assert ret == 0
+  _, _ = run_c(c_src, link=["gvc"])
 
 def test_2078():
   """
@@ -1221,10 +1218,7 @@ def test_2089_2():
   assert c_src.exists(), "missing test case"
 
   # run it
-  ret, stdout, stderr = run_c(c_src, link=["cgraph"])
-  sys.stdout.write(stdout)
-  sys.stderr.write(stderr)
-  assert ret == 0
+  _, _ = run_c(c_src, link=["cgraph"])
 
 @pytest.mark.skipif(os.environ.get("build_system") == "msbuild" and
                     os.environ.get("configuration") == "Debug",
@@ -1314,8 +1308,7 @@ def test_package_version():
   assert c_src.exists(), "missing test case"
 
   # run the test
-  ret, _, _ = run_c(c_src)
-  assert ret == 0
+  _, _ = run_c(c_src)
 
 def test_user_shapes():
   """
@@ -1347,7 +1340,7 @@ def test_xdot_json():
 
   # ask our C helper to process this
   try:
-    ret, output, err = run_c(c_src, input=input, link=["xdot"])
+    output, err = run_c(c_src, input=input, link=["xdot"])
   except subprocess.CalledProcessError:
     # FIXME: Remove this try-catch when
     # https://gitlab.com/graphviz/graphviz/-/issues/1777 is fixed
@@ -1355,7 +1348,6 @@ def test_xdot_json():
       pytest.skip("Windows MSBuild release does not contain any header "
                   "files (#1777)")
     raise
-  assert ret == 0
   assert err == ""
 
   if os.getenv("build_system") == "msbuild":
index e8c00d725d7ab658ab01094709dddcf9303f3667..8b5d52de52f5f74a6be2e3dc79d886605f4d506d 100644 (file)
@@ -20,6 +20,4 @@ def test_sprint():
   # extra C flags this compilation needs
   cflags = ['-I', lib]
 
-  ret, _, _ = run_c(src, cflags=cflags)
-
-  assert ret == 0
+  _, _ = run_c(src, cflags=cflags)
index 829166f03d2111edd2f7238f1d120f9d599ee7e0..98de900ab1bb25e0616b7d388d1a7e765bd9fc1c 100644 (file)
@@ -23,6 +23,4 @@ def test_vmalloc():
   if platform.system() != "Windows":
     cflags += ["-std=gnu99", "-Wall", "-Wextra", "-Werror"]
 
-  ret, _, _ = run_c(src, cflags=cflags)
-
-  assert ret == 0
+  _, _ = run_c(src, cflags=cflags)