; Reduce quoting for SELECTOR in 'make -C test' (Bug#31744)

Before:

    make -C test SELECTOR='\"foo\"'
    make -C test SELECTOR='(quote (tag :some-tag))'

After:

    make -C test SELECTOR='"foo"'
    make -C test SELECTOR='(tag :some-tag)'

* test/Makefile.in: Use single quotes around the command line call to
ert, this means the user doesn't have to backslash escape double
quotes when writing lisp strings for the selector.  Also wrap the
SELECTOR value in (quote ...) so the user won't have to type it
in (and not get tempted to use the '... reader syntax form which would
now fail to work due to using single quotes around the whole shell
arg).
* test/README: Update instructions accordingly.
This commit is contained in:
Noam Postavsky 2018-06-06 21:25:52 -04:00
parent b6b793bd77
commit 5bdc344780
2 changed files with 8 additions and 5 deletions

View file

@ -98,9 +98,9 @@ TEST_LOCALE = C
TEST_INTERACTIVE ?= no
ifeq ($(TEST_INTERACTIVE),yes)
TEST_RUN_ERT = --eval "(ert ${SELECTOR_ACTUAL})"
TEST_RUN_ERT = --eval '(ert (quote ${SELECTOR_ACTUAL}))'
else
TEST_RUN_ERT = --batch --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG}
TEST_RUN_ERT = --batch --eval '(ert-run-tests-batch-and-exit (quote ${SELECTOR_ACTUAL}))' ${WRITE_LOG}
endif
# Whether to run tests from .el files in preference to .elc, we do
@ -140,8 +140,8 @@ test_module_dir := $(srcdir)/data/emacs-module
all: check
SELECTOR_DEFAULT = (quote (not (or (tag :expensive-test) (tag :unstable))))
SELECTOR_EXPENSIVE = (quote (not (tag :unstable)))
SELECTOR_DEFAULT = (not (or (tag :expensive-test) (tag :unstable)))
SELECTOR_EXPENSIVE = (not (tag :unstable))
SELECTOR_ALL = t
ifdef SELECTOR
SELECTOR_ACTUAL=$(SELECTOR)

View file

@ -42,7 +42,10 @@ except the tests tagged as expensive.
If your test file contains the tests "test-foo", "test2-foo" and
"test-foo-remote", and you want to run only the former two tests, you
could use a selector regexp: "make <filename> SELECTOR='\"foo$$\"'".
could use a selector regexp (note that the "$" needs to be doubled to
protect against "make" variable expansion):
make <filename> SELECTOR='"foo$$"'
Note that although the test files are always compiled (unless they set
no-byte-compile), the source files will be run by default, to give