Skip to content

Support multiple selectable themes per package #4189

Support multiple selectable themes per package

Support multiple selectable themes per package #4189

name: Package tests
on:
pull_request:
push:
branches: ['master']
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ATOM_JASMINE_REPORTER: list
jobs:
setup:
name: Build Editor
if: |
!startsWith(github.event.pull_request.title, '[skip-ci]') &&
!startsWith(github.event.pull_request.title, '[skip-package-ci]')
runs-on: ubuntu-latest
steps:
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y libx11-dev libxkbfile-dev pkg-config libsecret-1-dev libncursesw5-dev libgdbm-dev libc6-dev libffi-dev libwayland-dev libxkbcommon-dev libxkbcommon-x11-dev libxkbcommon0 xkb-data
- name: Checkout the latest code
uses: actions/checkout@v6
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
- name: Install Python setuptools
# This is needed for Python 3.12+, since many versions of node-gyp
# are incompatible with Python 3.12+, which no-longer ships 'distutils'
# out of the box. 'setuptools' package provides 'distutils'.
run: python3 -m pip install setuptools
- name: Install Dependencies
run: yarn install --ignore-engines || yarn install --ignore-engines
- name: Build Dependencies
run: yarn build
- name: build dependencies
run: yarn build:apm
- name: build the editor
run: (yarn dist deb || yarn dist deb) && mv binaries/*deb pulsar.deb
- name: Cache pulsar
id: cache-pulsar
uses: actions/cache@v5
with:
path: pulsar.deb
key: pulsar-${{ github.sha }}
- name: Cache dependencies
id: cache-dependencies
uses: actions/cache@v5
with:
path: |
node_modules
packages
key: dependencies-${{ github.sha }}
test:
name: Package
needs: setup
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 8
matrix:
include:
# Package's that are commented out are core packages, but do not contain any tests
#- package: "atom-dark-syntax"
#- package: "atom-dark-ui"
#- package: "atom-light-syntax"
#- package: "atom-light-ui"
#- package: "base16-tomorrow-dark-theme"
#- package: "base16-tomorrow-light-theme"
- package: "one-dark-ui"
- package: "one-light-ui"
#- package: "one-dark-syntax"
#- package: "one-light-syntax"
#- package: "solarized-dark-syntax"
#- package: "solarized-light-syntax"
- package: "about"
- package: "archive-view"
- package: "autocomplete-atom-api"
- package: "autocomplete-css"
- package: "autocomplete-html"
- package: "autocomplete-plus"
- package: "autocomplete-snippets"
- package: "autoflow"
- package: "autosave"
- package: "background-tips"
- package: "bookmarks"
- package: "bracket-matcher"
- package: "command-palette"
dir: test
allow-failure: true # TODO
- package: "dalek"
dir: test
- package: "deprecation-cop"
- package: "dev-live-reload"
- package: "encoding-selector"
- package: "find-and-replace"
- package: "fuzzy-finder"
- package: "github"
dir: test
allow-failure: true # TODO
- package: "git-diff"
- package: "go-to-line"
- package: "grammar-selector"
- package: "image-view"
- package: "incompatible-packages"
- package: "keybinding-resolver"
- package: "line-ending-selector"
- package: "link"
- package: "markdown-preview"
- package: "notifications"
- package: "open-on-github"
- package: "package-generator"
- package: "pulsar-updater"
- package: "settings-view"
- package: "snippets"
- package: "spell-check"
- package: "status-bar"
- package: "styleguide"
- package: "symbol-provider-ctags"
- package: "symbol-provider-tree-sitter"
- package: "symbols-view"
- package: "tabs"
- package: "timecop"
- package: "tree-view"
- package: "update-package-dependencies"
- package: "welcome"
dir: test
- package: "whitespace"
- package: "wrap-guide"
- package: "language-c"
- package: "language-clojure"
- package: "language-coffee-script"
- package: "language-csharp"
- package: "language-css"
- package: "language-gfm"
- package: "language-git"
- package: "language-go"
- package: "language-html"
- package: "language-hyperlink"
- package: "language-java"
- package: "language-javascript"
- package: "language-json"
- package: "language-less"
- package: "language-make"
- package: "language-mustache"
- package: "language-objective-c"
- package: "language-perl"
- package: "language-php"
#- package: "language-property-list" #TODO we should probably add tests for this package
- package: "language-python"
- package: "language-ruby"
- package: "language-ruby-on-rails"
#- package: "language-rust-bundled" #TODO we should probably add tests for this package
- package: "language-sass"
- package: "language-shellscript"
#- package: "language-source" #TODO we should probably add tests for this package
- package: "language-sql"
- package: "language-text"
- package: "language-todo"
- package: "language-toml"
- package: "language-typescript"
- package: "language-xml"
- package: "language-yaml"
steps:
- name: Checkout the latest code
uses: actions/checkout@v6
- name: Setup NodeJS
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
- name: Restore dependencies from Cache
id: restore-dependencies
uses: actions/cache@v5
with:
path: |
node_modules
packages
key: dependencies-${{ github.sha }}
- name: Install Dependencies
if: steps.restore-dependencies.outputs.cache-hit != 'true'
run: yarn install || yarn install
- name: Build Dependencies
if: steps.restore-dependencies.outputs.cache-hit != 'true'
run: yarn build || yarn build
- name: Restore pulsar from Cache
id: restore-pulsar
uses: actions/cache@v5
with:
path: pulsar.deb
key: pulsar-${{ github.sha }}
- name: Install Pulsar
run: sudo apt-get update && sudo apt-get install ./pulsar.deb
- name: Install xvfb
run: sudo apt-get install -y xvfb
- name: Install build dependencies
if: ${{ matrix.package == 'github' }}
# Install build tools needed for github & it's dependency keytar
run: sudo apt-get install -y libsecret-1-dev python3 python3-pip
- name: Optionally install package's `devDependencies`
# Running install for Pulsar ignores our installed package's dependencies.
# While we could define each package as a workspace, it seems simpler to detect
# if this particular package has a special `dir` defined. Most often, if we
# do, that means the package is using a custom `atomTestRunner` and requires
# it's `devDependencies` to be installed. So we run an additional install
# here if that's the case. Somewhat hacky, and may be worth refactoring in
# the future.
if: matrix.dir
continue-on-error: ${{ matrix.allow-failure || false }}
run: cd node_modules/${{ matrix.package }} && ppm install
- name: Run ${{ matrix.package }} Tests
continue-on-error: ${{ matrix.allow-failure || false }}
run: Xvfb :1 & cd node_modules/${{ matrix.package }} && DISPLAY=:1 pulsar --test ${{ matrix.dir || 'spec'}}