diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..ab3ec24 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,74 @@ +name: Tests + +on: + pull_request: + +jobs: + tests: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + php: ['8.2', '8.3', '8.4'] + + name: PHP ${{ matrix.php }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + coverage: none + + - name: Cache Composer downloads + uses: actions/cache@v4 + with: + path: ~/.composer/cache/files + key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.lock') }} + restore-keys: | + ${{ runner.os }}-php-${{ matrix.php }}-composer- + + - name: Resolve Composer dependencies + run: composer update --prefer-dist --no-interaction --no-progress + + - name: Run tests + run: ./vendor/bin/pest --parallel --processes=24 + + php81-smoke: + runs-on: ubuntu-latest + + name: PHP 8.1 smoke + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + coverage: none + + - name: Cache Composer downloads + uses: actions/cache@v4 + with: + path: ~/.composer/cache/files + key: ${{ runner.os }}-php-8.1-composer-${{ hashFiles('composer.lock') }} + restore-keys: | + ${{ runner.os }}-php-8.1-composer- + + - name: Install runtime dependencies + run: composer install --no-dev --prefer-dist --no-interaction --no-progress + + - name: Lint package source + run: | + php -l helper.php + find src config -name '*.php' -print0 | xargs -0 -n 1 php -l + + - name: Bootstrap package autoload + run: | + php -r 'require "vendor/autoload.php"; exit((function_exists("first_value") && enum_exists("Midnite81\\Core\\Enums\\DateFormat")) ? 0 : 1);'