From 7e0d346406ed71da8dca7a065814f8593c84f0f7 Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:12:43 +0100 Subject: [PATCH 1/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index efb3dd5..3903473 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@

Convert an array to XML with PHP

+

License From 0af1c18231daf3c5833138ec15c001b792b4f5ec Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:14:20 +0100 Subject: [PATCH 2/9] add php 8.2 --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ca6222b..7a2d3d3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] + php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] steps: - uses: actions/checkout@v3 From c83c280ea43a1a2f00dee3fa4033fd4fde10c11b Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:15:45 +0100 Subject: [PATCH 3/9] remove php8.2 --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7a2d3d3..ca6222b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] + php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] steps: - uses: actions/checkout@v3 From 862815fea4dc1a3fe3d0ca0e03e6eb8f00ab73ef Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:38:47 +0100 Subject: [PATCH 4/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3903473..f663702 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- + License

From e42c6be467ca9b5179158e6188b82a5e4dffc06d Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:41:34 +0100 Subject: [PATCH 5/9] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index f663702..68b332c 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,16 @@ License +
+
+ + + + + + + +

From 1252182ec0ca1b8e7ded4d9a55faa8b49ad4b557 Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Sat, 28 Jan 2023 18:41:53 +0100 Subject: [PATCH 6/9] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 68b332c..ed2bf74 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@

License -

From e3e073cf64f2f90e0b0ad90268a62a2ecc5be873 Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Mon, 15 Jan 2024 13:38:27 +0100 Subject: [PATCH 7/9] feat: add support for php8.2 (#16) --- .github/workflows/tests.yml | 4 ++-- .gitignore | 2 +- README.md | 3 ++- composer.json | 4 ++-- src/Traits/DomDocumentBuilder.php | 7 ++++--- tests/phpunit-8.2.xml | 28 ++++++++++++++++++++++++++++ 6 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 tests/phpunit-8.2.xml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ca6222b..aace3d6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] + php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] steps: - uses: actions/checkout@v3 @@ -34,7 +34,7 @@ jobs: run: | mkdir ./coverage php -v > ./coverage/php${{ matrix.php-version }}_output.txt && echo '' >> ./coverage/php${{ matrix.php-version }}_output.txt - ./vendor/bin/phpunit --configuration ./tests/phpunit-${{ matrix.php-version }}.xml --coverage-clover ./coverage/php${{ matrix.php-version }}_coverage.clover >> ./coverage/php${{ matrix.php-version }}_output.txt + ./vendor/bin/phpunit -c ./tests/phpunit-${{ matrix.php-version }}.xml --coverage-clover ./coverage/php${{ matrix.php-version }}_coverage.clover >> ./coverage/php${{ matrix.php-version }}_output.txt cat ./coverage/php${{ matrix.php-version }}_output.txt - name: Save coverage results diff --git a/.gitignore b/.gitignore index bbd3373..1debf85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .idea composer.lock vendor -/coverage/ +/coverage/ \ No newline at end of file diff --git a/README.md b/README.md index ed2bf74..6ad7a77 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ - + +

diff --git a/composer.json b/composer.json index 40d9157..8f2ffc5 100644 --- a/composer.json +++ b/composer.json @@ -21,10 +21,10 @@ } ], "require": { - "php" : "^8.0|^7.0" + "php": "^8.0|^7.0" }, "require-dev": { - "phpunit/phpunit" : "^9.5|^8.5|^7.5|^6.5", + "phpunit/phpunit": "^10.5|^9.5|^8.5|^7.5|^6.5", "mockery/mockery": "^1.0" }, "autoload": { diff --git a/src/Traits/DomDocumentBuilder.php b/src/Traits/DomDocumentBuilder.php index 30dc102..5b7de4d 100644 --- a/src/Traits/DomDocumentBuilder.php +++ b/src/Traits/DomDocumentBuilder.php @@ -184,11 +184,12 @@ protected function createXmlElement($name, $value = null, $cdata = false, $attri return $element; } - - $element = $this->_doc->createElement($name, $this->normalizeValue($value)); + $normalizedValue = $this->normalizeValue($value); + $element = $this->_doc->createElement($name, $normalizedValue === null ? '' : $normalizedValue); foreach ($attributes as $attribute_name => $attribute_value) { - $element->setAttribute($attribute_name, $this->normalizeAttributeValue($attribute_value)); + $normalizedValue = $this->normalizeAttributeValue($attribute_value); + $element->setAttribute($attribute_name, $normalizedValue === null ? '' : $normalizedValue); } return $element; diff --git a/tests/phpunit-8.2.xml b/tests/phpunit-8.2.xml new file mode 100644 index 0000000..206f4e4 --- /dev/null +++ b/tests/phpunit-8.2.xml @@ -0,0 +1,28 @@ + + + + + + ./../tests/ + + + + + ./../src + + + ./../vendor + ./../tests + + + From 784438c17984eb730eb46bbfc9a4f5da0fbe26cc Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Mon, 15 Jan 2024 14:07:34 +0100 Subject: [PATCH 8/9] feat: add support for php 8.3 (#17) --- .github/workflows/tests.yml | 6 +++--- README.md | 1 + tests/phpunit-8.3.xml | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 tests/phpunit-8.3.xml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aace3d6..e38e579 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -5,8 +5,8 @@ on: pull_request: workflow_dispatch: schedule: - # “At 17:45 on Friday.” - - cron: '45 17 * * 5' + # “At 12:00 on Wednesdays.” + - cron: '0 12 * * 3' jobs: build: @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] + php-version: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3'] steps: - uses: actions/checkout@v3 diff --git a/README.md b/README.md index 6ad7a77..7dc029a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ +

diff --git a/tests/phpunit-8.3.xml b/tests/phpunit-8.3.xml new file mode 100644 index 0000000..206f4e4 --- /dev/null +++ b/tests/phpunit-8.3.xml @@ -0,0 +1,28 @@ + + + + + + ./../tests/ + + + + + ./../src + + + ./../vendor + ./../tests + + + From c50a167c78d516c0a2cfb43541e10aafb947b79b Mon Sep 17 00:00:00 2001 From: Roel <10514742+rboonzaijer@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:21:46 +0100 Subject: [PATCH 9/9] improved local test methods (#18) --- .docker/Dockerfile-php7.0 | 8 +++++++ .docker/Dockerfile-php7.1 | 8 +++++++ .docker/Dockerfile-php7.2 | 8 +++++++ .docker/Dockerfile-php7.3 | 8 +++++++ .docker/Dockerfile-php7.4 | 8 +++++++ .docker/Dockerfile-php8.0 | 8 +++++++ .docker/Dockerfile-php8.1 | 8 +++++++ .docker/Dockerfile-php8.2 | 8 +++++++ .docker/Dockerfile-php8.3 | 8 +++++++ .dockerignore | 7 ++++++ DEVELOPMENT.md | 25 ++++++++++++++++++++ README.md | 16 ++++--------- docker-compose.yml | 48 +++++++++++++++++++++++++++++++++++++++ docker-run-tests.sh | 10 ++++++++ tests/phpunit-8.1.xml | 26 ++++++++++----------- 15 files changed, 178 insertions(+), 26 deletions(-) create mode 100644 .docker/Dockerfile-php7.0 create mode 100644 .docker/Dockerfile-php7.1 create mode 100644 .docker/Dockerfile-php7.2 create mode 100644 .docker/Dockerfile-php7.3 create mode 100644 .docker/Dockerfile-php7.4 create mode 100644 .docker/Dockerfile-php8.0 create mode 100644 .docker/Dockerfile-php8.1 create mode 100644 .docker/Dockerfile-php8.2 create mode 100644 .docker/Dockerfile-php8.3 create mode 100644 .dockerignore create mode 100644 DEVELOPMENT.md create mode 100644 docker-compose.yml create mode 100755 docker-run-tests.sh diff --git a/.docker/Dockerfile-php7.0 b/.docker/Dockerfile-php7.0 new file mode 100644 index 0000000..4a2171d --- /dev/null +++ b/.docker/Dockerfile-php7.0 @@ -0,0 +1,8 @@ +FROM php:7.0-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php7.1 b/.docker/Dockerfile-php7.1 new file mode 100644 index 0000000..cefcb4b --- /dev/null +++ b/.docker/Dockerfile-php7.1 @@ -0,0 +1,8 @@ +FROM php:7.1-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php7.2 b/.docker/Dockerfile-php7.2 new file mode 100644 index 0000000..b7c0189 --- /dev/null +++ b/.docker/Dockerfile-php7.2 @@ -0,0 +1,8 @@ +FROM php:7.2-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php7.3 b/.docker/Dockerfile-php7.3 new file mode 100644 index 0000000..9131723 --- /dev/null +++ b/.docker/Dockerfile-php7.3 @@ -0,0 +1,8 @@ +FROM php:7.3-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php7.4 b/.docker/Dockerfile-php7.4 new file mode 100644 index 0000000..3af4eb1 --- /dev/null +++ b/.docker/Dockerfile-php7.4 @@ -0,0 +1,8 @@ +FROM php:7.4-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php8.0 b/.docker/Dockerfile-php8.0 new file mode 100644 index 0000000..51d344b --- /dev/null +++ b/.docker/Dockerfile-php8.0 @@ -0,0 +1,8 @@ +FROM php:8.0-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php8.1 b/.docker/Dockerfile-php8.1 new file mode 100644 index 0000000..2ddd597 --- /dev/null +++ b/.docker/Dockerfile-php8.1 @@ -0,0 +1,8 @@ +FROM php:8.1-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php8.2 b/.docker/Dockerfile-php8.2 new file mode 100644 index 0000000..c650522 --- /dev/null +++ b/.docker/Dockerfile-php8.2 @@ -0,0 +1,8 @@ +FROM php:8.2-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.docker/Dockerfile-php8.3 b/.docker/Dockerfile-php8.3 new file mode 100644 index 0000000..671a1d9 --- /dev/null +++ b/.docker/Dockerfile-php8.3 @@ -0,0 +1,8 @@ +FROM php:8.3-cli-alpine + +COPY ./../.. /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN apk --no-cache add curl zip +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN composer install diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..186c691 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.docker +.dockerignore +.git +.github +composer.lock +docker-compose.yml +vendor/ diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..af4f7fe --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,25 @@ +# Development + +When a change is made, each php version should be tested in isolation, because depending on the PHP version, composer is downloading different files. + +The Github-ci will automatically performs the phpunit tests as a final check. + +For local testing, this can be done with the prepared docker images, using docker compose. + +### Running local PHPUnit tests + +``` +./docker-run-tests.sh +``` + +### Rebuild docker images + +``` +docker compose build +``` + +### Remove orphans + +``` +docker compose down --remove-orphans +``` diff --git a/README.md b/README.md index 7dc029a..5bc9890 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ composer require rboonzaijer/php-array-to-xml ^2.0 ``` -Load the vendor files (these already loaded if you are using something like Symfony or Laravel) +Require the vendor files (these already loaded if you are using something like Symfony or Laravel) ```php require __DIR__ . '/vendor/autoload.php'; ``` @@ -469,14 +469,6 @@ Result (prettified): ``` -# PHPUnit Tests -Use a specific configuration file, depending on your php version: -``` -./vendor/bin/phpunit --configuration ./tests/phpunit-7.0.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-7.1.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-7.2.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-7.3.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-7.4.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-8.0.xml -./vendor/bin/phpunit --configuration ./tests/phpunit-8.1.xml -``` +## Development + +- [DEVELOPMENT.md](DEVELOPMENT.md) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ad28a60 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +version: "3" + +services: + + php8.3: + build: + context: . + dockerfile: .docker/Dockerfile-php8.3 + + php8.2: + build: + context: . + dockerfile: .docker/Dockerfile-php8.2 + + php8.1: + build: + context: . + dockerfile: .docker/Dockerfile-php8.1 + + php8.0: + build: + context: . + dockerfile: .docker/Dockerfile-php8.0 + + php7.4: + build: + context: . + dockerfile: .docker/Dockerfile-php7.4 + + php7.3: + build: + context: . + dockerfile: .docker/Dockerfile-php7.3 + + php7.2: + build: + context: . + dockerfile: .docker/Dockerfile-php7.2 + + php7.1: + build: + context: . + dockerfile: .docker/Dockerfile-php7.1 + + php7.0: + build: + context: . + dockerfile: .docker/Dockerfile-php7.0 diff --git a/docker-run-tests.sh b/docker-run-tests.sh new file mode 100755 index 0000000..ea0e3d7 --- /dev/null +++ b/docker-run-tests.sh @@ -0,0 +1,10 @@ +docker compose run --rm php7.0 php ./vendor/bin/phpunit -c tests/phpunit-7.0.xml -v && \ +docker compose run --rm php7.1 php ./vendor/bin/phpunit -c tests/phpunit-7.1.xml -v && \ +docker compose run --rm php7.2 php ./vendor/bin/phpunit -c tests/phpunit-7.2.xml -v && \ +docker compose run --rm php7.3 php ./vendor/bin/phpunit -c tests/phpunit-7.3.xml -v && \ +docker compose run --rm php7.4 php ./vendor/bin/phpunit -c tests/phpunit-7.4.xml -v && \ +docker compose run --rm php8.0 php ./vendor/bin/phpunit -c tests/phpunit-8.0.xml -v && \ +docker compose run --rm php8.1 php ./vendor/bin/phpunit -c tests/phpunit-8.1.xml && \ +docker compose run --rm php8.2 php ./vendor/bin/phpunit -c tests/phpunit-8.2.xml && \ +docker compose run --rm php8.3 php ./vendor/bin/phpunit -c tests/phpunit-8.3.xml && \ +echo -e "\n\ndone.\n" diff --git a/tests/phpunit-8.1.xml b/tests/phpunit-8.1.xml index 299ec13..ff30d35 100644 --- a/tests/phpunit-8.1.xml +++ b/tests/phpunit-8.1.xml @@ -1,19 +1,22 @@ - + - + cacheResult="false" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" + cacheDirectory=".phpunit.cache" + backupStaticProperties="false"> + + + ./../tests/ + + + ./../src @@ -21,10 +24,5 @@ ./../vendor ./../tests - - - - ./../tests/ - - +