output-template: run the tests
This commit is contained in:
parent
6649ebeccd
commit
c32d09bd83
@ -1,3 +0,0 @@
|
||||
check:
|
||||
./output-template '{{' '}}' < example.ini > output
|
||||
diff -u output example.ini.expected
|
@ -2,6 +2,7 @@
|
||||
fetchurl,
|
||||
writeFennel,
|
||||
fennel,
|
||||
fennelrepl,
|
||||
runCommand,
|
||||
lua,
|
||||
anoia,
|
||||
@ -17,9 +18,9 @@ stdenv.mkDerivation {
|
||||
src = ./.;
|
||||
|
||||
buildInputs = [ lua ];
|
||||
doCheck = true;
|
||||
|
||||
nativeBuildInputs = [ fennelrepl ] ;
|
||||
buildPhase = ''
|
||||
fennelrepl --test ./output-template.fnl
|
||||
cp -p ${
|
||||
writeFennel name {
|
||||
packages = [
|
||||
@ -27,11 +28,11 @@ stdenv.mkDerivation {
|
||||
lualinux
|
||||
linotify
|
||||
];
|
||||
macros = [ anoia.dev ];
|
||||
mainFunction = "run";
|
||||
} ./output-template.fnl
|
||||
} ${name}
|
||||
'';
|
||||
checkPhase = "make check";
|
||||
installPhase = ''
|
||||
install -D ${name} $out/bin/${name}
|
||||
'';
|
||||
|
@ -41,4 +41,12 @@
|
||||
out (substitute (: (io.input) :read "*a") opening closing)]
|
||||
(io.write out)))
|
||||
|
||||
(import-macros { : define-tests : expect : expect= } :anoia.assert)
|
||||
(define-tests
|
||||
(fn slurp [name]
|
||||
(with-open [f (assert (io.open name))] (f:read "*a")))
|
||||
(expect=
|
||||
(pick-values 1 (substitute (slurp "example.ini") "{{" "}}"))
|
||||
(slurp "example.ini.expected")))
|
||||
|
||||
{ : run }
|
||||
|
@ -1,44 +0,0 @@
|
||||
(local svc (require :anoia.svc))
|
||||
|
||||
(fn json-escape [s]
|
||||
;; All Unicode characters may be placed within the quotation marks,
|
||||
;; except for the characters that MUST be escaped:
|
||||
;; quotation mark, reverse solidus, and the control characters (U+0000
|
||||
;; through U+001F). (RFC 8259)
|
||||
(-> s
|
||||
(string.gsub
|
||||
"[\"\b\f\n\r\t]" {
|
||||
"\b" "\\b"
|
||||
"\"" "\\\""
|
||||
"\f" "\\f"
|
||||
"\n" "\\n"
|
||||
"\r" "\\r"
|
||||
"\t" "\\t"
|
||||
})
|
||||
(string.gsub
|
||||
"([\x00-\x1b])"
|
||||
(fn [x] (string.format "\\u%04X" (string.byte x))))))
|
||||
|
||||
|
||||
(fn substitute [text opening closing]
|
||||
(let [delim (.. opening "(.-)" closing)
|
||||
myenv {
|
||||
: string
|
||||
:output
|
||||
(fn [service-path path]
|
||||
(let [s (assert (svc.open (.. service-path "/.outputs")))]
|
||||
(s:output path)))
|
||||
:lua_quote #(string.format "%q" $1)
|
||||
:json_quote (fn [x] (.. "\"" (json-escape x) "\""))
|
||||
}]
|
||||
(string.gsub text delim
|
||||
(fn [x]
|
||||
(assert ((load (.. "return " x) x :t myenv))
|
||||
(string.format "missing value for %q" x))))))
|
||||
|
||||
(fn run []
|
||||
(let [[opening closing] arg
|
||||
out (substitute (: (io.input) :read "*a") opening closing)]
|
||||
(io.write out)))
|
||||
|
||||
{ : run }
|
Loading…
Reference in New Issue
Block a user