Bump league/commonmark from 2.5.0 to 2.6.0 in the composer group #1187
Workflow file for this run
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: Test Suite | |
on: | |
push: | |
branches: [ "master", "develop", "stable", "release/**" ] | |
pull_request: | |
branches: [ "master", "develop", "stable", "release/**" ] | |
permissions: | |
statuses: write | |
jobs: | |
coverage-tests: | |
runs-on: ubuntu-latest | |
name: Run tests with coverage | |
outputs: | |
coverage: ${{ steps.coverage.outputs.coverage }} | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: "8.1" | |
coverage: xdebug | |
extensions: | |
fileinfo | |
- uses: actions/checkout@v4 | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: "${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}" | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install dependencies | |
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist | |
- name: Execute tests (Unit and Feature tests) via Pest | |
run: vendor/bin/pest --coverage --coverage-clover ./coverage.xml | |
# Todo: Could be extracted to a separate action | |
- name: Parse coverage report | |
id: coverage | |
run: | | |
php -r '$xml = simplexml_load_file("coverage.xml"); echo round($xml->project->metrics["coveredelements"] / $xml->project->metrics["elements"] * 100, 2);' > coverage.txt | |
echo "coverage=$(cat coverage.txt)" >> $GITHUB_OUTPUT | |
- name: Send GitHub status check | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
# We need to find the correct commit SHA as pull requests have a different SHA | |
if [ -z "${{ github.event.pull_request.head.sha }}" ]; then | |
COMMIT_SHA=${{ github.sha }} | |
else | |
COMMIT_SHA=${{ github.event.pull_request.head.sha }} | |
fi | |
gh api \ | |
--method POST \ | |
-H "Accept: application/vnd.github+json" \ | |
-H "X-GitHub-Api-Version: 2022-11-28" \ | |
/repos/hydephp/cli/statuses/${COMMIT_SHA} \ | |
-f "state=success" -f "target_url=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ | |
-f "description=Coverage is $(cat coverage.txt)%" -f "context=Code Coverage" | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
run-tests: | |
needs: coverage-tests | |
if: contains(github.event.pull_request.labels.*.name, 'halt-matrix-tests') != true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
php: [8.1, 8.2, 8.3] | |
runs-on: ${{ matrix.os }} | |
name: Run tests - ${{ matrix.os }} ${{ matrix.php }} | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: fileinfo | |
- uses: actions/checkout@v4 | |
- name: Validate composer.json and composer.lock | |
run: composer validate --strict | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: "${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}" | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install dependencies | |
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist | |
- name: Execute tests (Unit and Feature tests) via Pest | |
run: vendor/bin/pest | |
build-executable: | |
runs-on: ubuntu-latest | |
name: Build standalone executable | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: "${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}" | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install dependencies | |
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist | |
- name: Get build version | |
id: build-version | |
run: | | |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "Version: ${{ steps.build-version.outputs.sha_short }}" | |
- name: Build executable | |
run: php hyde standalone:build --build-version-suffix="${{ steps.build-version.outputs.sha_short }}" | |
- name: Verify executable | |
run: php builds/hyde | |
- name: Verify executable version | |
run: php builds/hyde --version | |
- name: Upload executable | |
uses: actions/upload-artifact@v4 | |
with: | |
name: hyde | |
path: builds/hyde | |
test-executable: | |
needs: build-executable | |
if: contains(github.event.pull_request.labels.*.name, 'halt-matrix-tests') != true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
php: [ 8.1, 8.2, 8.3 ] | |
runs-on: ${{ matrix.os }} | |
name: Test executable - ${{ matrix.os }} ${{ matrix.php }} | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: fileinfo | |
- uses: actions/checkout@v4 | |
with: | |
path: ./source | |
- uses: actions/download-artifact@v4 | |
with: | |
name: hyde | |
path: . | |
- name: Install standalone executable (Linux and macOS) | |
if: ${{ matrix.os != 'windows-latest' }} | |
run: | | |
sudo mv hyde /usr/local/bin/hyde | |
chmod +x /usr/local/bin/hyde | |
- name: Install standalone executable (Windows) | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
move hyde C:\Windows\System32\hyde.phar | |
echo '@php "%~dp0hyde.phar" %*' > hyde.cmd | |
move hyde.cmd C:\Windows\System32\hyde.cmd | |
- name: Verify executable is installed | |
run: hyde | |
- name: Test can run standalone | |
run: | | |
php ./source/tests/System/bin/Assert.php "str_contains(shell_exec('hyde --version --no-ansi'), 'HydePHP')" | |
php ./source/tests/System/bin/Assert.php "str_contains(shell_exec('hyde --version'), 'Experimental Standalone')" | |
php ./source/tests/System/bin/Assert.php "str_contains(shell_exec('hyde --no-ansi'), 'USAGE: <command> [options] [arguments]')" | |
php ./source/tests/System/bin/Assert.php "str_contains_all(shell_exec('hyde --no-ansi'), ['new', 'Create a new Hyde project.'])" | |
php ./source/tests/System/bin/Assert.php "! str_contains(shell_exec('hyde --no-ansi'), 'Build the standalone executable')" | |
- name: Test can run in anonymous project | |
run: | | |
cd ./source/tests/Fixtures/anonymous-project | |
php generate.php | |
php ../../System/bin/Assert.php "str_contains(shell_exec('hyde --version'), 'Experimental Standalone')" | |
php ../../System/bin/Assert.php "str_contains_all(shell_exec('hyde route:list'), ['_pages/demo.html', '_pages/index.blade.php', '_pages/about.md', '_posts/hello-world.md', '_docs/index.md'])" | |
- name: Test can build anonymous project | |
run: | | |
cd ./source/tests/Fixtures/anonymous-project | |
php ../../System/bin/Assert.php "str_contains(shell_exec('hyde build'), 'Your static site has been built!')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/posts/hello-world.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/docs/search.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/docs/search.json')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/docs/index.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/media/app.css')" | |
# php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/sitemap.xml')" # Requires a site URL in v1.6 | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/index.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/about.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/demo.html')" | |
php ../../System/bin/Assert.php "file_exists_and_is_not_empty('_site/feed.xml')" | |
- name: Test standalone proxies full project file | |
run: | | |
cd ./source/tests/Fixtures/full-project | |
php ../../System/bin/Assert.php "! str_contains(shell_exec('hyde --version'), 'Experimental Standalone')" | |
php ../../System/bin/Assert.php "str_contains(shell_exec('hyde'), 'File proxied by standalone')" | |
test-realtime-compiler: | |
needs: build-executable | |
runs-on: ubuntu-latest | |
name: Test realtime compiler through executable | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.1 | |
extensions: fileinfo | |
- uses: actions/download-artifact@v4 | |
with: | |
name: hyde | |
path: . | |
- name: Install standalone executable | |
run: sudo mv hyde /usr/local/bin/hyde && chmod +x /usr/local/bin/hyde | |
- name: Set up project | |
run: mkdir _pages && echo "Hello World" > _pages/index.md | |
- name: Start server | |
run: hyde serve & | |
- name: Verify server is running | |
run: curl -sS localhost:8080 | grep -q "Hello World" | |
- name: Test dashboard can be accessed | |
run: curl -sS localhost:8080/dashboard | grep -q "HydePHP - Dashboard" | |
test-live-executable-proxying: | |
needs: build-executable | |
strategy: | |
fail-fast: false | |
matrix: | |
branch: [ master, develop ] | |
runs-on: ubuntu-latest | |
name: Test live executable proxying (hyde@${{ matrix.branch }}) | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.1 | |
extensions: fileinfo | |
- uses: actions/download-artifact@v4 | |
with: | |
name: hyde | |
path: . | |
- name: Install standalone executable | |
run: sudo mv hyde /usr/local/bin/hyde && chmod +x /usr/local/bin/hyde | |
- name: Checkout Assert.php | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
tests/System/bin/Assert.php | |
sparse-checkout-cone-mode: false | |
- name: Set up assertion helper | |
run: sudo mv tests/System/bin/Assert.php /usr/local/bin/assert && sudo chmod +x /usr/local/bin/assert | |
- name: Download executable proxy | |
run: curl -sS https://raw.githubusercontent.com/hydephp/hyde/${{ matrix.branch }}/hyde > hyde && chmod +x hyde | |
- name: Set up mock support files | |
run: | | |
# Create fake composer vendor autoload file | |
mkdir vendor && echo '<?php set_error_handler(function($errno,$errstr,$errfile,$errline){throw new \ErrorException($errstr,0,$errno,$errfile,$errline);});return[];' > vendor/autoload.php | |
# Create fake app bootstrap file | |
mkdir app && echo "<?php namespace{echo 'Hello World'.PHP_EOL;return new class{public function make(){return new class{public function handle(){return 0;}public function terminate(){return 0;}};}};}namespace Symfony\Component\Console\Input{class ArgvInput{}}namespace Symfony\Component\Console\Output{class ConsoleOutput{}}" > app/bootstrap.php | |
- name: Test can run Hyde | |
run: hyde |& tee output.txt | |
- name: Test returned output | |
run: assert "str_contains(file_get_contents('output.txt'), 'Hello World')" | |
- name: Test output contains no errors | |
run: | | |
assert "! str_contains(file_get_contents('output.txt'), 'Error')" | |
assert "! str_contains(file_get_contents('output.txt'), 'Warning')" | |
assert "! str_contains(file_get_contents('output.txt'), 'Notice')" | |
standalone-integration-tests: | |
needs: build-executable | |
runs-on: ubuntu-latest | |
name: High-level integration tests | |
steps: | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.1 | |
extensions: fileinfo | |
- uses: actions/download-artifact@v4 | |
with: | |
name: hyde | |
path: . | |
- name: Install standalone executable | |
run: sudo mv hyde /usr/local/bin/hyde && chmod +x /usr/local/bin/hyde | |
- name: Checkout Assert.php | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
tests/System/bin/Assert.php | |
sparse-checkout-cone-mode: false | |
- name: Set up assertion helper | |
run: sudo mv tests/System/bin/Assert.php /usr/local/bin/assert && sudo chmod +x /usr/local/bin/assert | |
- name: Test assertion helper | |
run: assert "str_contains('Hello World', 'Hello')" | |
- name: Test can run Hyde | |
run: assert "command_outputs('', 'Experimental Standalone')" | |
- name: Test can publish homepage | |
run: | | |
assert "command_outputs('publish:homepage posts', 'Published page [posts]')" | |
assert "file_exists_and_is_not_empty('_pages/index.blade.php')" | |
assert "file_contains('_pages/index.blade.php', 'Latest Posts')" | |
- name: Test can scaffold pages | |
run: | | |
assert "command_outputs('make:page &qt;My documentation page&qt; --type=docs', 'Creating a new Docs page with title: My documentation page')" | |
assert "file_exists_and_is_not_empty('_docs/my-documentation-page.md')" | |
assert "file_contains('_docs/my-documentation-page.md', '# My documentation page')" | |
- name: Test can scaffold posts | |
run: | | |
assert "command_outputs('make:post -n', 'Creating a new post!', 'Post created! File is saved to _posts/my-new-post.md')" | |
assert "file_exists_and_is_not_empty('_posts/my-new-post.md')" | |
assert "file_contains('_posts/my-new-post.md', &qt;title: 'My New Post'&qt;, '## Write something awesome.')" | |
- name: Test can build site | |
run: | | |
assert "command_outputs('build', 'Your static site has been built!')" | |
assert "file_exists_and_is_not_empty('_site/index.html')" | |
assert "file_exists_and_is_not_empty('_site/posts/my-new-post.html')" | |
assert "file_exists_and_is_not_empty('_site/docs/my-documentation-page.html')" | |
- name: Site uses Yaml configuration | |
run: | | |
echo "{{ config('hyde.name', 'null') }}" > _pages/site-name.blade.php | |
hyde rebuild _pages/site-name.blade.php | |
assert "file_contains('_site/site-name.html', 'HydePHP')" | |
echo "name: Hello World" > hyde.yml | |
hyde rebuild _pages/site-name.blade.php | |
assert "file_contains('_site/site-name.html', 'Hello World')" |