2018-10-30 09:07:40 -05:00
|
|
|
#!/usr/bin/env python3
|
2018-10-30 05:26:53 -05:00
|
|
|
'''
|
|
|
|
Test whether cargo-miri works properly.
|
|
|
|
Assumes the `MIRI_SYSROOT` env var to be set appropriately,
|
|
|
|
and the working directory to contain the cargo-miri-test project.
|
|
|
|
'''
|
|
|
|
|
|
|
|
import sys, subprocess
|
|
|
|
|
|
|
|
def test_cargo_miri():
|
2018-11-25 11:27:24 -06:00
|
|
|
print("==> Testing `cargo miri run` <==")
|
2018-10-30 05:26:53 -05:00
|
|
|
## Call `cargo miri`, capture all output
|
|
|
|
p = subprocess.Popen(
|
2018-11-25 11:27:24 -06:00
|
|
|
["cargo", "miri", "run", "-q"],
|
2018-10-30 05:26:53 -05:00
|
|
|
stdout=subprocess.PIPE,
|
|
|
|
stderr=subprocess.PIPE
|
|
|
|
)
|
|
|
|
(stdout, stderr) = p.communicate()
|
|
|
|
stdout = stdout.decode("UTF-8")
|
|
|
|
stderr = stderr.decode("UTF-8")
|
|
|
|
# Show output
|
|
|
|
print("=> captured stdout <=")
|
|
|
|
print(stdout, end="")
|
|
|
|
print("=> captured stderr <=")
|
|
|
|
print(stderr, end="")
|
|
|
|
# Test for failures
|
|
|
|
if p.returncode != 0:
|
|
|
|
sys.exit(1)
|
|
|
|
if stdout != open('stdout.ref').read():
|
|
|
|
print("stdout does not match reference")
|
|
|
|
sys.exit(1)
|
|
|
|
if stderr != open('stderr.ref').read():
|
|
|
|
print("stderr does not match reference")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
def test_cargo_miri_test():
|
|
|
|
print("==> Testing `cargo miri test` <==")
|
|
|
|
subprocess.check_call(["cargo", "miri", "test"])
|
|
|
|
|
|
|
|
test_cargo_miri()
|
|
|
|
test_cargo_miri_test()
|
|
|
|
sys.exit(0)
|