hy/tests/test_bin.py
Will Kahn-Greene 07dec18dc3 Fix "hy -c CMD" to show lex errors; add tests
* tells you there's a lex error, but doesn't tell you much else
* adds tests for all new bin/hy functionality
2013-04-24 22:23:12 -04:00

45 lines
1.1 KiB
Python

import subprocess
def run_cmd(cmd):
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True)
p.wait()
return p.returncode, p.stdout, p.stderr
def test_bin_hy():
ret = run_cmd("echo | bin/hy")
assert ret[0] == 0
def test_bin_hy_stdin():
ret = run_cmd("echo \"(koan)\" | bin/hy")
assert ret[0] == 0
assert "monk" in ret[1].read().decode("utf-8")
def test_bin_hy_cmd():
ret = run_cmd("bin/hy -c \"(koan)\"")
assert ret[0] == 0
assert "monk" in ret[1].read().decode("utf-8")
ret = run_cmd("bin/hy -c \"(koan\"")
assert ret[0] == 1
assert "LexException" in ret[1].read().decode("utf-8")
def test_bin_hy_icmd():
ret = run_cmd("echo \"(ideas)\" | bin/hy -i \"(koan)\"")
assert ret[0] == 0
output = ret[1].read().decode("utf-8")
assert "monk" in output
assert "figlet" in output
def test_bin_hy_file():
ret = run_cmd("bin/hy eg/nonfree/halting-problem/halting.hy")
assert ret[0] == 0
assert "27" in ret[1].read().decode("utf-8")