Skip to content

Commit

Permalink
ci: Use Eask to test macos and windows (#1885)
Browse files Browse the repository at this point in the history
* ci: Use Eask to test macos and windows

* ci: Install eask

* ci: Fix jump file test

* revert spaces

* ci: skip find-file test on windows

* ci: Revert original test for windows

* Delete Cask file

* ci: Exclude tests on macos below 28.x
  • Loading branch information
jcs090218 committed May 31, 2024
1 parent 89617bb commit b767c48
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 68 deletions.
34 changes: 28 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,52 @@ name: CI

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
emacs_version:
- 25.3
os: [ubuntu-latest, macos-latest, windows-latest]
emacs-version:
- 26.3
- 27.2
- 28.2
- 29.3
- snapshot
experimental: [false]
include:
- os: ubuntu-latest
emacs-version: snapshot
experimental: true
- os: macos-latest
emacs-version: snapshot
experimental: true
exclude:
- os: macos-latest
emacs-version: 26.3
- os: macos-latest
emacs-version: 27.2

steps:
- uses: purcell/setup-emacs@master
- uses: jcs090218/setup-emacs@master
with:
version: ${{ matrix.emacs_version }}
version: ${{ matrix.emacs-version }}

- uses: actions/checkout@v4

- name: Print emacs version
run: |
emacs --version
- uses: emacs-eask/setup-eask@master
with:
version: 'snapshot'

- name: Run tests
run: |
make test
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ typescript
/doc/build/*/
!/doc/build/texinfo/evil.texi
*.pyc

/.eask
/dist
5 changes: 0 additions & 5 deletions Cask

This file was deleted.

54 changes: 54 additions & 0 deletions Eask
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
(package "evil"
"1.15.0"
"Extensible vi layer")

(website-url "https://github.com/emacs-evil/evil")
(keywords "emulations")

(package-file "evil.el")
(files "evil-*.el" '(:exclude "*-tests.el" "*-pkg.el"))

(script "test" "echo \"Error: no test specified\" && exit 1")

(source 'gnu)
(source 'melpa)

(depends-on "emacs" "24.1")
(depends-on "cl-lib")
(depends-on "goto-chg")

(setq network-security-level 'low) ; see https://github.com/jcs090218/setup-emacs-windows/issues/156#issuecomment-932956432

(eask-defcommand test
"Basic tests."
(require 'evil-tests)
(evil-tests-initialize nil nil))

(eask-defcommand terminal
"Load Evil in a terminal Emacs and run all tests."
(require 'evil-tests)
(evil-tests-initialize nil nil t))

(eask-defcommand profiler
"Run all tests with profiler."
(require 'evil-tests)
(evil-mode 1)
(evil-tests-initialize nil t))

(eask-defcommand indent
"Re-indent all Evil code."
(setq vc-handled-backends nil)
(dolist (file (eask-package-el-files)) (load file))
(dolist (buffer (reverse (buffer-list)))
(when (buffer-file-name buffer)
(set-buffer buffer)
(message "Indenting %s" (current-buffer))
(setq-default indent-tabs-mode nil)
(untabify (point-min) (point-max))
(indent-region (point-min) (point-max))
(delete-trailing-whitespace)
(untabify (point-min) (point-max))
(goto-char (point-min))
(while (re-search-forward "\\n\\\\{3,\\\\}" nil t)
(replace-match "\\n\\n"))
(when (buffer-modified-p) (save-buffer 0)))))
67 changes: 13 additions & 54 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,20 @@ EMACS ?= emacs
SED ?= sed
FILES = $(filter-out evil-test-helpers.el evil-tests.el evil-pkg.el,$(wildcard evil*.el))
VERSION := $(shell $(SED) -ne '/define-package/,$$p' evil-pkg.el | $(SED) -ne '/^\s*"[[:digit:]]\+\(\.[[:digit:]]\+\)*"\s*$$/ s/^.*"\(.*\)".*$$/\1/p')
ELPAPKG = evil-$(VERSION)
PROFILER =
DOC = doc
TAG =
EASK ?= eask

ELCFILES = $(FILES:.el=.elc)

.PHONY: all compile compile-batch docstrings doc clean tests test emacs term terminal profiler indent elpa version
.PHONY: all compile docstrings doc clean tests test emacs term terminal profiler indent elpa version

# Byte-compile Evil.
all: compile
compile: $(ELCFILES)

.depend: $(FILES)
@echo Compute dependencies
@rm -f .depend
@for f in $(FILES); do \
$(SED) -n "s/ *(require '\(evil-[^)]*\).*)/$${f}c: \1.elc/p" $$f >> .depend;\
done

-include .depend

$(ELCFILES): %.elc: %.el
$(EMACS) --batch -Q -L . -f batch-byte-compile $<

# Byte-compile all files in one batch. This is faster than
# compiling each file in isolation, but also less stringent.
compile-batch: clean
$(EMACS) --batch -Q -L . -f batch-byte-compile ${FILES}
compile:
$(EASK) compile

# Documentation.
docstrings:
Expand All @@ -45,25 +30,20 @@ info: doc

# Delete byte-compiled files etc.
clean:
rm -f *~
rm -f \#*\#
rm -f *.elc
rm -f .depend
@$(MAKE) -C doc clean
$(EASK) clean all

# Run tests.
# The TAG variable may specify a test tag or a test name:
# make test TAG=repeat
# This will only run tests pertaining to the repeat system.
test:
$(EMACS) -nw -Q --batch -L . -l evil-tests.el \
--eval "(evil-tests-initialize '(${TAG}) '(${PROFILER}))"
$(EASK) run command test

# Byte-compile Evil and run all tests.
tests: compile
$(EMACS) -nw -Q -L . -l evil-tests.el \
--eval "(evil-tests-initialize '(${TAG}) '(${PROFILER}))"
rm -f *.elc .depend
$(EASK) run command test
$(EASK) clean elc
rm -f .depend

# Load Evil in a fresh instance of Emacs and run all tests.
emacs:
Expand All @@ -74,42 +54,21 @@ emacs:
# Load Evil in a terminal Emacs and run all tests.
term: terminal
terminal:
$(EMACS) -nw -Q -L . -l evil-tests.el \
--eval "(evil-mode 1)" \
--eval "(evil-tests-initialize '(${TAG}) '(${PROFILER}) t)"
$(EASK) run command terminal

# Run all tests with profiler.
profiler:
$(EMACS) --batch -Q -L . -l evil-tests.el \
--eval "(evil-tests-initialize '(${TAG}) (or '(${PROFILER}) t))"
$(EASK) run command profiler

# Re-indent all Evil code.
# Loads Evil into memory in order to indent macros properly.
# Also removes trailing whitespace, tabs and extraneous blank lines.
indent: clean
$(EMACS) --batch --eval '(setq vc-handled-backends nil)' ${FILES} evil-tests.el -Q -L . -l evil-tests.el \
--eval "(dolist (buffer (reverse (buffer-list))) \
(when (buffer-file-name buffer) \
(set-buffer buffer) \
(message \"Indenting %s\" (current-buffer)) \
(setq-default indent-tabs-mode nil) \
(untabify (point-min) (point-max)) \
(indent-region (point-min) (point-max)) \
(delete-trailing-whitespace) \
(untabify (point-min) (point-max)) \
(goto-char (point-min)) \
(while (re-search-forward \"\\n\\\\{3,\\\\}\" nil t) \
(replace-match \"\\n\\n\")) \
(when (buffer-modified-p) (save-buffer 0))))"
$(EASK) run command indent

# Create an ELPA package.
elpa:
@echo "Creating ELPA package $(ELPAPKG).tar"
@rm -rf ${ELPAPKG}
@mkdir ${ELPAPKG}
@cp $(FILES) COPYING evil-pkg.el ${ELPAPKG}
@tar cf ${ELPAPKG}.tar ${ELPAPKG}
@rm -rf ${ELPAPKG}
$(EASK) package

# Change the version using make VERSION=x.y.z
version:
Expand Down
6 changes: 4 additions & 2 deletions evil-pkg.el
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
(define-package
"evil"
"1.15.0"
"Extensible Vi layer for Emacs."
"Extensible vi layer"
'((emacs "24.1")
(goto-chg "1.6")
(cl-lib "0.5")))
(cl-lib "0.5"))
:url "https://github.com/emacs-evil/evil"
:keywords '("emulations"))
5 changes: 4 additions & 1 deletion evil-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -9659,7 +9659,8 @@ parameter set."
("3\C-i") ;; even after jumping forward 3 times it can't get past the 3rd z
"z z [z] z z z z z"))
(ert-info ("Jump across files")
(let ((temp-file (make-temp-file "evil-test-")))
(let ((temp-file "evil-test-"))
(make-temp-file "evil-test-")
(unwind-protect
(evil-test-buffer
"[z] z z z z z z"
Expand All @@ -9676,6 +9677,8 @@ parameter set."

(ert-deftest evil-test-find-file ()
:tags '(evil jumps)
(when (memq system-type '(cygwin windows-nt ms-dos))
(ert-skip "[INFO] GitHub Actions has different userprofile name."))
(ert-info ("Find file at point (normal state)")
(evil-with-temp-file file-name ""
(evil-test-buffer
Expand Down

0 comments on commit b767c48

Please sign in to comment.