gherken/gherken.scm

50 lines
1.3 KiB
Scheme
Raw Normal View History

2021-04-01 06:41:04 +00:00
(cond-expand
(r7rs)
(chicken (import (r7rs))))
2021-04-07 00:19:06 +00:00
(import-for-syntax (r7rs))
2021-04-01 06:41:04 +00:00
(define-library (gherken)
2021-04-07 00:19:06 +00:00
(import r7rs
utf8
(chicken irregex)
(chicken port)
2021-04-07 17:00:43 +00:00
(chicken file)
2021-04-07 00:19:06 +00:00
shell
medea
srfi-1
srfi-69
srfi-78
srfi-123
srfi-152
srfi-197)
2021-04-07 17:00:43 +00:00
(export given run-features)
2021-04-01 06:41:04 +00:00
(begin
2021-04-07 00:19:06 +00:00
(define lang-registry (make-hash-table))
(define-syntax given
(syntax-rules ()
((given picklex args ...)
(hash-table-set! lang-registry picklex (lambda args ...)))))
2021-04-07 17:00:43 +00:00
(define (run-pickle data tags)
#t)
(define (run-feature filename tags)
(let ((pickles (chain (capture ("./gherkinexe" "--no-ast" "--no-source" filename))
(string-trim-both _)
(string-split _ "\n")
(string-join _ ", ")
(list "[" _ "]")
(string-concatenate _)
(with-input-from-string _ read-json))))
(map
(lambda (x) (run-pickle x tags))
pickles)))
(define (run-features dir #!rest tags)
(let ((featurefiles (find-files dir test: '(: (* any) ".feature"))))
(map
(lambda (x) (run-feature x tags))
featurefiles)))
2021-04-01 06:41:04 +00:00
))