From 8d66050e0a9f39a8108a42ac526d96eef2bb1377 Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sun, 25 Apr 2021 14:48:03 -0700 Subject: [PATCH] try to work around `lneato -?` flakiness on Windows Related to #1934. --- rtest/test_tools.py | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/rtest/test_tools.py b/rtest/test_tools.py index 61fd02664..1ef4fa095 100644 --- a/rtest/test_tools.py +++ b/rtest/test_tools.py @@ -72,13 +72,36 @@ def test_tools(tool): environ_copy.pop("DISPLAY", None) # Test usage - output = subprocess.check_output( - [tool, "-?"], - env=environ_copy, - stdin=subprocess.DEVNULL, - stderr=subprocess.STDOUT, - universal_newlines=True, - ) + p = subprocess.Popen([tool, "-?"], env=environ_copy, stdin=subprocess.DEVNULL, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + universal_newlines=True) + output, _ = p.communicate() + ret = p.returncode + + # FIXME: https://gitlab.com/graphviz/graphviz/-/issues/1934 + # cope with flaky failures, while also failing if this flakiness has been + # fixed + if tool == "lneato" and os.getenv("build_system") == "msbuild": + has_pass = ret == 0 + has_fail = ret != 0 + for _ in range(100): + if has_pass and has_fail: + break + p = subprocess.Popen([tool, "-?"], env=environ_copy, + stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, universal_newlines=True) + out, _ = p.communicate() + if p.returncode == 0: + has_pass = True + ret = p.returncode + output = out + else: + has_fail = True + assert has_pass, "could not find passing execution" + assert has_fail, "could not find failing execution (#1934 fixed?)" + + assert ret == 0, f"`{tool} -?` failed" + assert re.match("usage", output, flags=re.IGNORECASE) is not None, \ f"{tool} -? did not show usage" -- 2.40.0