make sure we always render at least one file input #111
This file contains 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: Tests | |
on: | |
push: | |
branches: | |
- main | |
- master | |
pull_request: | |
schedule: | |
- cron: '0 2 * * 0' # Weekly on Sundays at 02:00 | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set Up Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
vendor | |
key: php-cs-fixer-${{ hashFiles('composer.lock') }} | |
- name: Validate composer.json and composer.lock | |
run: composer validate | |
- name: Install PHP dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Set up PHP | |
uses: shivammathur/setup-php@master | |
with: | |
php-version: 8.3 | |
- name: Format | |
run: ./vendor/bin/php-cs-fixer fix && git diff --exit-code | |
static: | |
name: Static Analysis | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Set Up Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
vendor | |
key: phpstan-${{ hashFiles('composer.lock') }} | |
- name: Install PHP dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: PHPStan | |
uses: php-actions/phpstan@v3 | |
with: | |
configuration: tests/phpstan.neon | |
memory_limit: 1G | |
upgrade: | |
name: Upgrade from 2.9 ${{ matrix.database }} | |
strategy: | |
matrix: | |
php: ['8.3'] | |
database: ['pgsql', 'mysql', 'sqlite'] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Travel to past | |
# is there a way to programatically get "the most recent | |
# tagged minor version of the previous major version"? | |
run: git checkout branch-2.9 | |
- name: Set Up Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
vendor | |
key: vendor-${{ matrix.php }}-${{ hashFiles('composer.lock') }} | |
- name: Set up PHP | |
uses: shivammathur/setup-php@master | |
with: | |
php-version: ${{ matrix.php }} | |
- name: Set up database | |
run: ./tests/setup-db.sh "${{ matrix.database }}" | |
- name: Install PHP dependencies | |
run: composer install --no-progress | |
- name: Install old version | |
run: | | |
php index.php | |
cat data/config/shimmie.conf.php | |
- name: Check old version works | |
run: | | |
php index.php get-page / > old.out | |
grep -q 'Welcome to Shimmie 2.9' old.out || cat old.out | |
rm -f old.out | |
- name: Upgrade | |
run: | | |
git checkout ${{ github.sha }} | |
composer install --no-progress | |
php index.php db-upgrade | |
- name: Check new version works | |
run: | | |
php index.php page:get / > new.out | |
grep -q 'Welcome to Shimmie 2.10' new.out || cat new.out | |
rm -f new.out | |
test: | |
name: PHP ${{ matrix.php }} / DB ${{ matrix.database }} | |
strategy: | |
fail-fast: false | |
matrix: | |
php: ['8.1', '8.2', '8.3'] | |
database: ['pgsql', 'mysql', 'sqlite'] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Set Up Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
vendor | |
key: vendor-${{ matrix.php }}-${{ hashFiles('composer.lock') }} | |
- name: Set up PHP | |
uses: shivammathur/setup-php@master | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: pcov | |
extensions: mbstring | |
ini-file: development | |
- name: Set up database | |
run: ./tests/setup-db.sh "${{ matrix.database }}" | |
- name: Check versions | |
run: php -v && composer -V | |
- name: Validate composer.json and composer.lock | |
run: composer validate | |
- name: Install PHP dependencies | |
run: composer install --no-progress | |
- name: Run test suite | |
run: | | |
if [[ "${{ matrix.php }}" == "8.3" ]]; then | |
vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover=data/coverage.clover | |
else | |
vendor/bin/phpunit --configuration tests/phpunit.xml | |
fi |