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
This commit is contained in:
parent
760774afde
commit
07dec18dc3
@ -37,7 +37,7 @@ from hy.lex.states import Idle, LexException
|
||||
from hy.lex.machine import Machine
|
||||
from hy.compiler import hy_compile
|
||||
from hy.core import process
|
||||
from hy.importer import ast_compile
|
||||
from hy.importer import ast_compile, import_buffer_to_module
|
||||
|
||||
import hy.completer
|
||||
|
||||
@ -137,8 +137,13 @@ def ideas_macro(tree):
|
||||
|
||||
|
||||
def run_command(source):
|
||||
hr = HyREPL()
|
||||
hr.runsource(source, filename='<input>', symbol='single')
|
||||
try:
|
||||
import_buffer_to_module("__main__", source)
|
||||
except LexException as exc:
|
||||
# TODO: This would be better if we had line, col info.
|
||||
print(source)
|
||||
print(repr(exc))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
|
@ -1,8 +1,44 @@
|
||||
import subprocess
|
||||
|
||||
|
||||
def test_bin_hy():
|
||||
p = subprocess.Popen("echo | bin/hy",
|
||||
def run_cmd(cmd):
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
shell=True)
|
||||
p.wait()
|
||||
assert p.returncode == 0
|
||||
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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user