From f8f62896c3574c0ef4d829906c8df48fe5096aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Dobe=C5=A1?= Date: Sun, 3 Jan 2021 13:04:43 +0100 Subject: [PATCH] Fix using 0-indexed case for subsequent integer-indexed cases --- src/Framework/DataProvider.php | 2 +- tests/Framework/DataProvider.load.phpt | 8 +++++++- tests/Framework/fixtures/dataprovider.ini | 4 ++++ tests/Framework/fixtures/dataprovider.php | 3 ++- tests/Runner/Runner.multiple.phpt | 3 +++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Framework/DataProvider.php b/src/Framework/DataProvider.php index 2b6c0d63..b3b57cfb 100644 --- a/src/Framework/DataProvider.php +++ b/src/Framework/DataProvider.php @@ -44,7 +44,7 @@ public static function load(string $file, string $query = ''): array } foreach ($data as $key => $value) { - if (!is_int($key) && !self::testQuery($key, $query)) { + if (!self::testQuery((string) $key, $query)) { unset($data[$key]); } } diff --git a/tests/Framework/DataProvider.load.phpt b/tests/Framework/DataProvider.load.phpt index d8c1ce9d..14b3be37 100644 --- a/tests/Framework/DataProvider.load.phpt +++ b/tests/Framework/DataProvider.load.phpt @@ -10,13 +10,19 @@ require __DIR__ . '/../bootstrap.php'; test(function () { $expect = [ - 1 => [], + 1 => ['integer' => 'abc'], + 2 => ['integer' => 'def'], 'foo' => [], 'bar' => [], ]; Assert::same($expect, DataProvider::load('fixtures/dataprovider.ini')); Assert::same($expect, DataProvider::load('fixtures/dataprovider.php')); + + foreach (array_keys($expect) as $key) { + Assert::same([$key => $expect[$key]], DataProvider::load('fixtures/dataprovider.ini', (string) $key)); + Assert::same([$key => $expect[$key]], DataProvider::load('fixtures/dataprovider.php', (string) $key)); + } }); diff --git a/tests/Framework/fixtures/dataprovider.ini b/tests/Framework/fixtures/dataprovider.ini index e00640f7..ddf077fb 100644 --- a/tests/Framework/fixtures/dataprovider.ini +++ b/tests/Framework/fixtures/dataprovider.ini @@ -1,4 +1,8 @@ [1] +integer = abc + +[2] +integer = def [foo] diff --git a/tests/Framework/fixtures/dataprovider.php b/tests/Framework/fixtures/dataprovider.php index 8d38e520..0efdd324 100644 --- a/tests/Framework/fixtures/dataprovider.php +++ b/tests/Framework/fixtures/dataprovider.php @@ -1,7 +1,8 @@ [], // integer key + 1 => ['integer' => 'abc'], // first integer key + 2 => ['integer' => 'def'], // second integer key 'foo' => [], 'bar' => [], ]; diff --git a/tests/Runner/Runner.multiple.phpt b/tests/Runner/Runner.multiple.phpt index bf794388..a84465d3 100644 --- a/tests/Runner/Runner.multiple.phpt +++ b/tests/Runner/Runner.multiple.phpt @@ -31,12 +31,15 @@ $path = __DIR__ . DIRECTORY_SEPARATOR . 'multiple' . DIRECTORY_SEPARATOR; Assert::same([ ['dataProvider.multiple.phptx', [['dataprovider', "1|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '0']]], ['dataProvider.multiple.phptx', [['dataprovider', "1|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '1']]], + ['dataProvider.multiple.phptx', [['dataprovider', "2|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '0']]], + ['dataProvider.multiple.phptx', [['dataprovider', "2|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '1']]], ['dataProvider.multiple.phptx', [['dataprovider', "bar|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '0']]], ['dataProvider.multiple.phptx', [['dataprovider', "bar|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '1']]], ['dataProvider.multiple.phptx', [['dataprovider', "foo|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '0']]], ['dataProvider.multiple.phptx', [['dataprovider', "foo|$path../../Framework/fixtures/dataprovider.ini"], ['multiple', '1']]], ['dataProvider.phptx', [['dataprovider', "1|$path../../Framework/fixtures/dataprovider.ini"]]], + ['dataProvider.phptx', [['dataprovider', "2|$path../../Framework/fixtures/dataprovider.ini"]]], ['dataProvider.phptx', [['dataprovider', "bar|$path../../Framework/fixtures/dataprovider.ini"]]], ['dataProvider.phptx', [['dataprovider', "foo|$path../../Framework/fixtures/dataprovider.ini"]]],