From 48ae4bfc18fa15d50e9f4499c11e4d2ab4448cf1 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 21 Mar 2023 13:43:01 +0000 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20description=20when=20using=20`?= =?UTF-8?q?=E3=81=B5=E3=81=8C`=20chars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Support/Str.php | 2 +- tests/Unit/TestName.php | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Support/Str.php b/src/Support/Str.php index 9ed75c1f..896710c3 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -61,7 +61,7 @@ final class Str { $code = self::PREFIX.str_replace(' ', '_', $code); - return (string) preg_replace('/[^A-Z_a-z0-9]/', '_', $code); + return (string) preg_replace('/[^\p{L}_0-9]/', '_', $code); } /** diff --git a/tests/Unit/TestName.php b/tests/Unit/TestName.php index 3f52e700..2d5ce4aa 100644 --- a/tests/Unit/TestName.php +++ b/tests/Unit/TestName.php @@ -11,3 +11,23 @@ it('may start with P', function (string $real, string $toBePrinted) { ['PPPackages\Foo', 'PPPackages\Foo'], ['PPPackages\Foo', 'PPPackages\Foo'], ]); + +$names = [ + 'ふが' => '__pest_evaluable_ふが', + 'ほげ' => 'ほげ', + '卜竹弓一十山' => '卜竹弓一十山', + '!p8VrB' => '!p8VrB', + '&xe6VeKWF#n4' => '&xe6VeKWF#n4', + '%%HurHUnw7zM!' => '%%HurHUnw7zM!', + 'rundeliekend' => 'rundeliekend', + 'g%%c!Jt9$fy#Kf' => 'g%%c!Jt9$fy#Kf', + 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX' => 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX', +]; + +foreach ($names as $name => $methodName) { + test($name) + ->expect(fn () => static::getLatestPrintableTestCaseMethodName()) + ->toBe($name) + ->and(fn () => $this->name()) + ->toBe($methodName); +} From ed3bb2634dbaf4c852d1da002c59b92df00e1a87 Mon Sep 17 00:00:00 2001 From: Fabio Ivona Date: Tue, 21 Mar 2023 15:15:38 +0100 Subject: [PATCH 2/3] using php documentation regex --- src/Support/Str.php | 3 ++- tests/Unit/TestName.php | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Support/Str.php b/src/Support/Str.php index 896710c3..21ee5c5b 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -61,7 +61,8 @@ final class Str { $code = self::PREFIX.str_replace(' ', '_', $code); - return (string) preg_replace('/[^\p{L}_0-9]/', '_', $code); + // sticks to PHP8.2 function naming rules https://www.php.net/manual/en/functions.user-defined.php + return (string) preg_replace('/[^a-zA-Z0-9_\x80-\xff]/', '_', $code); } /** diff --git a/tests/Unit/TestName.php b/tests/Unit/TestName.php index 2d5ce4aa..a7455d32 100644 --- a/tests/Unit/TestName.php +++ b/tests/Unit/TestName.php @@ -14,14 +14,15 @@ it('may start with P', function (string $real, string $toBePrinted) { $names = [ 'ふが' => '__pest_evaluable_ふが', - 'ほげ' => 'ほげ', - '卜竹弓一十山' => '卜竹弓一十山', - '!p8VrB' => '!p8VrB', - '&xe6VeKWF#n4' => '&xe6VeKWF#n4', - '%%HurHUnw7zM!' => '%%HurHUnw7zM!', - 'rundeliekend' => 'rundeliekend', - 'g%%c!Jt9$fy#Kf' => 'g%%c!Jt9$fy#Kf', - 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX' => 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX', + 'ほげ' => '__pest_evaluable_ほげ', + '卜竹弓一十山' => '__pest_evaluable_卜竹弓一十山', + '!p8VrB' => '__pest_evaluable__p8VrB', + '&xe6VeKWF#n4' => '__pest_evaluable__xe6VeKWF_n4', + '%%HurHUnw7zM!' => '__pest_evaluable___HurHUnw7zM_', + 'rundeliekend' => '__pest_evaluable_rundeliekend', + 'g%%c!Jt9$fy#Kf' => '__pest_evaluable_g__c_Jt9_fy_Kf', + 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX' => '__pest_evaluable_NRs_Gz2_hmB_W_BPD__b2U_3P_z_apnwSX', + 'ÀĤ{¼' => '__pest_evaluable_ÀĤ_¼', ]; foreach ($names as $name => $methodName) { From e0f2919f62f0d8bd94272fd0bd9bcea12d36f059 Mon Sep 17 00:00:00 2001 From: Fabio Ivona Date: Tue, 21 Mar 2023 17:39:01 +0100 Subject: [PATCH 3/3] expand Str::evaluable test cases --- tests/Unit/TestName.php | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/tests/Unit/TestName.php b/tests/Unit/TestName.php index a7455d32..b7f91d54 100644 --- a/tests/Unit/TestName.php +++ b/tests/Unit/TestName.php @@ -13,16 +13,52 @@ it('may start with P', function (string $real, string $toBePrinted) { ]); $names = [ - 'ふが' => '__pest_evaluable_ふが', + 'ふ+が+' => '__pest_evaluable_ふ_が_', 'ほげ' => '__pest_evaluable_ほげ', '卜竹弓一十山' => '__pest_evaluable_卜竹弓一十山', + 'アゴデヸ' => '__pest_evaluable_アゴデヸ', '!p8VrB' => '__pest_evaluable__p8VrB', '&xe6VeKWF#n4' => '__pest_evaluable__xe6VeKWF_n4', '%%HurHUnw7zM!' => '__pest_evaluable___HurHUnw7zM_', 'rundeliekend' => '__pest_evaluable_rundeliekend', 'g%%c!Jt9$fy#Kf' => '__pest_evaluable_g__c_Jt9_fy_Kf', 'NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX' => '__pest_evaluable_NRs_Gz2_hmB_W_BPD__b2U_3P_z_apnwSX', - 'ÀĤ{¼' => '__pest_evaluable_ÀĤ_¼', + 'ÀĤ{¼÷' => '__pest_evaluable_ÀĤ_¼÷', + 'ìèéàòç' => '__pest_evaluable_ìèéàòç', + 'زهراء المعادي' => '__pest_evaluable_زهراء_المعادي', + 'الجبيهه' => '__pest_evaluable_الجبيهه', + 'الظهران' => '__pest_evaluable_الظهران', + 'Каролин' => '__pest_evaluable_Каролин', + 'অ্যান্টার্কটিকা' => '__pest_evaluable_অ্যান্টার্কটিকা', + 'Frýdek-Místek"' => '__pest_evaluable_Frýdek_Místek_', + 'Allingåbro&' => '__pest_evaluable_Allingåbro_', + 'Κεντροαφρικανική Δημοκρατία' => '__pest_evaluable_Κεντροαφρικανική_Δημοκρατία', + 'آذربایجان غربی' => '__pest_evaluable_آذربایجان_غربی', + 'זימבבואה' => '__pest_evaluable_זימבבואה', + 'Belišće' => '__pest_evaluable_Belišće', + 'Գվատեմալա' => '__pest_evaluable_Գվատեմալա', + 'パプアニューギニア' => '__pest_evaluable_パプアニューギニア', + '富山県' => '__pest_evaluable_富山県', + 'Қарағанды' => '__pest_evaluable_Қарағанды', + 'Қостанай' => '__pest_evaluable_Қостанай', + '안양시 동안구' => '__pest_evaluable_안양시_동안구', + 'Itālija' => '__pest_evaluable_Itālija', + 'Honningsvåg' => '__pest_evaluable_Honningsvåg', + 'Águeda' => '__pest_evaluable_Águeda', + 'Râșcani' => '__pest_evaluable_Râșcani', + 'Năsăud' => '__pest_evaluable_Năsăud', + 'Орехово-Зуево' => '__pest_evaluable_Орехово_Зуево', + 'Čereňany' => '__pest_evaluable_Čereňany', + 'Moravče' => '__pest_evaluable_Moravče', + 'Šentjernej' => '__pest_evaluable_Šentjernej', + 'Врање' => '__pest_evaluable_Врање', + 'Крушевац' => '__pest_evaluable_Крушевац', + 'Åkersberga' => '__pest_evaluable_Åkersberga', + 'บอสเนียและเฮอร์เซโกวีนา' => '__pest_evaluable_บอสเนียและเฮอร์เซโกวีนา', + 'Birleşik Arap Emirlikleri' => '__pest_evaluable_Birleşik_Arap_Emirlikleri', + 'Німеччина' => '__pest_evaluable_Німеччина', + 'Nam Định' => '__pest_evaluable_Nam_Định', + '呼和浩特' => '__pest_evaluable_呼和浩特', ]; foreach ($names as $name => $methodName) {