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.lex.machine import Machine
|
||||||
from hy.compiler import hy_compile
|
from hy.compiler import hy_compile
|
||||||
from hy.core import process
|
from hy.core import process
|
||||||
from hy.importer import ast_compile
|
from hy.importer import ast_compile, import_buffer_to_module
|
||||||
|
|
||||||
import hy.completer
|
import hy.completer
|
||||||
|
|
||||||
@ -137,8 +137,13 @@ def ideas_macro(tree):
|
|||||||
|
|
||||||
|
|
||||||
def run_command(source):
|
def run_command(source):
|
||||||
hr = HyREPL()
|
try:
|
||||||
hr.runsource(source, filename='<input>', symbol='single')
|
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
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,8 +1,44 @@
|
|||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
def test_bin_hy():
|
def run_cmd(cmd):
|
||||||
p = subprocess.Popen("echo | bin/hy",
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||||
shell=True)
|
shell=True)
|
||||||
p.wait()
|
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