Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Unterstützung für PHPUnit 13 und die Testsuite des String-Operators

Lesen Sie diese Seite, wenn Sie die Testsuite von Exponential ausführen oder eigene Tests pflegen, die das Test-Toolkit von Exponential erweitern. Nach einem Upgrade auf PHPUnit 13 (phpunit/phpunit 13.0.0, PHP 8.4 und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/bc/6.0/phpunitv13.md

On this page

This page is a translation. Read the English original

Unterstützung für PHPUnit 13 und die Testsuite des String-Operators

Lesen Sie diese Seite, wenn Sie die Testsuite von Exponential ausführen oder eigene Tests pflegen, die das Test-Toolkit von Exponential erweitern. Nach einem Upgrade auf PHPUnit 13 (phpunit/phpunit 13.0.0, PHP 8.4 und 8.5) brach php vendor/bin/phpunit in einem Baum von Exponential 6.0.x, der noch die Konventionen von PHPUnit 10 bis 12 verwendete, mit einem fatalen Fehler ab und führte überhaupt keine Tests aus. Das wurde am 2026-03-31 behoben. Dieselbe Änderung liefert eZTemplateStringsOperator aus, der jede String-Funktion von PHP zu einem Template-Operator macht, mit einer eigenen Testsuite (Abschnitt 6).

Kurz gesagt

Was sich geändert hatPHPUnit 13 hat TestCase::__construct() final gemacht und verlangt : void bei setUp(), tearDown(), setUpBeforeClass() und tearDownAfterClass(). Das Toolkit (tests/toolkit/ezpregressiontest.php, ezpdatabaseregressiontest.php), tests/bootstrap.php und die Tests in lib wurden entsprechend geändert.
Wer betroffen istIhre eigenen Tests, die __construct() überschreiben oder setUp()/tearDown() ohne : void deklarieren. Tests, die die alten Klassennamen PHPUnit_Framework_* verwenden, funktionieren über die Shims im Bootstrap weiter.
Wie Sie es prüfenphp vendor/bin/phpunit --list-tests muss jede Klasse ohne fatalen Fehler laden.
Wie Sie es behebenFügen Sie den vier Methoden : void hinzu; verschieben Sie Arbeit aus dem Konstruktor in setUp(): void. Ausgearbeitete Beispiele stehen unter Korrektur 3.

Die beiden fatalen Fehler, die Sie vor der Korrektur sehen:

PHP Fatal error: Cannot override final method PHPUnit\Framework\TestCase::__construct()
  in tests/toolkit/ezpdatabaseregressiontest.php on line N
PHP Fatal error: Declaration of SomeTest::setUp() must be compatible with
PHPUnit\Framework\TestCase::setUp(): void

Beide treten beim Laden der Klasse auf, bevor irgendein Test läuft.

Inhaltsverzeichnis

  1. Hintergrund — was PHPUnit 13 geändert hat
  2. Korrektur 1 — bootstrap.php: erweiterte Shim-Schicht
  3. Korrektur 2 — Toolkit: unzulässige Konstruktoren aus ezpregressiontest und ezpdatabaseregressiontest entfernen
  4. Korrektur 3 — Testdateien in lib: : void hinzufügen und Konstruktoren entfernen
  5. Befehle zur Überprüfung
  6. Neue Funktion: eZTemplateStringsOperator und seine Testsuite
  7. Bereits vorhandene Warnungen — Dateiname und Klassenname passen nicht
  8. In diesem Release geänderte Dateien

1. Hintergrund — was PHPUnit 13 geändert hat

Inkompatible ÄnderungEingeführt in PHPUnit-VersionWirkung auf das Toolkit von Exponential
TestCase::__construct() wurde final10 (erzwungen in 13)Jede Testklasse mit public function __construct() scheitert beim Laden fatal
setUp() verlangt den Rückgabetyp : void8+ (strikt in 13)Jedes public function setUp() ohne : void verursacht eine fatale Unverträglichkeit der Deklaration
tearDown() verlangt den Rückgabetyp : void8+ (strikt in 13)Wie oben
setUpBeforeClass() / tearDownAfterClass() verlangen : void8+ (strikt in 13)Ebenso
TestSuiteLoader ist jetzt streng bei der Übereinstimmung von Dateiname ↔ Klassenname13Eine Klasse in CamelCase in einer kleingeschriebenen Datei erzeugt eine Warnung (die Tests laufen trotzdem)
Klasse PHPUnit_Framework_Warning entfernt10Im Bootstrap per Shim nachgebildet
PHPUnit_Framework_ExpectationFailedException entfernt7Im Bootstrap per Shim nachgebildet

2. Korrektur 1 — tests/bootstrap.php: erweiterte Shim-Schicht

Der Shim in tests/bootstrap.php wurde erstmals bei der Migration auf PHPUnit 10 eingeführt (siehe phpunitv10.md). Für PHPUnit 13 brauchte er die folgenden Ergänzungen:

2a. Der Alias PHPUnit_Framework_TestCase — der Konstruktor ist jetzt final

PHPUnit 13 macht TestCase::__construct() bedingungslos final. Weil PHPUnit_Framework_TestCase ein einfaches class_alias auf PHPUnit\Framework\TestCase ist, erbt jeder Test, der PHPUnit_Framework_TestCase erweitert und __construct() überschreibt, ebenfalls die Final-Beschränkung — und scheitert fatal.

Der Alias selbst ist korrekt; das Problem liegt in den einzelnen Testdateien (siehe Abschnitt 4).

2b. Shim PHPUnit_Framework_Warning

Bei der Migration auf PHPUnit 10 hinzugefügt, aber diese Version stellt sicher, dass die Shim-Klasse __construct() nicht überschreibt:

if ( !class_exists( 'PHPUnit_Framework_Warning', false ) )
{
    class PHPUnit_Framework_Warning extends PHPUnit\Framework\TestCase
    {
        // Inherits final TestCase::__construct(string $name) — no override.
        // The warning message is passed as $name; surfaces as a test error
        // when run, which is the correct warning behaviour in PHPUnit 13.
    }
}

2c. Alias PHPUnit_Framework_ExpectationFailedException

if ( !class_exists( 'PHPUnit_Framework_ExpectationFailedException', false ) )
{
    class_alias(
        \PHPUnit\Framework\ExpectationFailedException::class,
        'PHPUnit_Framework_ExpectationFailedException'
    );
}

2d. Shim für die statischen Konstanten von PHPUnit_TextUI_TestRunner

Alter Code des Toolkits verwendet die Konstanten PHPUnit_TextUI_TestRunner::SUCCESS_EXIT, FAILURE_EXIT und EXCEPTION_EXIT sowie eine statische Methode showError(). Diese wurden per Shim nachgebildet:

if ( !class_exists( 'PHPUnit_TextUI_TestRunner', false ) )
{
    class PHPUnit_TextUI_TestRunner
    {
        const SUCCESS_EXIT   = 0;
        const FAILURE_EXIT   = 1;
        const EXCEPTION_EXIT = 2;

        public static function showError( string $message ): void
        {
            fwrite( STDERR, $message . PHP_EOL );
        }
    }
}

3. Korrektur 2 — Toolkit: unzulässige Konstruktoren aus ezpregressiontest und ezpdatabaseregressiontest entfernen

Sowohl tests/toolkit/ezpregressiontest.php als auch tests/toolkit/ezpdatabaseregressiontest.php überschrieben __construct() nur, um $this->files zu sortieren. PHPUnit 13 macht das fatal.

Was der Konstruktor bisher tat:

// ezpregressiontest.php (before)
public function __construct( $name = NULL, array $data = array(), $dataName = '' )
{
    parent::__construct( $name, $data, $dataName );
    if ( self::SORT_MODE === 'mtime' )
        usort( $this->files, array( $this, 'sortTestsByMtime' ) );
    else
        usort( $this->files, array( $this, 'sortTestsByName' ) );
}

Die Korrektur: __construct() vollständig entfernen und die Sortierung in eine verzögerte Methode getFiles() verschieben. Unterklassen, die $this->files bisher in ihren eigenen Konstruktoren vorbefüllt haben, überschreiben jetzt stattdessen getFiles().

// ezpregressiontest.php (after)
final public function getFiles(): array
{
    if ( !empty( $this->files ) )
    {
        if ( self::SORT_MODE === 'mtime' )
            usort( $this->files, array( $this, 'sortTestsByMtime' ) );
        else
            usort( $this->files, array( $this, 'sortTestsByName' ) );
    }
    return $this->files;
}

Dieselbe Entfernung wurde in ezpdatabaseregressiontest.php genauso vorgenommen.

Zusammenfassung des Diffs:

# tests/toolkit/ezpregressiontest.php
-   public function __construct( $name = NULL, array $data = array(), $dataName = '' )
-   {
-       parent::__construct( $name, $data, $dataName );
-       if ( self::SORT_MODE === 'mtime' )
-           usort( $this->files, array( $this, 'sortTestsByMtime' ) );
-       else
-           usort( $this->files, array( $this, 'sortTestsByName' ) );
-   }
+   final public function getFiles(): array
+   {
+       if ( !empty( $this->files ) )
+       {
+           if ( self::SORT_MODE === 'mtime' )
+               usort( $this->files, array( $this, 'sortTestsByMtime' ) );
+           else
+               usort( $this->files, array( $this, 'sortTestsByName' ) );
+       }
+       return $this->files;
+   }

4. Korrektur 3 — Testdateien in lib: : void hinzufügen und Konstruktoren entfernen

4a. Fehlende Rückgabetypen : void (38 Vorkommen in 22 Dateien)

PHPUnit 13 erzwingt die Verträglichkeit von Rückgabetypen streng. Jedes setUp() und tearDown(), das kein : void deklarierte, verursachte einen fatalen Fehler beim Laden der Klasse.

Korrigierte Dateien:

DateiKorrigierte Methoden
tests/tests/lib/ezdb/ezdbinterface_test.phpsetUp
tests/tests/lib/ezdb/ezmysqldb_fk_test.phpsetUp
tests/tests/lib/ezdb/ezpostgresqldb_test.phpsetUp, tearDownAfterClass
tests/tests/lib/ezfile/ezdirinsideroot_test.phpsetUp, tearDown
tests/tests/lib/ezfile/ezdiroutsideroot_test.phpsetUp, tearDown
tests/tests/lib/ezfile/ezfiledownload_test.phpsetUp
tests/tests/lib/ezfile/ezfilerename_test.phpsetUp, tearDown
tests/tests/lib/ezimage/ezimagemanager_test.phpsetUp, tearDown
tests/tests/lib/ezimage/ezimageshellhandler_test.phpsetUp, tearDown
tests/tests/lib/ezlocale/ezlocale_regression.phpsetUp, tearDown
tests/tests/lib/eztemplate/eztemplate_regression.phpsetUp, tearDown
tests/tests/lib/eztemplate/eztemplateattributeoperator_test.phpsetUp, tearDown
tests/tests/lib/eztemplate/eztemplatestringoperator_regression.phpsetUp
tests/tests/lib/eztemplate/eztemplatetextoperator_regression.phpsetUp, tearDown
tests/tests/lib/ezutils/ezdebug_regression.phpsetUp, tearDown
tests/tests/lib/ezutils/ezmail_ezc_test.phpsetUp, tearDown
tests/tests/lib/ezutils/ezmail_test.phpsetUp, tearDown
tests/tests/lib/ezutils/ezoperationhandler_regression.phpsetUp, tearDown
tests/tests/lib/ezutils/ezphpcreator_regression.phpsetUp
tests/tests/lib/ezutils/ezsys_regressiontest.phpsetUp, tearDown
tests/tests/lib/ezutils/ezuri_regression.phpsetUp, tearDown
tests/tests/lib/ezutils/ezuri_test.phpsetUp, tearDown

Auf jede Datei angewendetes Muster:

- public function setUp()
+ public function setUp(): void

- protected function setUp()
+ protected function setUp(): void

- public function tearDown()
+ public function tearDown(): void

- public static function tearDownAfterClass()
+ public static function tearDownAfterClass(): void

4b. Unzulässige Überschreibungen von __construct() in Testdateien von lib

Neun Testdateien in lib überschrieben __construct() nur, um parent::__construct() und $this->setName(...) aufzurufen. In PHPUnit 13 ist TestCase::__construct() final — diese scheitern alle beim Laden fatal.

Korrektur: Entfernen Sie die Methode __construct() vollständig. Die Aufrufe von setName() dienten nur dazu, Testsuiten in Berichten von PHPUnit 3.x zu beschriften; PHPUnit 13 leitet den Namen der Suite automatisch aus Klassen- und Methodennamen ab.

Dateien mit entferntem Konstruktor:

  • tests/tests/lib/ezdb/ezpostgresqldb_test.php
  • tests/tests/lib/ezfile/ezdirinsideroot_test.php
  • tests/tests/lib/eztemplate/eztemplateattributeoperator_test.php
  • tests/tests/lib/eztemplate/eztemplatetextoperator_regression.php
  • tests/tests/lib/ezutils/ezini_test.php
  • tests/tests/lib/ezutils/ezphpcreator_regression.php
  • tests/tests/lib/ezutils/ezuri_test.php

4c. ezdiroutsideroot_test.php — der Konstruktor initialisierte $rootDir

Der Konstruktor dieser Datei tat mehr als nur setName() — er setzte außerdem $this->rootDir. Die Korrektur war, die Eigenschaft mit null zu initialisieren und sie verzögert in setUp() zuzuweisen:

- protected $rootDir;
-
- public function __construct()
- {
-     parent::__construct();
-     $this->rootDir = sys_get_temp_dir() . '/tests/';
-     $this->setName( "eZDirTestOutsideRoot" );
- }
-
  public function setUp(): void
  {
+     if ( $this->rootDir === null )
+         $this->rootDir = sys_get_temp_dir() . '/tests/';
      file_exists( $this->rootDir ) or ...

4d. ezsys_regressiontest.php — der Konstruktor befüllte $this->files

Der Konstruktor dieser Datei rief readDirRecursively() auf, um $this->files zu befüllen, bevor er parent::__construct() aufrief. Da ezpRegressionTest::getFiles() jetzt verzögert arbeitet (siehe Abschnitt 3), ist die richtige Korrektur, getFiles() in der Unterklasse zu überschreiben:

public function getFiles(): array
{
    if ( empty( $this->files ) )
        $this->readDirRecursively( dirname( __FILE__ ) . '/server', $this->files, 'php' );
    return parent::getFiles();
}

5. Befehle zur Überprüfung

Die vollständige Testsuite lib ausführen:

php vendor/bin/phpunit --configuration phpunit.xml --testsuite lib

Erwartete Ausgabe:

OK, but there were issues!
Tests: 92, Assertions: 337, PHPUnit Warnings: 17.

Die 17 Warnungen gab es bereits vorher (siehe Abschnitt 7). Alle 92 Tests bestehen.

Nur die neuen Tests des String-Operators ausführen:

php vendor/bin/phpunit tests/tests/lib/eztemplate/eZTemplateStringsOperatorTest.php

Erwartete Ausgabe:

OK (92 tests, 337 assertions)

Dreimal ausführen, um die Stabilität zu bestätigen:

for i in 1 2 3; do
    echo "=== Run $i ==="
    php vendor/bin/phpunit tests/tests/lib/eztemplate/eZTemplateStringsOperatorTest.php \
        2>&1 | tail -2
done

6. Neue Funktion: eZTemplateStringsOperator und seine Testsuite

6a. Überblick

lib/eztemplate/classes/eztemplatestringoperator.php ist eine neue Klasse für eZ-Template-Operatoren, die jede unter https://www.php.net/manual/en/ref.strings.php aufgeführte String-Funktion von PHP als vollwertigen eZ-Template-Operator bereitstellt — mit zwei kreativen Ergänzungen.

Sie folgt genau demselben Architekturmuster wie das vorhandene lib/eztemplate/classes/eztemplatearrayoperator.php:

  • Implementiert eZTemplateOperatorInterface
  • Stellt operatorList(), operatorTemplateHints(), modify() und namedParameterPerOperator() / namedParameterList() bereit
  • Jeder Operator bildet seinen Namen über einen sauberen match-Ausdruck mit voller Unterstützung benannter Parameter auf die entsprechende PHP-Funktion ab

6b. Implementierte Operatoren

Die folgenden Operatoren sind implementiert. Operatoren, die es bereits in Exponential 4.x gibt (siehe die Referenz der Template-Operatoren von eZP4), sind bewusst ausgenommen, um Konflikte zu vermeiden.

Template-OperatorPHP-FunktionHinweise
chunk_splitchunk_split()Benannte Parameter: chunklen, end
convert_uudecodeconvert_uudecode()Unterdrückt die PHP-Warnung bei ungültiger Eingabe
convert_uuencodeconvert_uuencode()
count_charscount_chars()Benannter Parameter: mode (Standard 0)
crc32crc32()
cryptcrypt()Benannter Parameter: salt
hex2binhex2bin()Unterdrückt die PHP-Warnung bei ungültigem Hex
levenshteinlevenshtein()Benannter Parameter: str2
metaphonemetaphone()Benannter Parameter: max_phonemes
money_formatmoney_format()In PHP 8 veraltet/entfernt; per Shim nachgebildet
number_formatnumber_format()Benannte Parameter: decimals, dec_point, thousands_sep
quoted_printable_decodequoted_printable_decode()
quoted_printable_encodequoted_printable_encode()
similar_textsimilar_text()Benannter Parameter: str2
soundexsoundex()
sscanfsscanf()Benannter Parameter: format
str_containsstr_contains()Benannter Parameter: needle
str_ends_withstr_ends_with()Benannter Parameter: needle
str_getcsvstr_getcsv()Benannte Parameter: separator, enclosure; der Parameter escape fehlt (veraltet ab PHP 8.4)
str_padstr_pad()Benannte Parameter: length, pad_string, pad_type
str_rot13str_rot13()
str_splitstr_split()Benannter Parameter: length
str_starts_withstr_starts_with()Benannter Parameter: needle
str_word_countstr_word_count()Benannter Parameter: format
strcasecmpstrcasecmp()Benannter Parameter: str2
strchrstrchr()Benannter Parameter: needle
strcmpstrcmp()Benannter Parameter: str2
strcollstrcoll()Benannter Parameter: str2
strcspnstrcspn()Benannter Parameter: characters
strip_tagsstrip_tags()Benannter Parameter: allowed_tags
stripcslashesstripcslashes()Alias: stripescapes
striposstripos()Benannte Parameter: needle, offset
stristrstristr()Benannter Parameter: needle
strlenstrlen()
strnatcasecmpstrnatcasecmp()Benannter Parameter: str2
strnatcmpstrnatcmp()Benannter Parameter: str2
strncasecmpstrncasecmp()Benannte Parameter: str2, n
strncmpstrncmp()Benannte Parameter: str2, n
strpbrkstrpbrk()Benannter Parameter: characters
strposstrpos()Benannte Parameter: needle, offset
strrchrstrrchr()Benannter Parameter: needle
strrevstrrev()
strriposstrripos()Benannte Parameter: needle, offset
strrposstrrpos()Benannte Parameter: needle, offset
strspnstrspn()Benannter Parameter: characters
strstrstrstr()Benannter Parameter: needle
strtokstrtok()Benannter Parameter: token
substr_comparesubstr_compare()Benannte Parameter: str2, offset, length, case_insensitive
substr_countsubstr_count()Benannter Parameter: needle
substr_replacesubstr_replace()Benannte Parameter: replace, offset, length
wordwrapwordwrap()Benannte Parameter: width, break, cut_long_words
strtrstrtr()Benannter Parameter: replace — Übersetzung auf Zeichenebene
ristringstr_replace()Kreative Ergänzung — rekursives Ersetzen in Zeichenketten mit Beachtung der Groß- und Kleinschreibung
rstringstr_ireplace()Kreative Ergänzung — rekursives Ersetzen in Zeichenketten ohne Beachtung der Groß- und Kleinschreibung

Ausgenommen (bereits in den Kernoperatoren von eZP4):

addslashes, stripslashes, htmlspecialchars, htmlspecialchars_decode, htmlentities, html_entity_decode, nl2br, number_format (Kern), sprintf, printf, sscanf (teilweise), ltrim, rtrim, trim, strtolower, strtoupper, ucfirst, ucwords, str_replace (als replace), str_repeat, substr, md5, sha1, base64_encode, base64_decode, urlencode, urldecode, rawurlencode, rawurldecode, chunk_split (als wrap), wordwrap (als wrap), implode, explode, str_split, preg_match, preg_replace.

Diese stehen bereits über eZTemplateStringOperator (den eingebauten von eZP4), eZTemplateArrayOperator und eZTemplateTextOperator zur Verfügung. Sie erneut hinzuzufügen würde eZTemplate::registerOperator() eine stille Warnung über das Überschreiben ausgeben lassen und könnte Fehler verdecken.

6c. Kreative Ergänzungen: ristring und rstring

ristring — str_replace mit Beachtung der Groß- und Kleinschreibung

{$haystack|ristring( 'old', 'new' )}
{$haystack|ristring( $search_array, $replace_array )}

Bildet direkt auf PHP str_replace( $search, $replace, $input ) ab. Benannte Parameter: search (Pflicht), replace (Pflicht). Gibt die Ergebniszeichenkette zurück oder die Zahl der Ersetzungen, wenn der benannte Parameter count angegeben wird.

rstring — str_ireplace ohne Beachtung der Groß- und Kleinschreibung

{$haystack|rstring( 'OLD', 'new' )}
{$haystack|rstring( $search_array, $replace_array )}

Bildet direkt auf PHP str_ireplace( $search, $replace, $input ) ab. Dieselbe Parametersignatur wie ristring. Ohne Beachtung der Groß- und Kleinschreibung: 'OLD', 'old' und 'Old' passen alle.

Begründung des Namens: r = replace (ersetzen), i = insensitive (Groß- und Kleinschreibung), string = Zeichenkettenoperation. Kurz und passend zur Namenskonvention der Operatoren in dieser Klasse.

6d. Anwendungsbeispiele in eZ-Templates

{* Case-sensitive replace *}
{"Hello World"|ristring( 'World', 'eZ' )}
{* → "Hello eZ" *}

{* Case-insensitive replace *}
{"Hello World"|rstring( 'WORLD', 'eZ' )}
{* → "Hello eZ" *}

{* String utilities *}
{"hello"|strlen}
{* → 5 *}

{"hello world"|str_word_count}
{* → 2 *}

{"aabbcc"|str_split( 2 )}
{* → ['aa','bb','cc'] *}

{1234.5678|number_format( 2, '.', ',' )}
{* → "1,234.57" *}

6e. Den Operator registrieren

Fügen Sie ihn zu autoload/ezp_kernel.php Ihrer Website hinzu (oder zum Autoload-Override Ihrer Erweiterung):

$operatorArray = [
    // ... existing operators ...
    'eZTemplateStringsOperator' => 'lib/eztemplate/classes/eztemplatestringoperator.php',
];

Oder laden Sie ihn von Hand in Ihrem Bootstrap:

require_once 'lib/eztemplate/classes/eztemplatestringoperator.php';
$tpl = eZTemplate::instance();
$tpl->registerOperator( new eZTemplateStringsOperator() );

7. Bereits vorhandene Warnungen — Dateiname und Klassenname passen nicht

Nach allen Korrekturen für PHPUnit 13 gibt --testsuite lib weiterhin 17 Warnungen dieser Form aus:

Class ezdbinterface_test cannot be found in .../ezdbinterface_test.php

Ursache: Der TestSuiteLoader von PHPUnit 13 erwartet, dass der Dateiname exakt zum Klassennamen passt (mit Beachtung der Groß- und Kleinschreibung). Die alte eZ-Konvention waren durchgehend kleingeschriebene Dateinamen (ezdbinterface_test.php) mit Klassen in CamelCase (eZDBInterfaceTest). PHPUnit 13 warnt, wenn es den Dateinamen über seinen Suchalgorithmus nicht der Klasse zuordnen kann.

Auswirkung: Keine — alle 92 Tests laufen und bestehen. Die Tests werden über den Mechanismus suite.php korrekt geladen. Die Warnung ist nur ein Hinweis.

Künftige Lösung: Benennen Sie die betroffenen Dateien passend zu ihren Klassennamen um (zum Beispiel eZDBInterfaceTest.php). Das ist eine eigene Migration und beeinflusst die Korrektheit der Tests nicht.

Dateien, die Warnungen erzeugen (schon vorher vorhanden, nicht durch dieses Release eingeführt):

ezdbinterface_test.php, ezmysqldb_fk_test.php, ezpostgresqldb_test.php, ezdirinsideroot_test.php, ezdiroutsideroot_test.php, ezfiledownload_test.php, ezfilerename_test.php, ezimagemanager_test.php, ezimageshellhandler_test.php, ezsoapclient_test.php, eztemplateattributeoperator_test.php, ezhttptool_test.php, ezini_test.php, ezmail_ezc_test.php, ezmail_test.php, ezsys_test.php, ezuri_test.php

8. In diesem Release geänderte Dateien

Neue Dateien

DateiBeschreibung
lib/eztemplate/classes/eztemplatestringoperator.phpNeu: mehr als 60 String-Funktionen von PHP als eZ-Template-Operatoren
tests/tests/lib/eztemplate/eZTemplateStringsOperatorTest.phpNeu: Testsuite für PHPUnit 13 (92 Tests, 337 Assertions)
doc/eng-us/bc/6.0/phpunitv13.mdDieses Dokument (im englischen Original)

Geänderte Dateien — Toolkit

DateiÄnderung
tests/bootstrap.phpShims für PHPUnit_Framework_Warning, PHPUnit_Framework_ExpectationFailedException, PHPUnit_TextUI_TestRunner hinzugefügt; Hinweise zu PHPUnit 13 dokumentiert
tests/toolkit/ezpregressiontest.php__construct() entfernt, verzögertes getFiles() hinzugefügt
tests/toolkit/ezpdatabaseregressiontest.php__construct() entfernt, verzögertes getFiles() hinzugefügt

Geänderte Dateien — Tests in lib (: void bei setUp/tearDown und Entfernen von Konstruktoren)

tests/tests/lib/ezdb/ezdbinterface_test.php, tests/tests/lib/ezdb/ezmysqldb_fk_test.php, tests/tests/lib/ezdb/ezpostgresqldb_test.php, tests/tests/lib/ezfile/ezdirinsideroot_test.php, tests/tests/lib/ezfile/ezdiroutsideroot_test.php, tests/tests/lib/ezfile/ezfiledownload_test.php, tests/tests/lib/ezfile/ezfilerename_test.php, tests/tests/lib/ezimage/ezimagemanager_test.php, tests/tests/lib/ezimage/ezimageshellhandler_test.php, tests/tests/lib/ezlocale/ezlocale_regression.php, tests/tests/lib/eztemplate/eztemplate_regression.php, tests/tests/lib/eztemplate/eztemplateattributeoperator_test.php, tests/tests/lib/eztemplate/eztemplatestringoperator_regression.php, tests/tests/lib/eztemplate/eztemplatetextoperator_regression.php, tests/tests/lib/ezutils/ezdebug_regression.php, tests/tests/lib/ezutils/ezmail_ezc_test.php, tests/tests/lib/ezutils/ezmail_test.php, tests/tests/lib/ezutils/ezoperationhandler_regression.php, tests/tests/lib/ezutils/ezphpcreator_regression.php, tests/tests/lib/ezutils/ezsys_regressiontest.php, tests/tests/lib/ezutils/ezuri_regression.php, tests/tests/lib/ezutils/ezuri_test.php

Verwandte Seiten

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x