-
Notifications
You must be signed in to change notification settings - Fork 1
/
python-main.rkt
52 lines (41 loc) · 1.53 KB
/
python-main.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#lang racket/base
(require (planet dherman/json:4:0))
(require racket/cmdline
racket/pretty
"parse-python.rkt"
"get-structured-python.rkt"
"python-interp.rkt"
"python-desugar.rkt"
"python-lib.rkt"
"run-tests.rkt"
"python-evaluator.rkt")
(define (python-test-runner _ port)
(run-python port))
(define (run-python port)
(interp
(desugar
(get-structured-python
(parse-python/port port python-path)))))
(define python-path "/home/joe/bin/python")
(command-line
#:once-each
("--interp" "Interpret stdin as python"
(run-python (current-input-port)))
("--interp-py" "Interpret stdin as python using py-prelude.py"
(define results ((mk-python-cmdline-eval python-path) "stdin" (current-input-port)))
(display (car results) (current-output-port))
(display (cdr results) (current-error-port)))
("--get-syntax" "Get s-exp for python"
(pretty-write (parse-python/port (current-input-port) python-path)))
("--test" dirname "Run all tests in dirname"
(display (results-summary (run-tests (mk-proc-eval/silent python-test-runner) dirname))))
("--test-py" dirname "Run all tests in dirname using python"
(display (results-summary (run-tests (mk-python-cmdline-eval python-path) dirname))))
("--python-path" path "Set the python path"
(set! python-path path))
("--progress-report" dirname "Generate a soft report"
(printf "~a\n"
(jsexpr->json
(json-summary
(run-tests (mk-proc-eval/silent python-test-runner) dirname)))))
)