Skip to content

Commit 01dccc7

Browse files
Merge branch '11.5'
2 parents a55e216 + 11a853e commit 01dccc7

File tree

5 files changed

+240
-4
lines changed

5 files changed

+240
-4
lines changed

ChangeLog-12.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ All notable changes of the PHPUnit 12.0 release series are documented in this fi
1313
* [#6053](https://github.com/sebastianbergmann/phpunit/issues/6053): `Assert::isType()` (was soft-deprecated in PHPUnit 11.5)
1414
* [#6056](https://github.com/sebastianbergmann/phpunit/issues/6056): `assertContainsOnly()` (was soft-deprecated in PHPUnit 11.5)
1515
* [#6056](https://github.com/sebastianbergmann/phpunit/issues/6056): `assertNotContainsOnly()` (was soft-deprecated in PHPUnit 11.5)
16+
* [#6060](https://github.com/sebastianbergmann/phpunit/issues/6060): `containsOnly()` (was soft-deprecated in PHPUnit 11.5)
1617

1718
### Removed
1819

DEPRECATIONS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ This functionality is currently [hard-deprecated](https://phpunit.de/backward-co
1313
| [#6052](https://github.com/sebastianbergmann/phpunit/issues/6052) | `Assert::isType()` | 11.5.0 | Use `isArray()`, `isBool()`, `isCallable()`, `isFloat()`, `isInt()`, `isIterable()`, `isNull()`, `isNumeric()`, `isObject()`, `isResource()`, `isClosedResource()`, `isScalar()`, or `isString()` instead |
1414
| [#6055](https://github.com/sebastianbergmann/phpunit/issues/6055) | `Assert::assertContainsOnly()` | 11.5.0 | Use `assertContainsOnlyArray()`, `assertContainsOnlyBool()`, `assertContainsOnlyCallable()`, `assertContainsOnlyFloat()`, `assertContainsOnlyInt()`, `assertContainsOnlyIterable()`, `assertContainsOnlyNumeric()`, `assertContainsOnlyObject()`, `assertContainsOnlyResource()`, `assertContainsOnlyClosedResource()`, `assertContainsOnlyScalar()`, or `assertContainsOnlyString()` instead |
1515
| [#6055](https://github.com/sebastianbergmann/phpunit/issues/6055) | `Assert::assertNotContainsOnly()` | 11.5.0 | Use `assertContainsNotOnlyArray()`, `assertContainsNotOnlyBool()`, `assertContainsNotOnlyCallable()`, `assertContainsNotOnlyFloat()`, `assertContainsNotOnlyInt()`, `assertContainsNotOnlyIterable()`, `assertContainsNotOnlyNumeric()`, `assertContainsNotOnlyObject()`, `assertContainsNotOnlyResource()`, `assertContainsNotOnlyClosedResource()`, `assertContainsNotOnlyScalar()`, or `assertContainsNotOnlyString()` instead |
16+
| [#6059](https://github.com/sebastianbergmann/phpunit/issues/6059) | `Assert::containsOnly()` | 11.5.0 | Use `containsOnlyArray()`, `containsOnlyBool()`, `containsOnlyCallable()`, `containsOnlyFloat()`, `containsOnlyInt()`, `containsOnlyIterable()`, `containsOnlyNumeric()`, `containsOnlyObject()`, `containsOnlyResource()`, `containsOnlyClosedResource()`, `containsOnlyScalar()`, or `containsOnlyString()` instead |

src/Framework/Assert.php

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2764,11 +2764,80 @@ final public static function containsIdentical(mixed $value): TraversableContain
27642764
}
27652765

27662766
/**
2767+
* @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource (closed)'|'resource'|'scalar'|'string' $type
2768+
*
27672769
* @throws Exception
2770+
*
2771+
* @deprecated https://github.com/sebastianbergmann/phpunit/issues/6060
27682772
*/
2769-
final public static function containsOnly(NativeType $type): TraversableContainsOnly
2773+
final public static function containsOnly(string $type): TraversableContainsOnly
2774+
{
2775+
return TraversableContainsOnly::forNativeType(self::mapNativeType($type));
2776+
}
2777+
2778+
final public static function containsOnlyArray(): TraversableContainsOnly
2779+
{
2780+
return TraversableContainsOnly::forNativeType(NativeType::Array);
2781+
}
2782+
2783+
final public static function containsOnlyBool(): TraversableContainsOnly
2784+
{
2785+
return TraversableContainsOnly::forNativeType(NativeType::Bool);
2786+
}
2787+
2788+
final public static function containsOnlyCallable(): TraversableContainsOnly
2789+
{
2790+
return TraversableContainsOnly::forNativeType(NativeType::Callable);
2791+
}
2792+
2793+
final public static function containsOnlyFloat(): TraversableContainsOnly
2794+
{
2795+
return TraversableContainsOnly::forNativeType(NativeType::Float);
2796+
}
2797+
2798+
final public static function containsOnlyInt(): TraversableContainsOnly
2799+
{
2800+
return TraversableContainsOnly::forNativeType(NativeType::Int);
2801+
}
2802+
2803+
final public static function containsOnlyIterable(): TraversableContainsOnly
2804+
{
2805+
return TraversableContainsOnly::forNativeType(NativeType::Iterable);
2806+
}
2807+
2808+
final public static function containsOnlyNull(): TraversableContainsOnly
2809+
{
2810+
return TraversableContainsOnly::forNativeType(NativeType::Null);
2811+
}
2812+
2813+
final public static function containsOnlyNumeric(): TraversableContainsOnly
2814+
{
2815+
return TraversableContainsOnly::forNativeType(NativeType::Numeric);
2816+
}
2817+
2818+
final public static function containsOnlyObject(): TraversableContainsOnly
2819+
{
2820+
return TraversableContainsOnly::forNativeType(NativeType::Object);
2821+
}
2822+
2823+
final public static function containsOnlyResource(): TraversableContainsOnly
2824+
{
2825+
return TraversableContainsOnly::forNativeType(NativeType::Resource);
2826+
}
2827+
2828+
final public static function containsOnlyClosedResource(): TraversableContainsOnly
2829+
{
2830+
return TraversableContainsOnly::forNativeType(NativeType::ClosedResource);
2831+
}
2832+
2833+
final public static function containsOnlyScalar(): TraversableContainsOnly
2834+
{
2835+
return TraversableContainsOnly::forNativeType(NativeType::Scalar);
2836+
}
2837+
2838+
final public static function containsOnlyString(): TraversableContainsOnly
27702839
{
2771-
return TraversableContainsOnly::forNativeType($type);
2840+
return TraversableContainsOnly::forNativeType(NativeType::String);
27722841
}
27732842

27742843
/**

src/Framework/Assert/Functions.php

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2910,12 +2910,103 @@ function containsIdentical(mixed $value): TraversableContainsIdentical
29102910
}
29112911

29122912
if (!function_exists('PHPUnit\Framework\containsOnly')) {
2913-
function containsOnly(NativeType $type): TraversableContainsOnly
2913+
function containsOnly(string $type): TraversableContainsOnly
29142914
{
29152915
return Assert::containsOnly(...func_get_args());
29162916
}
29172917
}
29182918

2919+
if (!function_exists('PHPUnit\Framework\containsOnlyArray')) {
2920+
function containsOnlyArray(): TraversableContainsOnly
2921+
{
2922+
return Assert::containsOnlyArray(...func_get_args());
2923+
}
2924+
}
2925+
2926+
if (!function_exists('PHPUnit\Framework\containsOnlyBool')) {
2927+
function containsOnlyBool(): TraversableContainsOnly
2928+
{
2929+
return Assert::containsOnlyBool(...func_get_args());
2930+
}
2931+
}
2932+
2933+
if (!function_exists('PHPUnit\Framework\containsOnlyCallable')) {
2934+
function containsOnlyCallable(): TraversableContainsOnly
2935+
{
2936+
return Assert::containsOnlyCallable(...func_get_args());
2937+
}
2938+
}
2939+
2940+
if (!function_exists('PHPUnit\Framework\containsOnlyFloat')) {
2941+
function containsOnlyFloat(): TraversableContainsOnly
2942+
{
2943+
return Assert::containsOnlyFloat(...func_get_args());
2944+
}
2945+
}
2946+
2947+
if (!function_exists('PHPUnit\Framework\containsOnlyInt')) {
2948+
function containsOnlyInt(): TraversableContainsOnly
2949+
{
2950+
return Assert::containsOnlyInt(...func_get_args());
2951+
}
2952+
}
2953+
2954+
if (!function_exists('PHPUnit\Framework\containsOnlyIterable')) {
2955+
function containsOnlyIterable(): TraversableContainsOnly
2956+
{
2957+
return Assert::containsOnlyIterable(...func_get_args());
2958+
}
2959+
}
2960+
2961+
if (!function_exists('PHPUnit\Framework\containsOnlyNull')) {
2962+
function containsOnlyNull(): TraversableContainsOnly
2963+
{
2964+
return Assert::containsOnlyNull(...func_get_args());
2965+
}
2966+
}
2967+
2968+
if (!function_exists('PHPUnit\Framework\containsOnlyNumeric')) {
2969+
function containsOnlyNumeric(): TraversableContainsOnly
2970+
{
2971+
return Assert::containsOnlyNumeric(...func_get_args());
2972+
}
2973+
}
2974+
2975+
if (!function_exists('PHPUnit\Framework\containsOnlyObject')) {
2976+
function containsOnlyObject(): TraversableContainsOnly
2977+
{
2978+
return Assert::containsOnlyObject(...func_get_args());
2979+
}
2980+
}
2981+
2982+
if (!function_exists('PHPUnit\Framework\containsOnlyResource')) {
2983+
function containsOnlyResource(): TraversableContainsOnly
2984+
{
2985+
return Assert::containsOnlyResource(...func_get_args());
2986+
}
2987+
}
2988+
2989+
if (!function_exists('PHPUnit\Framework\containsOnlyClosedResource')) {
2990+
function containsOnlyClosedResource(): TraversableContainsOnly
2991+
{
2992+
return Assert::containsOnlyClosedResource(...func_get_args());
2993+
}
2994+
}
2995+
2996+
if (!function_exists('PHPUnit\Framework\containsOnlyScalar')) {
2997+
function containsOnlyScalar(): TraversableContainsOnly
2998+
{
2999+
return Assert::containsOnlyScalar(...func_get_args());
3000+
}
3001+
}
3002+
3003+
if (!function_exists('PHPUnit\Framework\containsOnlyString')) {
3004+
function containsOnlyString(): TraversableContainsOnly
3005+
{
3006+
return Assert::containsOnlyString(...func_get_args());
3007+
}
3008+
}
3009+
29193010
if (!function_exists('PHPUnit\Framework\containsOnlyInstancesOf')) {
29203011
function containsOnlyInstancesOf(string $className): TraversableContainsOnly
29213012
{

tests/unit/Framework/Assert/assertThatTest.php

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,81 @@ public function testAssertThatStringEqualsStringIgnoringLineEndings(): void
121121

122122
public function testAssertThatContainsOnly(): void
123123
{
124-
$this->assertThat(['foo'], $this->containsOnly(NativeType::String));
124+
$this->assertThat(['foo'], $this->containsOnly('string'));
125+
}
126+
127+
public function testAssertThatContainsOnlyArray(): void
128+
{
129+
$this->assertThat([[]], $this->containsOnlyArray());
130+
}
131+
132+
public function testAssertThatContainsOnlyBool(): void
133+
{
134+
$this->assertThat([true], $this->containsOnlyBool());
135+
}
136+
137+
public function testAssertThatContainsOnlyCallable(): void
138+
{
139+
$callable = static function (): void
140+
{};
141+
142+
$this->assertThat([$callable], $this->containsOnlyCallable());
143+
}
144+
145+
public function testAssertThatContainsOnlyFloat(): void
146+
{
147+
$this->assertThat([0.0], $this->containsOnlyFloat());
148+
}
149+
150+
public function testAssertThatContainsOnlyInt(): void
151+
{
152+
$this->assertThat([0], $this->containsOnlyInt());
153+
}
154+
155+
public function testAssertThatContainsOnlyIterable(): void
156+
{
157+
$this->assertThat([[]], $this->containsOnlyIterable());
158+
}
159+
160+
public function testAssertThatContainsOnlyNull(): void
161+
{
162+
$this->assertThat([null], $this->containsOnlyNull());
163+
}
164+
165+
public function testAssertThatContainsOnlyNumeric(): void
166+
{
167+
$this->assertThat(['0.0'], $this->containsOnlyNumeric());
168+
}
169+
170+
public function testAssertThatContainsOnlyObject(): void
171+
{
172+
$this->assertThat([new stdClass], $this->containsOnlyObject());
173+
}
174+
175+
public function testAssertThatContainsOnlyResource(): void
176+
{
177+
$resource = fopen(__FILE__, 'r');
178+
179+
$this->assertThat([$resource], $this->containsOnlyResource());
180+
}
181+
182+
public function testAssertThatContainsOnlyClosedResource(): void
183+
{
184+
$resource = fopen(__FILE__, 'r');
185+
186+
fclose($resource);
187+
188+
$this->assertThat([$resource], $this->containsOnlyClosedResource());
189+
}
190+
191+
public function testAssertThatContainsOnlyScalar(): void
192+
{
193+
$this->assertThat(['string'], $this->containsOnlyScalar());
194+
}
195+
196+
public function testAssertThatContainsOnlyString(): void
197+
{
198+
$this->assertThat(['string'], $this->containsOnlyString());
125199
}
126200

127201
public function testAssertThatContainsOnlyInstancesOf(): void

0 commit comments

Comments
 (0)