#+COMMENT:                                                            -*- org -*-
#+TITLE: Hacking Dezyne command line tools

* Regression test

    make check

Run an individual test

   ./pre-inst-env run test/all/hello

or

   ./pre-inst-env run hello

See

    ./pre-inst-env run --help

for more options.

Re-run all failures (e.g., after making fixes)

    make recheck

Run only verify

    make check RUN_FLAGS=--stage=verify

Skip code

    make check RUN_FLAGS=--skip=code

Run all parser tests

    make check TESTS='$(PARSER_TESTS)'

or

    make check TESTS="$(find test/all -maxdepth 1 -type d -a '(' -name '*wf_*' -o -name 'parse*' -o -path '*/undefined/*' ')' )"

Run all blocking tests

    make check TESTS="$(find test/all -maxdepth 1 -type d -a -name '*block*')"

Run verify for all defer tests

    make check TESTS="$(find test/all -maxdepth 1 -type d -a -name '*defer*')" RUN_FLAGS=--stage=verify

Run lts for all external tests (external was not added to names when it
became required for thread-safe-shells, also there are two unstable
external tests that cannot be added to TESTS):

    make check TESTS="$(git grep -l external -- test/all/*/*.dzn | xargs dirname)" RUN_FLAGS=--stage=lts

* The Perfect GNU Emacs Setup

** See emacs/dzn-dzn.el

** For development, also add to your ~/.config/emacs/init.el something like:

   (push "~/src/dezyne/emacs" load-path)

** For development info docs, add:

   (setq Info-directory-list (split-string (getenv "INFOPATH") ":"))
   (push "~/src/dezyne/doc" Info-directory-list)
   (require 'info)

* Documentation

** Adding dezyne to the toplevel info menu.

When working on the documentation, it is handy to have a toplevel dezyne
entry that points to the development tree.  You may generate it like so

#+BEGIN_SRC bash
install-info doc/dezyne.info doc/dir
#+END_SRC

and add `$abs_top_builddir/doc` to your INFOPATH; in Emacs, something
like:

#+BEGIN_SRC bash
(push "~/src/dezyne/doc" Info-directory-list)
#+END_SRC

** For the Dezyne manual, do something like:

#+BEGIN_SRC bash
$(grep -o 'guix time.*' *.scm) --ad-hoc texlive-bin texlive-base texlive-tex-plain texlive-tex-texinfo texlive-epsf rsync
./autogen.sh
./configure
git clean -fdx -- doc
make info html pdf
make publish SITE=kluit.dezyne.org:/srv/dezyne.org/site/dezyne
#+END_SRC

** For the dezyne.org website

#+BEGIN_SRC bash
git clone kluit.dezyne.org:~janneke/src/web/dezyne.org.git
cd dezyne.org
guix shell -m guix.scm
make
make serve # => check localhost:8080
make publish
#+END_SRC

* Legalese
Copyright © 2019,2020,2021,2022,2023,2024 Janneke Nieuwenhuizen <janneke@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.
