theorchard / monolog-cascade

Configure multiple loggers and handlers in the blink of an eye
MIT License
145 stars 62 forks source link

Make tests compatible PHPUnit 4.8 and 5.7 #77

Closed llaville closed 5 years ago

llaville commented 7 years ago

Hello,

Because the PHPUnit version 4.8 is no longer supported, we could think to raise dependencies higher or just make the code compatible.

I'll propose you the second option, with two commits :

Awaiting your feedback.

Currently code without my PR, with PHP 5.6.31 and PHPUnit 5.7 output such results :

PHPUnit 5.7.23 by Sebastian Bergmann and contributors.

....................................................WWWWWWWWWWWWW 65 / 97 ( 67%)
WWWWWWWWW....WWWWWWWWW..........                                  97 / 97 (100%)

Time: 9.79 seconds, Memory: 18.50MB

There were 31 warnings:

1) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testReadFrom
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

2) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testLoadFileFromString
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

3) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testValidateExtension with data set #0 (true, 'hello/world.test')
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

4) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testValidateExtension with data set #1 (true, 'hello/world.php')
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

5) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testValidateExtension with data set #2 (false, 'hello/world.jpeg')
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

6) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testValidateExtension with data set #3 (false, 'hello/world')
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

7) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testValidateExtension with data set #4 (false, '')
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

8) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testGetSectionOf with data set #0 (array(array('AA', 'AB'), array('BA', 'BB')), 'b', array('BA', 'BB'))
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

9) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testGetSectionOf with data set #1 (array('A', 'B'), 'c', array('A', 'B'))
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

10) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testGetSectionOf with data set #2 (array('A', 'B'), '', array('A', 'B'))
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

11) Cascade\Tests\Config\Loader\FileLoader\FileLoaderAbstractTest::testloadFileFromInvalidFile
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

12) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testLoad
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

13) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #0 (array())
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

14) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #1 (true)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

15) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #2 (123)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

16) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #3 (123.456)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

17) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #4 (null)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

18) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #5 (stdClass Object ())
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

19) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithInvalidResource with data set #6 (Closure Object (...))
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

20) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithJsonString
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

21) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithJsonFile
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

22) Cascade\Tests\Config\Loader\FileLoader\JsonTest::testSupportsWithNonJsonString
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

23) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testLoad
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

24) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #0 (array())
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

25) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #1 (true)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

26) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #2 (123)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

27) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #3 (123.456)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

28) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #4 (null)
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

29) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithInvalidResource with data set #5 (stdClass Object ())
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

30) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithYamlString
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

31) Cascade\Tests\Config\Loader\FileLoader\YamlTest::testSupportsWithYamlFile
PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

WARNINGS!
Tests: 97, Assertions: 139, Warnings: 31.

Code Coverage Report:
  2017-10-23 18:14:17

 Summary:
  Classes: 100.00% (16/16)
  Methods: 100.00% (70/70)
  Lines:   100.00% (381/381)

\Cascade::Cascade
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 18/ 18)
\Cascade::Config
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 46/ 46)
\Cascade::Util
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  4/  4)
\Cascade\Config::ConfigLoader
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)
\Cascade\Config\Loader::ClassLoader
  Methods: 100.00% ( 9/ 9)   Lines: 100.00% ( 73/ 73)
\Cascade\Config\Loader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader::FormatterLoader
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  6/  6)
\Cascade\Config\Loader\ClassLoader::HandlerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 69/ 69)
\Cascade\Config\Loader\ClassLoader::LoggerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 48/ 48)
\Cascade\Config\Loader\ClassLoader::ProcessorLoader
  Methods: 100.00% ( 1/ 1)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader\Resolver::ConstructorResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 33/ 33)
\Cascade\Config\Loader\ClassLoader\Resolver::ExtraOptionsResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 28/ 28)
\Cascade\Config\Loader\FileLoader::FileLoaderAbstract
  Methods: 100.00% ( 4/ 4)   Lines: 100.00% ( 13/ 13)
\Cascade\Config\Loader\FileLoader::Json
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  9/  9)
\Cascade\Config\Loader\FileLoader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  7/  7)
\Cascade\Config\Loader\FileLoader::Yaml
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  6/  6)

With my PR, with PHP 5.6.31 and PHPUnit 4.8 give

PHPUnit 4.8.36 by Sebastian Bergmann and contributors.

................................................................. 65 / 97 ( 67%)
................................

Time: 23.97 seconds, Memory: 10.50MB

OK (97 tests, 139 assertions)

Code Coverage Report:
  2017-10-23 19:09:27

 Summary:
  Classes: 100.00% (16/16)
  Methods: 100.00% (70/70)
  Lines:   100.00% (381/381)

\Cascade::Cascade
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 18/ 18)
\Cascade::Config
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 46/ 46)
\Cascade::Util
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  4/  4)
\Cascade\Config::ConfigLoader
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)
\Cascade\Config\Loader::ClassLoader
  Methods: 100.00% ( 9/ 9)   Lines: 100.00% ( 73/ 73)
\Cascade\Config\Loader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader::FormatterLoader
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  6/  6)
\Cascade\Config\Loader\ClassLoader::HandlerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 69/ 69)
\Cascade\Config\Loader\ClassLoader::LoggerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 48/ 48)
\Cascade\Config\Loader\ClassLoader::ProcessorLoader
  Methods: 100.00% ( 1/ 1)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader\Resolver::ConstructorResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 33/ 33)
\Cascade\Config\Loader\ClassLoader\Resolver::ExtraOptionsResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 28/ 28)
\Cascade\Config\Loader\FileLoader::FileLoaderAbstract
  Methods: 100.00% ( 4/ 4)   Lines: 100.00% ( 13/ 13)
\Cascade\Config\Loader\FileLoader::Json
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  9/  9)
\Cascade\Config\Loader\FileLoader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  7/  7)
\Cascade\Config\Loader\FileLoader::Yaml
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  6/  6)

And of course with PHP 5.6.31 and PHPUnit 5.7

PHPUnit 5.7.23 by Sebastian Bergmann and contributors.

................................................................. 65 / 97 ( 67%)
................................                                  97 / 97 (100%)

Time: 10.39 seconds, Memory: 16.25MB

OK (97 tests, 139 assertions)

Code Coverage Report:
  2017-10-23 19:19:50

 Summary:
  Classes: 100.00% (16/16)
  Methods: 100.00% (70/70)
  Lines:   100.00% (381/381)

\Cascade::Cascade
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 18/ 18)
\Cascade::Config
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 46/ 46)
\Cascade::Util
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  4/  4)
\Cascade\Config::ConfigLoader
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)
\Cascade\Config\Loader::ClassLoader
  Methods: 100.00% ( 9/ 9)   Lines: 100.00% ( 73/ 73)
\Cascade\Config\Loader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader::FormatterLoader
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  6/  6)
\Cascade\Config\Loader\ClassLoader::HandlerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 69/ 69)
\Cascade\Config\Loader\ClassLoader::LoggerLoader
  Methods: 100.00% ( 6/ 6)   Lines: 100.00% ( 48/ 48)
\Cascade\Config\Loader\ClassLoader::ProcessorLoader
  Methods: 100.00% ( 1/ 1)   Lines: 100.00% (  2/  2)
\Cascade\Config\Loader\ClassLoader\Resolver::ConstructorResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 33/ 33)
\Cascade\Config\Loader\ClassLoader\Resolver::ExtraOptionsResolver
  Methods: 100.00% ( 7/ 7)   Lines: 100.00% ( 28/ 28)
\Cascade\Config\Loader\FileLoader::FileLoaderAbstract
  Methods: 100.00% ( 4/ 4)   Lines: 100.00% ( 13/ 13)
\Cascade\Config\Loader\FileLoader::Json
  Methods: 100.00% ( 3/ 3)   Lines: 100.00% (  9/  9)
\Cascade\Config\Loader\FileLoader::PhpArray
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  7/  7)
\Cascade\Config\Loader\FileLoader::Yaml
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% (  6/  6)
coveralls commented 7 years ago

Coverage Status

Coverage remained the same at 100.0% when pulling 0c335ccda050c2133730e7ffd75ea2c03d69f6ae on llaville:master into 4054bd45b36f15cb4214e18ecdb94bb9185e286c on theorchard:master.

llaville commented 6 years ago

ping no feedback or comments since 2 weeks.

rantonmattei commented 6 years ago

Hello @llaville, thanks for bringing this issue. I'd rather not having to maintain multiple versions of PhpUnit in the code because it would open the door to many requests depending on each person's versions of Php, packages, etc. Loose versioning seems more appropriate.

Looks to me that replacing instances of getMock('[classname]') with getMockBuilder('[classname]')->getMock() does the trick.

E.g. in practice:

$fileLocatorMock = $this->getMock(
    'Symfony\Component\Config\FileLocatorInterface'
);

would become

$fileLocatorMock = $this->getMockBuilder(
    'Symfony\Component\Config\FileLocatorInterface'
)->getMock();

As a result, we'll also need to bump up the version of phpunit/phpcov to ^3.1 which looks fine to me.

Unfortunately, although it is a quick task, I do not have the bandwidth to tackle this at the moment feel free to update your PR or submit a new one.

Cheers! Raf

PS: FYI @jessmchung ^^^ let me know if you have some input on this.