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

About correspondence to phpunit 6.0 #1305

Open
iti-ohuchi opened this issue Feb 28, 2017 · 9 comments
Open

About correspondence to phpunit 6.0 #1305

iti-ohuchi opened this issue Feb 28, 2017 · 9 comments

Comments

@iti-ohuchi
Copy link

iti-ohuchi commented Feb 28, 2017

Since phpunit 6.0 was released and stabilized, we upgraded from 5.7.Now we are receiving following logs being outputted from phpci.

RUNNING PLUGIN: php_unit
PHPUnit 6.0.7 by Sebastian Bergmann and contributors.
unrecognized option --tap
Exception: No TAP log found, please check the configuration.
PLUGIN: FAILED

As a result of an examination, it seems that the --tap option is no longer available in phpunit 6.0.

Are there any ways to make it work like before without using the --tap option?
Also please tell me if there is any schedule where you guys can respond to this issue to phpunit 6.0

@merlindiavova
Copy link

any news on this?

@underthecocotree
Copy link

Downgrade phpunit on your project composer.json to v5.7

It says in the wiki that if you have phpunit in your projects composer.json it will conflict. It just picks up the projects version instead of the one used by phpci.

So until this is updated you can downgrade phpunit.

@ptejada
Copy link
Contributor

ptejada commented Jun 15, 2017

Hello,

Can some test if this pull request works with phpunit 6.0?
#1275

It replaces the TAP parser.

@iti-ohuchi
Copy link
Author

I have tried the #1275 and it returns the following result.

RUNNING PLUGIN: php_unit
PHPUnit 6.2.3 by Sebastian Bergmann and contributors.
unrecognized option --log-json
Exception: No test executed.
PLUGIN: FAILED

Above is 6.2.3 execution log but even on 6.0, it returns the same result.

For reference I have attached the usable option on phpunit 6.2.3.

$ phpunit --help
PHPUnit 6.2.3 by Sebastian Bergmann and contributors.

Usage: phpunit [options] UnitTest [UnitTest.php]
       phpunit [options] 

Code Coverage Options:

  --coverage-clover     Generate code coverage report in Clover XML format.
  --coverage-crap4j     Generate code coverage report in Crap4J XML format.
  --coverage-html        Generate code coverage report in HTML format.
  --coverage-php        Export PHP_CodeCoverage object to file.
  --coverage-text=      Generate code coverage report in text format.
                              Default: Standard output.
  --coverage-xml         Generate code coverage report in PHPUnit XML format.
  --whitelist            Whitelist  for code coverage analysis.
  --disable-coverage-ignore   Disable annotations for ignoring code coverage.

Logging Options:

  --log-junit           Log test execution in JUnit XML format to file.
  --log-teamcity        Log test execution in TeamCity format to file.
  --testdox-html        Write agile documentation in HTML format to file.
  --testdox-text        Write agile documentation in Text format to file.
  --testdox-xml         Write agile documentation in XML format to file.
  --reverse-list              Print defects in reverse order

Test Selection Options:

  --filter           Filter which tests to run.
  --testsuite       Filter which testsuite to run.
  --group ...                 Only runs tests from the specified group(s).
  --exclude-group ...         Exclude tests from the specified group(s).
  --list-groups               List available test groups.
  --list-suites               List available test suites.
  --test-suffix ...           Only search for test in files with specified
                              suffix(es). Default: Test.php,.phpt

Test Execution Options:

  --dont-report-useless-tests Do not report tests that do not test anything.
  --strict-coverage           Be strict about @covers annotation usage.
  --strict-global-state       Be strict about changes to global state
  --disallow-test-output      Be strict about output during tests.
  --disallow-resource-usage   Be strict about resource usage during small tests.
  --enforce-time-limit        Enforce time limit based on test size.
  --disallow-todo-tests       Disallow @todo-annotated tests.

  --process-isolation         Run each test in a separate PHP process.
  --globals-backup            Backup and restore $GLOBALS for each test.
  --static-backup             Backup and restore static attributes for each test.

  --colors=             Use colors in output ("never", "auto" or "always").
  --columns                Number of columns to use for progress output.
  --columns max               Use maximum number of columns for progress output.
  --stderr                    Write to STDERR instead of STDOUT.
  --stop-on-error             Stop execution upon first error.
  --stop-on-failure           Stop execution upon first error or failure.
  --stop-on-warning           Stop execution upon first warning.
  --stop-on-risky             Stop execution upon first risky test.
  --stop-on-skipped           Stop execution upon first skipped test.
  --stop-on-incomplete        Stop execution upon first incomplete test.
  --fail-on-warning           Treat tests with warnings as failures.
  --fail-on-risky             Treat risky tests as failures.
  -v|--verbose                Output more verbose information.
  --debug                     Display debugging information.

  --loader            TestSuiteLoader implementation to use.
  --repeat             Runs the test(s) repeatedly.
  --teamcity                  Report test execution progress in TeamCity format.
  --testdox                   Report test execution progress in TestDox format.
  --testdox-group             Only include tests from the specified group(s).
  --testdox-exclude-group     Exclude tests from the specified group(s).
  --printer          TestListener implementation to use.

Configuration Options:

  --bootstrap           A "bootstrap" PHP file that is run before the tests.
  -c|--configuration    Read configuration from XML file.
  --no-configuration          Ignore default configuration file (phpunit.xml).
  --no-coverage               Ignore code coverage configuration.
  --no-logging                Ignore logging configuration.
  --no-extensions             Do not load PHPUnit extensions.
  --include-path     Prepend PHP's include_path with given path(s).
  -d key[=value]              Sets a php.ini value.
  --generate-configuration    Generate configuration file with suggested settings.

Miscellaneous Options:

  -h|--help                   Prints this usage information.
  --version                   Prints the version and exits.
  --atleast-version      Checks that version is greater than min and exits.
  --check-version             Check whether PHPUnit is the latest version.

@anatolykhelmer
Copy link

Any news on this?

@cnizzardini
Copy link

I am going to bump this as well.

@ozanhazer
Copy link

ozanhazer commented Jan 7, 2018

OK so I tried to find a solution and stuck at some point, here's the details if anyone is interested.

I've ported the tap printer to phpunit v6: ozanhazer/taplistener

We have two problems there:

  1. phpunit is called with --tap argument hard coded inside the PHPCI's Phpunit plugin which needs to be changed.
  2. Phpunit version information is printed right inside the tap output and no decent fix for that within phpunit or the taplistener plugin. There are possible workarounds though.

Actually these problems are not that big but that the real problem is phpci looks like an abandoned project to me. The build is failing most importantly so even if it's fixed we won't be able to know if we broke anything else.

I'll give up here but here are the details for those who want to fix it:

Removed --tap argument:

Add ozanhazer/taplistener to composer requirements.

Inside \PHPCI\Plugin\PhpUnit::runDir and \PHPCI\Plugin\PhpUnit::runConfigFile methods:

if phpunit version >= 6 use --printer Erelyr\\\\TapListener instead of --tap

Incorrect tap data

I think the best approach would be solving this inside PHPCI, displaying a warning about the undefined lines instead of failing.
See \PHPCI\Plugin\Util\TapParser::parseLine method.

Removing the version information within the tap listener is not possible, will need kinda hacking which would be fragile. Before phpunit 6 it was hardcoded inside PHPUnit\TextUI\TestRunner, like "don't print version information if printer is TapListener".

@bolechen
Copy link

Any news on this? is 2018 now

@boajer
Copy link

boajer commented Aug 21, 2019

Welcome to 2019, any news ?

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

No branches or pull requests

9 participants