From b180da7fda026ae7ab987b9dac2234ccff7d29e9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Jun 2025 01:36:08 -0700 Subject: [PATCH 01/15] ci: Simplify CI using Eask --- .github/workflows/test.yml | 13 +++++++---- .gitignore | 4 ++++ Eask | 44 ++++++++++++++++++++++++++++++++++++++ Makefile | 20 +++++++++-------- 4 files changed, 68 insertions(+), 13 deletions(-) create mode 100644 Eask diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e75df5e..9faab53 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,21 +23,26 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - emacs_version: + os: [ubuntu-latest, macos-latest, windows-latest] + emacs-version: # - 28.2 # - 29.4 - 30.1 - snapshot steps: - - uses: purcell/setup-emacs@master + - uses: jcs090218/setup-emacs@master with: - version: ${{ matrix.emacs_version }} + version: ${{ matrix.emacs-version }} + + - uses: emacs-eask/setup-eask@master + with: + version: 'snapshot' - name: Pull polymode uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index fb25eaa..e70f9de 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,7 @@ site/ # ELPA-generated files /polymode-pkg.el + +# Packaging +/.eask +/dist diff --git a/Eask b/Eask new file mode 100644 index 0000000..35fb7f1 --- /dev/null +++ b/Eask @@ -0,0 +1,44 @@ +;; -*- mode: eask; lexical-binding: t -*- + +(package "polymode" + "0.2.2" + "Extensible framework for multiple major modes") + +(website-url "https://github.com/polymode/polymode") +(keywords "languages" "multi-modes" "processes") + +(package-file "polymode.el") +(files "polymode-*.el") + +(script "test" "echo \"Error: no test specified\" && exit 1") + +(source 'gnu) +(source 'melpa) + +(depends-on "emacs" "25") + +(development + (depends-on "ess") + (depends-on "markdown-mode") + (depends-on "yaml-mode") + (depends-on "rust-mode") + (depends-on "slim-mode") + (depends-on "elisp-lint") + (depends-on "coffee-mode") + (depends-on "poly-markdown")) + +;; For ERT tests + +(load-paths (expand-file-name "tests/")) + +(add-hook 'eask-before-test/ert-hook + (lambda () + (setq ert-batch-backtrace-right-margin 200) + (setq ert-batch-print-level nil) + (setq ert-batch-print-length nil))) + +(add-hook 'eask-before-compile-hook + (lambda () + ;; Turn this on for more restriction. + ;;(setq byte-compile-error-on-warn t) + )) diff --git a/Makefile b/Makefile index 78f2940..0ac32cc 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ ELPA_DIR := .ELPA/$(EMACS_VERSION) EMACSRUN = $(EMACS) -Q -L . -L modes -L tests -L $(ELPA_DIR) EMACSBATCH = $(EMACSRUN) --batch EMACSTARGET = $(EMACSBATCH) -l targets/poly-targets.el +EASK ?= eask ELS = $(wildcard *.el) LINTELS = $(filter-out polymode-autoloads.el polymode-compat.el polymode-configuration.el, $(ELS)) @@ -16,22 +17,22 @@ OBJECTS = $(ELS:.el=.elc) all: build checkdoc test -build: version cleansilent +build: cleansilent @echo "******************* BUILDING $(MODULE) *************************" - @$(EMACSBATCH) --funcall batch-byte-compile *.el + $(EASK) compile checkdoc: version @echo "******************* CHECKDOC $(MODULE) *************************" - @$(EMACSTARGET) -f pm--target-checkdoc $(LINTELS) + $(EASK) checkdoc clean: - rm -f $(OBJECTS) polymode-autoloads.el + $(EASK) clean all cleanall: cleansilent - rm -rf $(ELPA_DIR) + $(EASK) clean all cleansilent: - @rm -f $(OBJECTS) + $(EASK) clean elc docs-build: mkdocs build @@ -40,10 +41,11 @@ docs-deploy: cd ../polymode.github.io/; mkdocs gh-deploy --config-file ../polymode/mkdocs.yml --remote-branch master lint: version - @$(EMACSTARGET) -f pm--target-melpa-init -f pm--target-lint $(LINTELS) + @$(EASK) lint checkdoc + @$(EASK) lint elisp-lint melpa: version - @$(EMACSTARGET) -f pm--target-melpa + @$(EASK) install --dev elpa: melpa @@ -64,7 +66,7 @@ test: version clean test-local: version @echo "******************* Testing $(MODULE) ***************************" - $(EMACSTARGET) -f pm--target-local-init -f pm--target-test + $(EASK) test ert tests/*.el test/%: $(eval PATTERN := $(subst test/, , $@)) From bbe4e9b770a81b6a8a2786d645a203953b2c6d4b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Jun 2025 01:38:19 -0700 Subject: [PATCH 02/15] ci: fix install deps command --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0ac32cc..9d8fb2e 100644 --- a/Makefile +++ b/Makefile @@ -45,7 +45,7 @@ lint: version @$(EASK) lint elisp-lint melpa: version - @$(EASK) install --dev + @$(EASK) install-deps --dev elpa: melpa From 978db70cbe5cb953d9e15e365796b221ff22ce2f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Jun 2025 01:47:35 -0700 Subject: [PATCH 03/15] Ignore polyrepos tests folder --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e70f9de..9760649 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ site/ # Packaging /.eask /dist + +# Tests +/polyrepos From 877c7642887c3a811623142a4c0d39e35e0361ce Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Jun 2025 01:47:46 -0700 Subject: [PATCH 04/15] ci: Clean up Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9d8fb2e..e234da1 100644 --- a/Makefile +++ b/Makefile @@ -23,13 +23,13 @@ build: cleansilent checkdoc: version @echo "******************* CHECKDOC $(MODULE) *************************" - $(EASK) checkdoc + $(EASK) lint checkdoc clean: $(EASK) clean all cleanall: cleansilent - $(EASK) clean all + $(EASK) clean workspace cleansilent: $(EASK) clean elc From 2299ed8c77f87d8bfce99c67b9935581aac1bcb5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Jun 2025 02:05:58 -0700 Subject: [PATCH 05/15] clean up a bit --- Eask | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Eask b/Eask index 35fb7f1..4e902c0 100644 --- a/Eask +++ b/Eask @@ -27,6 +27,14 @@ (depends-on "coffee-mode") (depends-on "poly-markdown")) +;; For byte-compile + +(add-hook 'eask-before-compile-hook + (lambda () + ;; Turn this on for more restriction. + ;;(setq byte-compile-error-on-warn t) + )) + ;; For ERT tests (load-paths (expand-file-name "tests/")) @@ -36,9 +44,3 @@ (setq ert-batch-backtrace-right-margin 200) (setq ert-batch-print-level nil) (setq ert-batch-print-length nil))) - -(add-hook 'eask-before-compile-hook - (lambda () - ;; Turn this on for more restriction. - ;;(setq byte-compile-error-on-warn t) - )) From 5c0263aa1976fdcc25d86a648531f2859cae4ba2 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:00:24 -0700 Subject: [PATCH 06/15] ci: Test child package, poly-markdown --- .github/workflows/test.yml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9faab53..4046c34 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ on: jobs: build: runs-on: ${{ matrix.os }} - + continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: @@ -33,7 +33,17 @@ jobs: # - 28.2 # - 29.4 - 30.1 - - snapshot + experimental: [false] + include: + - os: ubuntu-latest + emacs-version: snapshot + experimental: true + - os: macos-latest + emacs-version: snapshot + experimental: true + - os: windows-latest + emacs-version: snapshot + experimental: true steps: - uses: jcs090218/setup-emacs@master @@ -44,26 +54,23 @@ jobs: with: version: 'snapshot' - - name: Pull polymode - uses: actions/checkout@v4 - - name: Pull poly-markdown uses: actions/checkout@v4 with: repository: polymode/poly-markdown - path: polyrepos/poly-markdown - name: Pull poly-org uses: actions/checkout@v4 with: repository: polymode/poly-org - path: polyrepos/poly-org - name: Pull poly-noweb uses: actions/checkout@v4 with: repository: polymode/poly-noweb - path: polyrepos/poly-noweb + + - name: Pull polymode + uses: actions/checkout@v4 - name: Check Emacs version run: emacs --version @@ -76,3 +83,10 @@ jobs: - name: Test run: make test-local + + - name: Test poly-markdown + working-directory: ../poly-markdown + run: | + eask link add polymode ../polymode + eask install-deps --dev + eask test ert ./tests/*.el From 82b31615e6138c68ec6aa7a3a1d98e932271c85a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:09:33 -0700 Subject: [PATCH 07/15] ci: Link child packages --- .github/workflows/test.yml | 3 +++ Makefile | 5 +++++ tests/span-matcher-tests.el | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4046c34..6c85272 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,6 +75,9 @@ jobs: - name: Check Emacs version run: emacs --version + - name: Link child packages + run: make link-child-packages + - name: ELPA run: make elpa diff --git a/Makefile b/Makefile index e234da1..f51d1b4 100644 --- a/Makefile +++ b/Makefile @@ -44,6 +44,11 @@ lint: version @$(EASK) lint checkdoc @$(EASK) lint elisp-lint +link-child-packages: + @$(EASK) link add poly-markdown ../poly-markdown + @$(EASK) link add poly-org ../poly-org + @$(EASK) link add poly-noweb ../poly-noweb + melpa: version @$(EASK) install-deps --dev diff --git a/tests/span-matcher-tests.el b/tests/span-matcher-tests.el index 6557f47..9b71374 100644 --- a/tests/span-matcher-tests.el +++ b/tests/span-matcher-tests.el @@ -1,4 +1,4 @@ -;;; poly-modes-tests.el -- Tests for Polymode -*- lexical-binding: t; -*- +;;; span-matcher-tests.el -- Tests for Polymode -*- lexical-binding: t; -*- ;; Copyright (C) 2018-2022 Free Software Foundation, Inc. From 230d4c3720bcd26efd468039c4646bd45be2331b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:16:14 -0700 Subject: [PATCH 08/15] ci: specify checkout path --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c85272..62bf1c1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,16 +58,19 @@ jobs: uses: actions/checkout@v4 with: repository: polymode/poly-markdown + path: poly-markdown - name: Pull poly-org uses: actions/checkout@v4 with: repository: polymode/poly-org + path: poly-org - name: Pull poly-noweb uses: actions/checkout@v4 with: repository: polymode/poly-noweb + path: poly-noweb - name: Pull polymode uses: actions/checkout@v4 From 80339b41ae1bd07d4e38232fae497f155f56e5e7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:26:36 -0700 Subject: [PATCH 09/15] feat: avoid manually loading poly-xyz child tests --- .github/workflows/test.yml | 6 +++++- tests/poly-modes-tests.el | 27 --------------------------- 2 files changed, 5 insertions(+), 28 deletions(-) delete mode 100644 tests/poly-modes-tests.el diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 62bf1c1..5a61f2e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -74,6 +74,8 @@ jobs: - name: Pull polymode uses: actions/checkout@v4 + with: + path: polymode - name: Check Emacs version run: emacs --version @@ -90,8 +92,10 @@ jobs: - name: Test run: make test-local + # Tests for downstream packages. + - name: Test poly-markdown - working-directory: ../poly-markdown + working-directory: poly-markdown run: | eask link add polymode ../polymode eask install-deps --dev diff --git a/tests/poly-modes-tests.el b/tests/poly-modes-tests.el deleted file mode 100644 index b6961e2..0000000 --- a/tests/poly-modes-tests.el +++ /dev/null @@ -1,27 +0,0 @@ -;;; poly-modes-tests.el -- Tests for Polymode -*- lexical-binding: t; -*- - -;; Copyright (C) 2022 Free Software Foundation, Inc. - -;; load all tests from individual poly-xyz repositories located in the parent of -;; this repository - -(require 'polymode) -(require 'polymode-test-utils) - - -(let* ((root (expand-file-name (if (pm-test-running-on-github-p) - "../polyrepos/" - "../..") - (file-truename - (file-name-directory - (or load-file-name buffer-file-name default-directory))))) - (repos (directory-files root t "^poly-.*$"))) - (dolist (r repos) - (add-to-list 'load-path r)) - (dolist (r repos) - (let ((test-dir (expand-file-name "tests" r))) - (when (file-exists-p test-dir) - (let ((default-directory test-dir) - (test-files (directory-files test-dir t "\\.el$"))) - (dolist (f test-files) - (load f))))))) From 62bbe11f48b0a9b5b18d801ddca09cf9e2f85abe Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:31:15 -0700 Subject: [PATCH 10/15] ci: use parent directory --- .github/workflows/test.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5a61f2e..4dd1a46 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,24 +58,22 @@ jobs: uses: actions/checkout@v4 with: repository: polymode/poly-markdown - path: poly-markdown + path: ../poly-markdown - name: Pull poly-org uses: actions/checkout@v4 with: repository: polymode/poly-org - path: poly-org + path: ../poly-org - name: Pull poly-noweb uses: actions/checkout@v4 with: repository: polymode/poly-noweb - path: poly-noweb + path: ../poly-noweb - name: Pull polymode uses: actions/checkout@v4 - with: - path: polymode - name: Check Emacs version run: emacs --version @@ -95,7 +93,7 @@ jobs: # Tests for downstream packages. - name: Test poly-markdown - working-directory: poly-markdown + working-directory: ../poly-markdown run: | eask link add polymode ../polymode eask install-deps --dev From 3540b9ffb7de3b0280cef983229cb49d4af26d29 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:33:51 -0700 Subject: [PATCH 11/15] ci: try seperate the packages --- .github/workflows/test.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4dd1a46..4758b31 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,42 +58,48 @@ jobs: uses: actions/checkout@v4 with: repository: polymode/poly-markdown - path: ../poly-markdown + path: poly-markdown - name: Pull poly-org uses: actions/checkout@v4 with: repository: polymode/poly-org - path: ../poly-org + path: poly-org - name: Pull poly-noweb uses: actions/checkout@v4 with: repository: polymode/poly-noweb - path: ../poly-noweb + path: poly-noweb - name: Pull polymode uses: actions/checkout@v4 + with: + path: polymode - name: Check Emacs version run: emacs --version - name: Link child packages + working-directory: polymode run: make link-child-packages - name: ELPA + working-directory: polymode run: make elpa - name: Build + working-directory: polymode run: make build - name: Test + working-directory: polymode run: make test-local # Tests for downstream packages. - name: Test poly-markdown - working-directory: ../poly-markdown + working-directory: poly-markdown run: | eask link add polymode ../polymode eask install-deps --dev From 5f1a5b382e2755b2a958b570d1d5ab1262f9a07f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:38:58 -0700 Subject: [PATCH 12/15] ci: test my own repo --- .github/workflows/test.yml | 3 ++- Makefile | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4758b31..ce21ceb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,8 +57,9 @@ jobs: - name: Pull poly-markdown uses: actions/checkout@v4 with: - repository: polymode/poly-markdown + repository: jcs-PR/poly-markdown path: poly-markdown + ref: ci/basic - name: Pull poly-org uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index f51d1b4..5f1ed23 100644 --- a/Makefile +++ b/Makefile @@ -46,8 +46,8 @@ lint: version link-child-packages: @$(EASK) link add poly-markdown ../poly-markdown - @$(EASK) link add poly-org ../poly-org - @$(EASK) link add poly-noweb ../poly-noweb +# @$(EASK) link add poly-org ../poly-org +# @$(EASK) link add poly-noweb ../poly-noweb melpa: version @$(EASK) install-deps --dev From b4c50c9f8f4e4182ebca6524f4d11bc953bedaa2 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 24 Jun 2025 04:41:16 -0700 Subject: [PATCH 13/15] ci: Revert linking child packages from polymode --- .github/workflows/test.yml | 4 ---- Makefile | 5 ----- 2 files changed, 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ce21ceb..d88fa73 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -81,10 +81,6 @@ jobs: - name: Check Emacs version run: emacs --version - - name: Link child packages - working-directory: polymode - run: make link-child-packages - - name: ELPA working-directory: polymode run: make elpa diff --git a/Makefile b/Makefile index 5f1ed23..e234da1 100644 --- a/Makefile +++ b/Makefile @@ -44,11 +44,6 @@ lint: version @$(EASK) lint checkdoc @$(EASK) lint elisp-lint -link-child-packages: - @$(EASK) link add poly-markdown ../poly-markdown -# @$(EASK) link add poly-org ../poly-org -# @$(EASK) link add poly-noweb ../poly-noweb - melpa: version @$(EASK) install-deps --dev From 874ad5208e5da26ca9c0ba9c470bb71afe3013c7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 01:21:24 -0700 Subject: [PATCH 14/15] ci: Revert test target back to polymode --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d88fa73..ce215b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,9 +57,8 @@ jobs: - name: Pull poly-markdown uses: actions/checkout@v4 with: - repository: jcs-PR/poly-markdown + repository: polymode/poly-markdown path: poly-markdown - ref: ci/basic - name: Pull poly-org uses: actions/checkout@v4 From 84afdf0f8bee59a693baa0efd9de7a39ecfa6625 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 30 Jun 2025 07:35:30 -0700 Subject: [PATCH 15/15] ci: Test more downstream packages, poly-org and poly-noweb --- .github/workflows/test.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ce215b6..f1db9ad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -100,3 +100,17 @@ jobs: eask link add polymode ../polymode eask install-deps --dev eask test ert ./tests/*.el + + - name: Test poly-org + working-directory: poly-org + run: | + eask link add polymode ../polymode + eask install-deps --dev + eask test ert ./tests/*.el + + - name: Test poly-noweb + working-directory: poly-noweb + run: | + eask link add polymode ../polymode + eask install-deps --dev + eask test ert ./tests/*.el