From 7e19d80130b78c8199a63e925f15d20ebbef437b Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Sat, 20 Apr 2024 14:04:32 +0100 Subject: [PATCH] anoia: add assert macro module contains expect and expect= --- pkgs/anoia/Makefile | 9 +++++++++ pkgs/anoia/assert.fnl | 21 +++++++++++++++++++++ pkgs/anoia/default.nix | 7 ++----- pkgs/anoia/test.fnl | 9 +++++---- 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 pkgs/anoia/Makefile create mode 100644 pkgs/anoia/assert.fnl diff --git a/pkgs/anoia/Makefile b/pkgs/anoia/Makefile new file mode 100644 index 0000000..800808e --- /dev/null +++ b/pkgs/anoia/Makefile @@ -0,0 +1,9 @@ + +default: fs.lua init.lua nl.lua svc.lua + +test: + ln -s . anoia + fennel test.fnl + +%.lua: %.fnl + fennel --compile $< > $@ diff --git a/pkgs/anoia/assert.fnl b/pkgs/anoia/assert.fnl new file mode 100644 index 0000000..f3dae6d --- /dev/null +++ b/pkgs/anoia/assert.fnl @@ -0,0 +1,21 @@ +;; these are macros; this module should be imported +;; using import-macros + +;; e.g. (import-macros { : expect= } :anoia.assert) + + +(fn expect [assertion] + (let [msg (.. "expectation failed: " (view assertion))] + `(when (not ,assertion) + (assert false ,msg)))) + +(fn expect= [actual expected] + `(let [view# (. (require :fennel) :view) + ve# (view# ,expected) + va# (view# ,actual)] + (when (not (= ve# va#)) + (assert false + (.. "\nexpected " ve# "\ngot " va#) + )))) + +{ : expect : expect= } diff --git a/pkgs/anoia/default.nix b/pkgs/anoia/default.nix index a3a49a2..a0c3f88 100644 --- a/pkgs/anoia/default.nix +++ b/pkgs/anoia/default.nix @@ -10,11 +10,8 @@ in stdenv.mkDerivation { src = ./.; nativeBuildInputs = [ fennel ]; buildInputs = with lua.pkgs; [ luafilesystem ]; - buildPhase = '' - for f in *.fnl ; do - fennel --compile $f > `basename $f .fnl`.lua - done - ''; + doCheck = true; + checkPhase = "make test"; installPhase = '' mkdir -p "$out/share/lua/${lua.luaversion}/${pname}" cp *.lua "$out/share/lua/${lua.luaversion}/${pname}" diff --git a/pkgs/anoia/test.fnl b/pkgs/anoia/test.fnl index b940758..a1878ff 100644 --- a/pkgs/anoia/test.fnl +++ b/pkgs/anoia/test.fnl @@ -1,9 +1,10 @@ (local { : hash : base64url } (require :anoia)) +(import-macros { : expect= } :anoia.assert) -(assert (= (hash "") 5381)) +(expect= (hash "") 5381) ;; these examples from https://theartincode.stanis.me/008-djb2/ -(assert (= (hash "Hello") 210676686969)) -(assert (= (hash "Hello!") 6952330670010)) +(expect= (hash "Hello") 210676686969) +(expect= (hash "Hello!") 6952330670010) -(assert (= (base64url "hello world") "aGVsbG8gd29ybGQ")) +(expect= (base64url "hello world") "aGVsbG8gd29ybGQ")