Skip to content

Commit

Permalink
Merge pull request #154 from alma/devx/dex-943-send-phpunit-tests-to-…
Browse files Browse the repository at this point in the history
…reportportal

[DEX-943] Send phpunit tests to Report Portal
  • Loading branch information
carine-bonnafous authored Dec 13, 2024
2 parents 4a0a710 + a20e4be commit e2df0d8
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ jobs:
string=': void'
grep -r -l "$string" tests/ | xargs sed -i "s/$string//g"
- name: Set ReportPortal configuration
# ReportPortal agent only works for PHP 7.1, 7.2, 7.3 and 7.4
if: (github.ref_name == 'main' || github.ref_name == 'develop') && vars.REPORT_PORTAL_ENABLED == 'true' && contains(fromJson('["7.1", "7.2", "7.3", "7.4"]'), matrix.php)
run: ./tests/reportportal/reportportal_conf.sh
env:
REPORT_PORTAL_API_KEY: ${{ secrets.REPORT_PORTAL_API_KEY }}
REPORT_PORTAL_ENDPOINT: ${{ vars.REPORT_PORTAL_ENDPOINT }}
PHP_VERSION: ${{ matrix.php }}

- name: PHPUnit
run: |
case ${{ matrix.php }} in
Expand Down
37 changes: 37 additions & 0 deletions tests/reportportal/ReportPortalHTTPService.php.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
312c312
< $result = self::$client->post('v1/' . self::$projectName . '/launch', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/launch', array(
337c337
< $result = self::$client->put('v1/' . self::$projectName . '/launch/' . self::$launchID . '/finish', array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/launch/' . self::$launchID . '/finish', array(
358c358
< $result = self::$client->put('v1/' . self::$projectName . '/launch/' . self::$launchID . '/stop', array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/launch/' . self::$launchID . '/stop', array(
383c383
< $result = self::$client->post('v1/' . self::$projectName . '/item', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/item', array(
425c425
< $result = self::$client->post('v1/' . self::$projectName . '/log', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/log', array(
478c478
< 'v1/' . self::$projectName . '/log',
---
> 'v2/' . self::$projectName . '/log',
500c500
< $result = self::$client->put('v1/' . self::$projectName . '/item/' . $itemID, array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/item/' . $itemID, array(
507c507,508
< 'status' => $status
---
> 'status' => $status,
> 'launchUuid' => self::$launchID
544c545
< $result = self::$client->post('v1/' . self::$projectName . '/item/' . $parentItemID, array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/item/' . $parentItemID, array(
33 changes: 33 additions & 0 deletions tests/reportportal/reportportal_conf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash

# exit if REPORT_PORTAL_API_KEY or REPORT_PORTAL_ENDPOINT is not set
if [ -z "$REPORT_PORTAL_API_KEY" ] || [ -z "$REPORT_PORTAL_ENDPOINT" ]; then
echo "Please set REPORT_PORTAL_API_KEY and REPORT_PORTAL_ENDPOINT environment variables"
exit 1
fi

# Remove /api/v1 or api/v2 from REPORT_PORTAL_ENDPOINT (reportportal/agent-php-PHPUnit requires only host)
export REPORT_PORTAL_HOST=${REPORT_PORTAL_ENDPOINT/\/api\/v[12]/}

# Add secrets values in tests/reportportal_phpunit_conf_template.xml
# Following environment variables are used:
# REPORT_PORTAL_API_KEY
# REPORT_PORTAL_HOST
# PHP_VERSION
envsubst < tests/reportportal/reportportal_phpunit_conf_template.xml > tests/reportportal/reportportal_phpunit_conf.xml

# Add conf for ReportPortal extension in phpunit.ci.xml
# Inserts content of file tests/reportportal_phpunit_conf.xml before </phpunit> end tag in phpunit.ci.xml
sed -i $'/<\/phpunit>/{e cat tests/reportportal/reportportal_phpunit_conf.xml\n}' phpunit.ci.xml

# Add ReportPortal extension to composer.json
# reportportal/phpunit has no stable version, so we set minimum stability to dev only when running tests
composer config minimum-stability dev
# This is not supported by all versions of PHP, so we need to install it separately
composer require --dev reportportal/phpunit

# Patch reportportal/basic to make it compatible with api/v2
# Patch content:
# * Replace api/v1 (hardcoded in reportportal/basic) by api/v2
# * Add launchUuid to finishItem method (otherwise all tests will be marked as "interrupted")
patch vendor/reportportal/basic/src/service/ReportPortalHTTPService.php tests/reportportal/ReportPortalHTTPService.php.patch
12 changes: 12 additions & 0 deletions tests/reportportal/reportportal_phpunit_conf_template.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<listeners>
<listener class="agentPHPUnit" file="vendor/reportportal/phpunit/src/agentPHPUnit.php">
<arguments>
<string>${REPORT_PORTAL_API_KEY}</string>
<string>${REPORT_PORTAL_HOST}</string>
<string>integrations</string>
<string>.000+00:00</string>
<string>alma-php-client PHPUnit tests</string>
<string>PHP version: ${PHP_VERSION}</string>
</arguments>
</listener>
</listeners>

0 comments on commit e2df0d8

Please sign in to comment.