diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e75df5e..f1db9ad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,51 +23,94 @@ on: jobs: build: - runs-on: ubuntu-latest - + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: - emacs_version: + os: [ubuntu-latest, macos-latest, windows-latest] + emacs-version: # - 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: purcell/setup-emacs@master + - uses: jcs090218/setup-emacs@master with: - version: ${{ matrix.emacs_version }} + version: ${{ matrix.emacs-version }} - - name: Pull polymode - uses: actions/checkout@v4 + - uses: emacs-eask/setup-eask@master + with: + version: 'snapshot' - name: Pull poly-markdown uses: actions/checkout@v4 with: repository: polymode/poly-markdown - path: polyrepos/poly-markdown + path: poly-markdown - name: Pull poly-org uses: actions/checkout@v4 with: repository: polymode/poly-org - path: polyrepos/poly-org + path: poly-org - name: Pull poly-noweb uses: actions/checkout@v4 with: repository: polymode/poly-noweb - path: polyrepos/poly-noweb + path: poly-noweb + + - name: Pull polymode + uses: actions/checkout@v4 + with: + path: polymode - name: Check Emacs version run: emacs --version - 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 + run: | + 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 diff --git a/.gitignore b/.gitignore index fb25eaa..9760649 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,10 @@ site/ # ELPA-generated files /polymode-pkg.el + +# Packaging +/.eask +/dist + +# Tests +/polyrepos diff --git a/Eask b/Eask new file mode 100644 index 0000000..4e902c0 --- /dev/null +++ b/Eask @@ -0,0 +1,46 @@ +;; -*- 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 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/")) + +(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))) diff --git a/Makefile b/Makefile index 78f2940..e234da1 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) lint checkdoc clean: - rm -f $(OBJECTS) polymode-autoloads.el + $(EASK) clean all cleanall: cleansilent - rm -rf $(ELPA_DIR) + $(EASK) clean workspace 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-deps --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/, , $@)) 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))))))) 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.