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
+
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 @@
-
+
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 @@
+
+
+
+
+
+
+
+
+
+
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 @@
-
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/
-
-
+