From fcc5138bdd891c440b8f74ced42941a14c4f0890 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:14:38 +0000 Subject: [PATCH 1/5] Initial plan From 82d078b5a170c8853052c1d2399ecc36b2f1c020 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:20:46 +0000 Subject: [PATCH 2/5] Initial commit - understanding the task Co-authored-by: jschroed91 <2540804+jschroed91@users.noreply.github.com> --- .phpunit.result.cache | 1 + 1 file changed, 1 insertion(+) create mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 0000000..ce895c7 --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":[],"times":{"Caxy\\Tests\\HtmlDiff\\Functional\\HTMLPurifierConfigTest::testHtmlDiffConfigTraditional":0.028,"Caxy\\Tests\\HtmlDiff\\Functional\\HTMLPurifierConfigTest::testHtmlDiffConfigStatic":0.004,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"ICC-5136.html\"":0.012,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"first-and-last.html\"":0.009,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"issue-28-link-changes.html\"":0.005,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"keep-newlines-test.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"multibyte.html\"":0.001,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"multiline-tag.html\"":0,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"new-paragraph-and-list.html\"":0.07,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-2.html\"":0.008,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-3.html\"":0.026,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-4.html\"":0.025,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-5.html\"":0.058,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-6.html\"":0.031,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-8.html\"":0.016,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-9.html\"":0.005,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"simple-list.html\"":0.017,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"space-inside-isolated-tag.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"spaces-added.html\"":0.001,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"spaces-removed-inside-tag.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"table-whitespace-issue.html\"":0.011}} \ No newline at end of file From 64f639499d67a2b2b0eb29bca3b08f21e2cbb613 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:23:28 +0000 Subject: [PATCH 3/5] Add GitHub Actions CI workflow and PHP_CodeSniffer Co-authored-by: jschroed91 <2540804+jschroed91@users.noreply.github.com> --- .github/workflows/ci.yml | 84 ++++++++++++++++++++++++++++++++++++++++ .gitignore | 4 +- .phpunit.result.cache | 1 - composer.json | 3 +- 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .phpunit.result.cache diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..cd6593e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,84 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + name: PHP ${{ matrix.php-version }} Test + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + php-version: ['7.3', '7.4', '8.0', '8.1', '8.2', '8.3'] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: dom, mbstring + coverage: xdebug + + - 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-${{ matrix.php-version }}-${{ hashFiles('**/composer.json') }} + restore-keys: | + ${{ runner.os }}-php-${{ matrix.php-version }}- + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --no-interaction + + - name: Run test suite + run: vendor/bin/phpunit --coverage-clover=coverage.xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 + if: matrix.php-version == '8.3' + with: + files: ./coverage.xml + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + + code-quality: + name: Code Quality + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: dom, mbstring + tools: cs2pr + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v4 + with: + path: vendor + key: ${{ runner.os }}-php-8.3-${{ hashFiles('**/composer.json') }} + restore-keys: | + ${{ runner.os }}-php-8.3- + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --no-interaction + + - name: Run PHP_CodeSniffer + run: vendor/bin/phpcs --report=checkstyle | cs2pr diff --git a/.gitignore b/.gitignore index 183037e..2a681d8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ vendor/ /demo/bower_components /demo/node_modules .DS_Store -.idea \ No newline at end of file +.idea +.phpunit.result.cache +coverage.xml \ No newline at end of file diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index ce895c7..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":[],"times":{"Caxy\\Tests\\HtmlDiff\\Functional\\HTMLPurifierConfigTest::testHtmlDiffConfigTraditional":0.028,"Caxy\\Tests\\HtmlDiff\\Functional\\HTMLPurifierConfigTest::testHtmlDiffConfigStatic":0.004,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"ICC-5136.html\"":0.012,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"first-and-last.html\"":0.009,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"issue-28-link-changes.html\"":0.005,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"keep-newlines-test.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"multibyte.html\"":0.001,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"multiline-tag.html\"":0,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"new-paragraph-and-list.html\"":0.07,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-2.html\"":0.008,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-3.html\"":0.026,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-4.html\"":0.025,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-5.html\"":0.058,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-6.html\"":0.031,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-8.html\"":0.016,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"override-9.html\"":0.005,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"simple-list.html\"":0.017,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"space-inside-isolated-tag.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"spaces-added.html\"":0.001,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"spaces-removed-inside-tag.html\"":0.003,"Caxy\\Tests\\HtmlDiff\\Functional\\HtmlDiffFunctionalTest::testHtmlDiff with data set \"table-whitespace-issue.html\"":0.011}} \ No newline at end of file diff --git a/composer.json b/composer.json index 9e7c0fd..2891b43 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ }, "require-dev": { "phpunit/phpunit": "~9.0", - "doctrine/cache": "~1.0" + "doctrine/cache": "~1.0", + "squizlabs/php_codesniffer": "^3.7" }, "suggest": { "doctrine/cache": "Used for caching the calculated diffs using a Doctrine Cache Provider" From 6700d6627d9628544084aca1433670e036cccb83 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:24:36 +0000 Subject: [PATCH 4/5] Update README badges to use GitHub Actions Co-authored-by: jschroed91 <2540804+jschroed91@users.noreply.github.com> --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 357c573..132f0e7 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ php-htmldiff ============ -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/caxy/php-htmldiff/badges/quality-score.png?b=master)][badge_score] -[![Build Status](https://scrutinizer-ci.com/g/caxy/php-htmldiff/badges/build.png?b=master)][badge_status] -[![Code Coverage](https://scrutinizer-ci.com/g/caxy/php-htmldiff/badges/coverage.png?b=master)][badge_coverage] +[![CI](https://github.com/caxy/php-htmldiff/workflows/CI/badge.svg)][badge_ci] +[![Code Coverage](https://codecov.io/gh/caxy/php-htmldiff/branch/master/graph/badge.svg)][badge_coverage] [![Packagist](https://img.shields.io/packagist/dt/caxy/php-htmldiff.svg)][badge_packagist] [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/caxy/php-htmldiff.svg)][badge_resolve] [![Percentage of issues still open](http://isitmaintained.com/badge/open/caxy/php-htmldiff.svg)][badge_issues] @@ -213,9 +212,8 @@ php-htmldiff is available under [GNU General Public License, version 2][gnu]. Se * Add documentation on alternative htmldiff engines and perhaps some comparisons -[badge_score]: https://scrutinizer-ci.com/g/caxy/php-htmldiff/?branch=master -[badge_status]: https://scrutinizer-ci.com/g/caxy/php-htmldiff/build-status/master -[badge_coverage]: https://scrutinizer-ci.com/g/caxy/php-htmldiff/?branch=master +[badge_ci]: https://github.com/caxy/php-htmldiff/actions/workflows/ci.yml +[badge_coverage]: https://codecov.io/gh/caxy/php-htmldiff [badge_packagist]: https://packagist.org/packages/caxy/php-htmldiff [badge_resolve]: http://isitmaintained.com/project/caxy/php-htmldiff "Average time to resolve an issue" [badge_issues]: http://isitmaintained.com/project/caxy/php-htmldiff "Percentage of issues still open" From be770b76a5dcc3343b6cf002bb98326d8c2081b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:26:38 +0000 Subject: [PATCH 5/5] Add explicit permissions to GitHub Actions workflow Co-authored-by: jschroed91 <2540804+jschroed91@users.noreply.github.com> --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd6593e..25aae2f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,8 @@ jobs: test: name: PHP ${{ matrix.php-version }} Test runs-on: ubuntu-latest + permissions: + contents: read strategy: fail-fast: false @@ -56,6 +58,8 @@ jobs: code-quality: name: Code Quality runs-on: ubuntu-latest + permissions: + contents: read steps: - name: Checkout code