• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PHPCSStandards / PHP_CodeSniffer / 13729446547 / 1
79%
master: 79%

Build:
DEFAULT BRANCH: master
Ran 07 Mar 2025 09:43PM UTC
Files 309
Run time 12s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 Mar 2025 09:15PM UTC coverage: 2.427%. Remained the same
13729446547.1

push

github

web-flow
Tests/Tokenizer: fix bug in the `default` keyword tests (#850)

This commit fixes a bug in `RecurseScopeMapDefaultKeywordConditionsTest
::testSwitchDefault()`. Among other things, this method checks whether
tokens within the scope of a `default` have `T_DEFAULT` set as the scope
condition.

But the code would never check if the scope condition is set for the
tokens within the scope of a `T_DEFAULT` token when `$conditionStop` is
not `null`. `$conditionStop` is used when `T_DEFAULT` uses curlies to
open and close the scope. In those cases, scope conditions are not set
all the way until the scope closer. Instead, they are set only until
just before a T_BREAK|T_RETURN|T_CONTINUE.

`simple_switch_default_with_curlies` test case is the only one that
currently sets `$conditionStop` to something other than `null`. But it
passes an offset value of the condition stop while the code was
expecting an absolute value of the index of the token where the scope
condition stops being set. Passing an offset meant that when `$end` was
set to be equal to `$conditionStop` it would always be less than `$i`
and the assertion inside the `for` loop would never run:

https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/be74da1a2/tests/Core/Tokenizers/Tokenizer/RecurseScopeMapDefaultKeywordConditionsTest.php#L160-L170

Now the code calculates the correct value for `$end` when
`$conditionStop` is not null. It was also necessary to update the value
for `$conditionStop` in `simple_switch_default_with_curlies` as it was
pointing to the wrong token.

This uncovered an inconsistency in the tokenizer that might need to be
addressed in a separate issue. When `T_DEFAULT` doesn't use curlies the
tokenizer sets `scope_condition` for all the tokens until the token just
before `T_BREAK|T_RETURN|T_CONTINUE`. But when there are curlies,
`scope_condition` is set including for `T_BREAK|T_RETURN|T_CONTINUE`. It
needs to be determined if this behavior is intentional or not.

668 of 27529 relevant lines covered (2.43%)

0.24 hits per line

Source Files on job os-windows-latest-php-8.4-custom-ini-false - 13729446547.1
  • Tree
  • List 309
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 13729446547
  • dc3a6393 on github
  • Prev Job for on master (#13726080863.3)
  • Next Job for on master (#13730164121.5)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc