From 2b80f660a8320666f68f3820f5f802fa3efe311d Mon Sep 17 00:00:00 2001 From: Thomas Wimmer Date: Tue, 4 Nov 2025 23:50:02 +0100 Subject: [PATCH] Switch from using a shell script for running tests to a Makefile Change-Id: Iee7b183324be28922979589449411d90b9a1ed4a --- .github/workflows/test.yml | 2 +- Makefile | 40 ++++++++++++++++++++++++++++ gerrit-manual-tests.el | 1 + gerrit.el | 2 +- run-tests.sh | 54 -------------------------------------- 5 files changed, 43 insertions(+), 56 deletions(-) create mode 100644 Makefile delete mode 100755 run-tests.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e315463..09c144f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,4 +26,4 @@ jobs: version: ${{ matrix.emacs_version }} - name: Run tests - run: ./run-tests.sh + run: make diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3248870 --- /dev/null +++ b/Makefile @@ -0,0 +1,40 @@ +EMACS ?= emacs + +# A space-separated list of required package names +DEPS = cl-lib magit dash s + +INIT_PACKAGES="(progn \ + (require 'package) \ + (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) \ + (package-initialize) \ + (dolist (pkg '(${DEPS})) \ + (unless (package-installed-p pkg) \ + (unless (assoc pkg package-archive-contents) \ + (package-refresh-contents)) \ + (package-install pkg))) \ + (unless package-archive-contents (package-refresh-contents)) \ + )" + +EMACS_BATCH=${EMACS} -Q -batch --eval ${INIT_PACKAGES} + +all: clean compile test + +clean: + rm -f *.elc + +compile: clean + ${EMACS} -Q --eval ${INIT_PACKAGES} -L . -batch -f batch-byte-compile *.el + +TEST_SELECTOR ?= t +test-unit: + @echo "---- Run unit tests" + @${EMACS_BATCH} \ + -l gerrit-rest.el \ + -l gerrit.el \ + -l test/gerrit.el-test.el \ + --eval "(ert-run-tests-batch-and-exit '${TEST_SELECTOR})" \ + && echo "OK" + +test: test-unit + +.PHONY: all compile clean package-lint test test-unit diff --git a/gerrit-manual-tests.el b/gerrit-manual-tests.el index 14099ce..f945d0f 100644 --- a/gerrit-manual-tests.el +++ b/gerrit-manual-tests.el @@ -1,3 +1,4 @@ +;;; gerrit-manual-tests.el --- Gerrit test -*- lexical-binding: t; -*- (require 'cl-lib) (require 'gerrit-rest) (require 'gerrit) diff --git a/gerrit.el b/gerrit.el index 3f59c3d..a96542a 100644 --- a/gerrit.el +++ b/gerrit.el @@ -4,7 +4,7 @@ ;; Maintainer: Thomas Hisch ;; URL: https://github.com/thisch/gerrit.el ;; Version: 0.1 -;; Package-Requires: ((emacs "25.1") (magit "2.13.1") (s "1.12.0") (dash "0.2.15")) +;; Package-Requires: ((emacs "28.2") (magit "2.13.1") (s "1.12.0") (dash "0.2.15")) ;; Keywords: extensions ;; This program is free software; you can redistribute it and/or modify diff --git a/run-tests.sh b/run-tests.sh deleted file mode 100755 index 5a30147..0000000 --- a/run-tests.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -e - -set -x -set -e - -EMACS="${EMACS:=emacs}" - -INIT_PACKAGE_EL="(progn - (require 'package) - (setq package-install-upgrade-built-in t) - (package-install 'seq) - (progn (unload-feature 'seq t) (require 'seq)) - (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) - (package-initialize))" - -"$EMACS" -Q -batch \ - --eval "$INIT_PACKAGE_EL" \ - --eval "(unless package-archive-contents (package-refresh-contents))" \ - --eval "(unless (package-installed-p 'cl-lib) (package-install 'cl-lib))" \ - --eval "(unless (package-installed-p 'magit) (package-install 'magit))" \ - --eval "(unless (package-installed-p 'dash) (package-install 'dash))" \ - --eval "(unless (package-installed-p 's) (package-install 's))" - -# Byte compile, failing on byte compiler errors, or on warnings unless ignored -if [ -n "${EMACS_LINT_IGNORE+x}" ]; then - ERROR_ON_WARN=nil -else - ERROR_ON_WARN=t -fi - -"$EMACS" -Q -batch \ - --eval "$INIT_PACKAGE_EL" \ - -L . \ - -l gerrit.el \ - -l gerrit-rest.el \ - --eval "(setq byte-compile-error-on-warn ${ERROR_ON_WARN})" \ - -f batch-byte-compile \ - gerrit.el gerrit-rest.el test/gerrit.el-test.el - -"$EMACS" -Q -batch \ - --eval '(progn (package-initialize) (byte-compile-file "gerrit-rest.el"))' -"$EMACS" -Q -batch \ - --eval '(package-initialize)' \ - -l gerrit-rest.el \ - --eval '(byte-compile-file "gerrit.el")' - - -"$EMACS" -Q -batch \ - --eval "$INIT_PACKAGE_EL" \ - -L . \ - -l gerrit.el \ - -l gerrit-rest.el \ - -l test/gerrit.el-test.el \ - -f ert-run-tests-batch-and-exit