branch: elpa/evil
commit b767c48cbfe0587fc7e57eca7c023706622a5513
Author: Jen-Chieh Shen <[email protected]>
Commit: GitHub <[email protected]>
ci: Use Eask to test macos and windows (#1885)
* 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
---
.github/workflows/test.yml | 34 ++++++++++++++++++-----
.gitignore | 3 +++
Cask | 5 ----
Eask | 54 +++++++++++++++++++++++++++++++++++++
Makefile | 67 +++++++++-------------------------------------
evil-pkg.el | 6 +++--
evil-tests.el | 5 +++-
7 files changed, 106 insertions(+), 68 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f381f074e5..55bddaedb4 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,23 +2,41 @@ 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
@@ -26,6 +44,10 @@ jobs:
run: |
emacs --version
+ - uses: emacs-eask/setup-eask@master
+ with:
+ version: 'snapshot'
+
- name: Run tests
run: |
make test
diff --git a/.gitignore b/.gitignore
index 02299d9b1b..beb3809244 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,6 @@ typescript
/doc/build/*/
!/doc/build/texinfo/evil.texi
*.pyc
+
+/.eask
+/dist
diff --git a/Cask b/Cask
deleted file mode 100644
index faf23383b7..0000000000
--- a/Cask
+++ /dev/null
@@ -1,5 +0,0 @@
-(package "evil" "1.15.0" "Extensible Vi layer for Emacs.")
-
-(files "*.el")
-
-;; (depends-on "goto-chg" "0.6.3")
diff --git a/Eask b/Eask
new file mode 100644
index 0000000000..96de92362a
--- /dev/null
+++ b/Eask
@@ -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)))))
diff --git a/Makefile b/Makefile
index 2144a921b1..c5621ac89b 100644
--- a/Makefile
+++ b/Makefile
@@ -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:
@@ -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:
@@ -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:
diff --git a/evil-pkg.el b/evil-pkg.el
index 0ab78cb335..8a170ae872 100644
--- a/evil-pkg.el
+++ b/evil-pkg.el
@@ -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"))
diff --git a/evil-tests.el b/evil-tests.el
index 75b00ea182..39f3c30964 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -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"
@@ -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