Add Makefile

* Makefile: New file subsuming create-docs.sh and run-tests.sh.
* create-docs.sh:
* run-tests.sh: Remove files.

* .github/workflows/test.yml:
* dash-template.texi (Contribute):
* readme-template.md (Contribute):
* pre-commit.sh: Refer to new Make targets.

* dev/examples.el: Add support for running byte-compiled tests in
Emacs < 24.3, where setf was still defined in cl-macs.el.

* README.md:
* dash.texi: Regenerate docs.
master
Basil L. Contovounesios 5 years ago
parent 84721fc466
commit 9c6a7c3e07
No known key found for this signature in database
GPG Key ID: 205AB54A5D5D8CFF
  1. 4
      .github/workflows/test.yml
  2. 62
      Makefile
  3. 4
      README.md
  4. 10
      create-docs.sh
  5. 4
      dash-template.texi
  6. 4
      dash.texi
  7. 6
      dev/examples.el
  8. 6
      pre-commit.sh
  9. 4
      readme-template.md
  10. 28
      run-tests.sh

@ -31,8 +31,8 @@ jobs:
- name: Run tests - name: Run tests
if: matrix.allow_failure != true if: matrix.allow_failure != true
run: './run-tests.sh' run: 'make check'
- name: Run tests (allow failure) - name: Run tests (allow failure)
if: matrix.allow_failure == true if: matrix.allow_failure == true
run: './run-tests.sh || true' run: 'make check || true'

@ -0,0 +1,62 @@
# Makefile for Dash.
# Copyright (C) 2021 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Variables.
EMACS ?= emacs
BATCH := $(EMACS) -Q -batch -L .
ELS := dash.el dash-functional.el
ELCS := $(addsuffix c,$(ELS))
# Targets.
lisp: $(ELCS)
.PHONY: lisp
docs: README.md dash.texi
.PHONY: docs
# ERT_SELECTOR is a Lisp expression determining which tests to run.
# Its format is described in (info "(ert) Test Selectors"). It
# defaults to selecting all tests. Note that in batch mode, a nil
# selector is the same as t.
check: ERT_SELECTOR ?= t
check: lisp
$(BATCH) -l dev/examples-to-tests.el -l dev/examples.el \
-eval '(ert-run-tests-batch-and-exit (quote $(ERT_SELECTOR)))'
.PHONY: check
all: lisp docs check
.PHONY: all
clean:
$(RM) $(ELCS)
.PHONY: clean
# Files.
%.elc: %.el
$(BATCH) -eval '(setq byte-compile-error-on-warn t)' \
-f batch-byte-compile $<
dash-functional.elc: dash.elc
README.md: $(ELS) dev/examples-to-docs.el dev/examples.el readme-template.md
$(BATCH) $(addprefix -l ,$(filter %.el,$^)) -f create-docs-file
dash.texi: $(ELS) dev/examples-to-info.el dev/examples.el dash-template.texi
$(BATCH) $(addprefix -l ,$(filter %.el,$^)) -f create-info-file

@ -2932,11 +2932,11 @@ You'll find the repo at:
Run the tests with: Run the tests with:
./run-tests.sh make check
Regenerate the docs with: Regenerate the docs with:
./create-docs.sh make docs
I highly recommend that you install these as a pre-commit hook, so I highly recommend that you install these as a pre-commit hook, so
that the tests are always running and the docs are always in sync: that the tests are always running and the docs are always in sync:

@ -1,10 +0,0 @@
#!/usr/bin/env sh
if [ -z "${EMACS}" ]; then
EMACS=emacs
fi
"${EMACS}" -Q -batch -l dash.el -l dash-functional.el \
-l dev/examples-to-docs.el -l dev/examples.el -f create-docs-file
"${EMACS}" -Q -batch -l dash.el -l dash-functional.el \
-l dev/examples-to-info.el -l dev/examples.el -f create-info-file

@ -212,8 +212,8 @@ please. There's a suite of examples/tests in @file{dev/examples.el},
so remember to add tests for your additions, or they may get broken so remember to add tests for your additions, or they may get broken
later. later.
Run the tests with @samp{./run-tests.sh}. Regenerate the docs with Run the tests with @samp{make check}. Regenerate the docs with
@samp{./create-docs.sh}. Contributors are encouraged to install these @samp{make docs}. Contributors are encouraged to install these
commands as a Git pre-commit hook, so that the tests are always commands as a Git pre-commit hook, so that the tests are always
running and the docs are always in sync: running and the docs are always in sync:

@ -4474,8 +4474,8 @@ please. There's a suite of examples/tests in @file{dev/examples.el},
so remember to add tests for your additions, or they may get broken so remember to add tests for your additions, or they may get broken
later. later.
Run the tests with @samp{./run-tests.sh}. Regenerate the docs with Run the tests with @samp{make check}. Regenerate the docs with
@samp{./create-docs.sh}. Contributors are encouraged to install these @samp{make docs}. Contributors are encouraged to install these
commands as a Git pre-commit hook, so that the tests are always commands as a Git pre-commit hook, so that the tests are always
running and the docs are always in sync: running and the docs are always in sync:

@ -28,6 +28,12 @@
(unless (fboundp 'def-example-group) (unless (fboundp 'def-example-group)
(require 'examples-to-tests "dev/examples-to-tests"))) (require 'examples-to-tests "dev/examples-to-tests")))
;; TODO: `setf' was introduced in Emacs 24.3, so remove this when
;; support for earlier versions is dropped.
(eval-when-compile
(unless (fboundp 'setf)
(require 'cl)))
;; FIXME: These definitions ought to be exported along with the ;; FIXME: These definitions ought to be exported along with the
;; examples, if they are going to be used there. ;; examples, if they are going to be used there.
(defun odd? (num) (= 1 (% num 2))) (defun odd? (num) (= 1 (% num 2)))

@ -1,9 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env sh
git stash -q --keep-index git stash -q --keep-index
./run-tests.sh make check
RESULT=$? RESULT=$?
[ $RESULT == 0 ] && ./create-docs.sh && git add ./README.md [ $RESULT -eq 0 ] && make docs && git add ./README.md
git stash pop -q git stash pop -q
[ $RESULT -ne 0 ] && exit 1 [ $RESULT -ne 0 ] && exit 1
exit 0 exit 0

@ -104,11 +104,11 @@ You'll find the repo at:
Run the tests with: Run the tests with:
./run-tests.sh make check
Regenerate the docs with: Regenerate the docs with:
./create-docs.sh make docs
I highly recommend that you install these as a pre-commit hook, so I highly recommend that you install these as a pre-commit hook, so
that the tests are always running and the docs are always in sync: that the tests are always running and the docs are always in sync:

@ -1,28 +0,0 @@
#!/usr/bin/env bash
set -e
if [ -z "$EMACS" ] ; then
EMACS="emacs"
fi
# Run all tests by default.
# To only run certain tests, set $ERT_SELECTOR as required.
# For example, to skip the test "-fixfn", run the following command:
#
# ERT_SELECTOR='(not "-fixfn")' ./run-tests.sh
#
if [ -z "$ERT_SELECTOR" ] ; then
ERT_SELECTOR="nil"
fi
$EMACS -Q -batch \
-l dash.el \
-l dash-functional.el \
-l dev/examples-to-tests.el \
-l dev/examples.el \
-eval "(ert-run-tests-batch-and-exit (quote ${ERT_SELECTOR}))"
$EMACS -Q -batch \
-eval '(setq byte-compile-error-on-warn t)' \
-f batch-byte-compile dash.el
Loading…
Cancel
Save