Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make tests compatible PHPUnit 4.8 and 5.7 #77

Closed
wants to merge 2 commits into from
Closed

Make tests compatible PHPUnit 4.8 and 5.7 #77

wants to merge 2 commits into from

Conversation

llaville
Copy link

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 :

  • decouple test case from PHPUnit framework itself
  • make the mock getter compatible both versions

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
Copy link

Coverage Status

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

@llaville
Copy link
Author

llaville commented Nov 7, 2017

ping no feedback or comments since 2 weeks.

@rantonmattei
Copy link
Contributor

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.

@llaville llaville closed this Sep 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants