Merge pull request #3 from drzo/copilot/create-github-actions-workflows #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Elisp Test | |
| on: | |
| push: | |
| branches: [ main, develop, "copilot/**" ] | |
| paths: | |
| - '**.el' | |
| - 'test/**' | |
| - '.github/workflows/elisp-test.yml' | |
| - 'Cask' | |
| pull_request: | |
| branches: [ main, develop ] | |
| paths: | |
| - '**.el' | |
| - 'test/**' | |
| - '.github/workflows/elisp-test.yml' | |
| - 'Cask' | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| emacs-version: ['29.1', '28.2', '27.2'] | |
| fail-fast: false | |
| steps: | |
| - name: Set environment variables | |
| run: echo "ACTIONS_ALLOW_UNSECURE_COMMANDS=true" >> $GITHUB_ENV | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Emacs | |
| uses: purcell/setup-emacs@master | |
| with: | |
| version: ${{ matrix.emacs-version }} | |
| - name: Setup Cask | |
| uses: conao3/setup-cask@master | |
| with: | |
| version: snapshot | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install Elisp dependencies | |
| run: cask install | |
| - name: Install Node.js test dependencies | |
| run: npm ci | |
| continue-on-error: true | |
| - name: Run ERT tests | |
| run: cask exec ert-runner | |
| continue-on-error: true | |
| - name: Run individual test files | |
| run: | | |
| for test_file in test/*-test.el; do | |
| echo "Running $test_file..." | |
| cask emacs --batch -L . -l "$test_file" \ | |
| -f ert-run-tests-batch-and-exit || echo "Warning: $test_file had failures" | |
| done | |
| continue-on-error: true | |
| - name: Test OpenCog modules | |
| run: | | |
| cask emacs --batch -L . \ | |
| --eval "(progn \ | |
| (require 'aichat-opencog) \ | |
| (require 'aichat-ecan) \ | |
| (require 'aichat-pln) \ | |
| (require 'aichat-moses) \ | |
| (require 'aichat-esn) \ | |
| (message \"OpenCog modules loaded successfully\"))" | |
| - name: Test SkinTwin modules | |
| run: | | |
| cask emacs --batch -L . \ | |
| --eval "(progn \ | |
| (require 'skintwin) \ | |
| (require 'skintwin-integration) \ | |
| (require 'skintwin-mode) \ | |
| (message \"SkinTwin modules loaded successfully\"))" | |
| - name: Generate test coverage report | |
| if: matrix.emacs-version == '29.1' | |
| run: | | |
| cask emacs --batch -L . \ | |
| --eval "(require 'undercover)" \ | |
| --eval "(undercover \"*.el\" (:exclude \"test/*.el\"))" \ | |
| -f ert-run-tests-batch-and-exit | |
| continue-on-error: true | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-emacs-${{ matrix.emacs-version }} | |
| path: | | |
| test-results/ | |
| coverage/ | |
| retention-days: 30 | |
| integration-test: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Emacs | |
| uses: purcell/setup-emacs@master | |
| with: | |
| version: '29.1' | |
| - name: Setup Cask | |
| uses: conao3/setup-cask@master | |
| with: | |
| version: snapshot | |
| - name: Install dependencies | |
| run: cask install | |
| - name: Test Org-mode integration | |
| run: | | |
| cask emacs --batch -L . \ | |
| --eval "(require 'aichat-opencog-org)" \ | |
| --eval "(find-file \"README.org\")" \ | |
| --eval "(message \"Org integration test completed\")" | |
| - name: Test full system initialization | |
| run: | | |
| cask emacs --batch -L . \ | |
| --eval "(progn \ | |
| (require 'aichat) \ | |
| (require 'skintwin) \ | |
| (message \"System initialized successfully\"))" |