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

Reply via email to