Part of #2571965: [meta] Fix PHP coding standards in core, stage 1.

Approach

We are testing coding standards with PHP CodeSniffer, using the Drupal coding standards from the Coder module. Both of these packages are not installed in Drupal core. We need to do a couple of steps in order to download and configure them so we can run a coding standards check.

Step 1: Add the coding standard to the whitelist

Every coding standard is identified by a "sniff". For example, an imaginary coding standard that would require all llamas to be placed inside a square bracket fence would be called the "Drupal.AnimalControlStructure.BracketedFence sniff". There are dozens of such coding standards, and to make the work easier we have started by only whitelisting the sniffs that pass. For the moment all coding standards that are not yet fixed are simply skipped during the test.

Open the file core/phpcs.xml.dist and add a line for the sniff of this ticket. The sniff name is in the issue title. Make sure your patch will include the addition of this line.

Step 2: Install PHP CodeSniffer and the ruleset from the Coder module

Both of these packages are not installed by default in Drupal core, so we need to download them. This can be done with Composer, from the root folder of your Drupal installation:

$ composer require drupal/coder squizlabs/php_codesniffer
$ ./vendor/bin/phpcs --config-set installed_paths ../../drupal/coder/coder_sniffer

Once you have installed the phpcs package, you can list all the sniffs available to you like this:

$ ./vendor/bin/phpcs --standard=Drupal -e

This will give you a big list of sniffs, and the Drupal-based ones should be present.

Step 3: Prepare the phpcs.xml file

To speed up the testing you should make a copy of the file phpcs.xml.dist (in the core/ folder) and save it as phpcs.xml. This is the configuration file for PHP CodeSniffer.

We only want this phpcs.xml file to specify the sniff we're interested in. So we need to remove all the rule items, and add only our own sniff's rule. Rule items look like this:

<rule ref="Drupal.Classes.UnusedUseStatement"/>

Remove all of them, and add only the sniff from this issue title. This will make sure that our tests run quickly, and are not going to contain any output from unrelated sniffs.

Step 4: Run the test

Now you are ready to run the test! From within the core/ folder, run the following command to launch the test:

$ cd core/
$ ../vendor/bin/phpcs -p

This takes a couple of minutes. The -p flag shows the progress, so you have a bunch of nice dots to look at while it is running.

Step 5: Fix the failures

When the test is complete it will present you a list of all the files that contain violations of your sniff, and the line numbers where the violations occur. You could fix all of these manually, but thankfully phpcbf can fix many of them. You can call phpcbf like this:

$ ../vendor/bin/phpcbf

This will fix the errors in place. You can then make a diff of the changes using git. You can also re-run the test with phpcs and determine if that fixed all of them.

Comments

attiks created an issue. See original summary.

duaelfr’s picture

Issue tags: -Novice

As agreed between the mentors at Drupalcon, according to issues to avoid for novices, I am untagging this issue as "Beginner". This issue contains changes across a very wide range of files and might create too many other patches to need to be rerolled at this particular time. This patch has an automated way to be rerolled later so better to implement it after Drupalcon.

tstoeckler’s picture

Status: Needs review » Needs work

This does not comply with Drupal's coding standard. The closing brace should be on it's own line and there should be a newline after the opening brace.

marvin_b8’s picture

Status: Needs work » Needs review
StatusFileSize
new4.78 KB
new3.9 KB
pfrenssen’s picture

Issue summary: View changes
tstoeckler’s picture

Status: Needs review » Needs work
+++ b/core/lib/Drupal/Core/FileTransfer/Form/FileTransferAuthorizeForm.php
@@ -69,7 +69,8 @@ public function buildForm(array $form, FormStateInterface $form_state) {
+    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default'))) {
+    }
     elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default'));

The elseif should be fixed as well. I didn't run phpcs locally, so not sure if that would have been caught or not.

In any case we should fix the phpcs.xml.dist file to remove this sniff from the ignore section.

andriyun’s picture

patch outdated

andriyun’s picture

Status: Needs work » Needs review
StatusFileSize
new8.81 KB

New patch with removed Drupal.ControlStructures.InlineControlStructure sniff from phpcs.xml.dist file.

andypost’s picture

Status: Needs review » Reviewed & tested by the community
  1. +++ b/core/lib/Drupal/Component/Utility/Unicode.php
    @@ -269,7 +269,8 @@ public static function truncateBytes($string, $len) {
    -    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0);
    +    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {
    +    }
    
    +++ b/core/lib/Drupal/Core/FileTransfer/Form/FileTransferAuthorizeForm.php
    @@ -69,8 +69,10 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    -    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default')));
    -    elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default'));
    +    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default'))) {
    +    }
    

    looks that needs follow-up to fix wtf

alexpott’s picture

Status: Reviewed & tested by the community » Needs work
FILE: ...k/dev/drupal/core/modules/simpletest/src/TestServiceProvider.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 39 | ERROR | [x] Inline control structures are not allowed
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

We've got an new one :)

andriyun’s picture

Assigned: Unassigned » andriyun
andriyun’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new9.72 KB
new814 bytes

New patch.
Thank you Alexpott
RTBC b/c interdiff really small and clear

andriyun’s picture

Assigned: andriyun » Unassigned
alexpott’s picture

Status: Reviewed & tested by the community » Needs review
  1. +++ b/core/lib/Drupal/Component/Utility/Unicode.php
    @@ -269,7 +269,8 @@ public static function truncateBytes($string, $len) {
    -    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0);
    +    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {
    +    }
    
    +++ b/core/modules/simpletest/src/TestServiceProvider.php
    @@ -36,7 +36,7 @@ public function alter(ContainerBuilder $container) {
    -        for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id));
    +        for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)) {}
    

    I'm not convinced that these changes are an improvement - is there a defined coding standard for this?

  2. +++ b/core/lib/Drupal/Core/FileTransfer/Form/FileTransferAuthorizeForm.php
    @@ -69,8 +69,10 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    -    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default')));
    -    elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default'));
    +    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default'))) {
    +    }
    +    elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default')) {
    +    }
         else {
           $authorize_filetransfer_default = key($available_backends);
         }
    

    Perhaps this is better as...

        $authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default')) ?: $this->config('system.authorize')->get('filetransfer_default');
        $authorize_filetransfer_default = $authorize_filetransfer_default ?: key($available_backends);
    
alexpott’s picture

Status: Needs review » Needs work

So for point 1...

Always use curly braces even in situations where they are technically optional. Having them increases readability and decreases the likelihood of logic errors being introduced when new lines are added. The opening curly should be on the same line as the opening statement, preceded by one space. The closing curly should be on a line by itself and indented to the same level as the opening statement.

From our coding standards... so...

+++ b/core/modules/simpletest/src/TestServiceProvider.php
@@ -36,7 +36,7 @@ public function alter(ContainerBuilder $container) {
-        for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id));
+        for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)) {}

The closing } needs to be on a new line.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

pfrenssen’s picture

Issue summary: View changes
pfrenssen’s picture

Issue summary: View changes
andypost’s picture

Version: 8.1.x-dev » 8.2.x-dev
Status: Needs work » Needs review
StatusFileSize
new9.52 KB

The closing } needs to be on a new line.

the rule needs tuning or using other sniffers to prevent

PS: reroll

pfrenssen’s picture

Issue summary: View changes
alexpott’s picture

Status: Needs review » Needs work
  1. +++ b/core/lib/Drupal/Component/Utility/Unicode.php
    @@ -264,7 +264,7 @@ public static function truncateBytes($string, $len) {
    -    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0);
    +    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {}
    

    I'm not sure this is a good change. Maybe we should fix the rule and check what the real standards are.

  2. +++ b/core/lib/Drupal/Core/Database/Connection.php
    @@ -489,8 +489,8 @@ public function makeSequenceName($table, $field) {
    +    if (empty($comments)) {
    +      return ''; }
    
    +++ b/core/lib/Drupal/Core/Database/StatementPrefetch.php
    @@ -497,8 +497,8 @@ public function fetchCol($index = 0) {
    +    if (!isset($this->columnNames[$key_index]) || !isset($this->columnNames[$value_index])) {
    +      return array(); }
    

    Let's put the close on a new line.

  3. +++ b/core/lib/Drupal/Core/FileTransfer/Form/FileTransferAuthorizeForm.php
    @@ -64,8 +64,8 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    -    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default')));
    -    elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default'));
    +    if ($authorize_filetransfer_default = $form_state->getValue(array('connection_settings', 'authorize_filetransfer_default'))) {}
    +    elseif ($authorize_filetransfer_default = $this->config('system.authorize')->get('filetransfer_default')) {}
    

    This looks super awkward and is fixed in #842620: Update manager can't install modules using FTP due broken FileTransferAuthorizeForm

  4. +++ b/core/modules/color/color.module
    @@ -795,9 +795,9 @@ function _color_hsl2rgb($hsl) {
    +  if ($h * 6 < 1) { return $m1 + ($m2 - $m1) * $h * 6; }
    +  if ($h * 2 < 1) { return $m2; }
    +  if ($h * 3 < 2) { return $m1 + ($m2 - $m1) * (0.66666 - $h) * 6; }
    
    @@ -821,9 +821,9 @@ function _color_rgb2hsl($rgb) {
    +    if ($max == $r && $max != $g) { $h += ($g - $b) / $delta; }
    +    if ($max == $g && $max != $b) { $h += (2 + ($b - $r) / $delta); }
    +    if ($max == $b && $max != $r) { $h += (4 + ($r - $g) / $delta); }
    

    Let's format these properly.

  5. +++ b/core/modules/simpletest/src/TestServiceProvider.php
    @@ -41,7 +41,7 @@ public static function addRouteProvider(ContainerBuilder $container) {
    -      for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id));
    +      for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)) {}
    

    As above - I think this change is not a good one.

  6. +++ b/core/modules/taxonomy/tests/src/Unit/Menu/TaxonomyLocalTasksTest.php
    @@ -25,7 +25,7 @@ public function testTaxonomyPageLocalTasks($route, $subtask = array()) {
    +    if ($subtask) { $tasks[] = $subtask; }
    
    +++ b/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
    @@ -69,7 +69,7 @@ public function testUserPageLocalTasks($route, $subtask = array()) {
    +    if ($subtask) { $tasks[] = $subtask; }
    
    +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
    @@ -136,7 +136,7 @@ protected function setUpEntityTypeDefinitions($definitions = []) {
    +        else { throw new PluginNotFoundException($entity_type_id); }
    
    +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeManagerTest.php
    @@ -112,7 +112,7 @@ protected function setUpEntityTypeDefinitions($definitions = []) {
    +        else { throw new PluginNotFoundException($entity_type_id); }
    
    +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeRepositoryTest.php
    @@ -71,7 +71,7 @@ protected function setUpEntityTypeDefinitions($definitions = []) {
    +        else { throw new PluginNotFoundException($entity_type_id); }
    
    +++ b/core/tests/Drupal/Tests/Core/Field/FieldDefinitionListenerTest.php
    @@ -101,7 +101,7 @@ protected function setUpEntityManager($definitions = array()) {
    +        else { throw new PluginNotFoundException($entity_type_id); }
    

    Let's format these properly.

rajeshwari10’s picture

Status: Needs work » Needs review
StatusFileSize
new7.13 KB

Done changes as per #21.

Thanks!!

alexpott’s picture

Status: Needs review » Needs work
+++ b/core/phpcs.xml.dist
@@ -61,7 +61,7 @@
-  <rule ref="Drupal.ControlStructures.ControlSignature"/>
+  <rule ref="Drupal.ControlStructures.InlineControlStructure"/>

Shouldn't be removing a rule here.

rajeshwari10’s picture

Status: Needs work » Needs review
StatusFileSize
new7.13 KB

adding rule.

Status: Needs review » Needs work

The last submitted patch, 24: 2572699-24.patch, failed testing.

rajeshwari10’s picture

Status: Needs work » Needs review
StatusFileSize
new7.06 KB
pashupathi nath gajawada’s picture

Assigned: Unassigned » pashupathi nath gajawada
StatusFileSize
new7.11 KB

Please find the attached patch.

Status: Needs review » Needs work

The last submitted patch, 27: 2572699-27.patch, failed testing.

pashupathi nath gajawada’s picture

Status: Needs work » Needs review
StatusFileSize
new7.1 KB

Please find the updated patch #29.

rajeshwari10’s picture

@pashupathi nath gajawada

Please provide the interdiff.

I have done the changes as per said in #26.

Thanks!!

pashupathi nath gajawada’s picture

HI @Rajeshwari Variar,

I have done the changes as suggested by #23 suggested by Alex Pott.

Thanks,

mile23’s picture

Status: Needs review » Needs work
$ git apply 2572699-29_0.patch 
2572699-29_0.patch:48: trailing whitespace.
    return $m2;	
warning: 1 line adds whitespace errors.

Right here:

+++ b/core/modules/color/color.module
@@ -795,10 +795,15 @@ function _color_hsl2rgb($hsl) {
+    return $m2;	
rajeshwari10’s picture

Status: Needs work » Needs review
StatusFileSize
new7.1 KB
new424 bytes

Removed whitespace errors.

Thanks!!

dawehner’s picture

Status: Needs review » Needs work

This patch does NOT fixes all instances of the rule:

$ phpcs --standard=core/phpcs.xml.dist core

FILE: ...rs/dawehner/www/d8/core/lib/Drupal/Component/Utility/Unicode.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 267 | ERROR | [x] Inline control structures are not allowed
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

FILE: ...ehner/www/d8/core/modules/simpletest/src/TestServiceProvider.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 44 | ERROR | [x] Inline control structures are not allowed
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 2 mins, 9.51 secs; Memory: 129Mb


  1. +++ b/core/modules/color/color.module
    @@ -821,11 +826,16 @@ function _color_rgb2hsl($rgb) {
       }
    -
       return array($h, $s, $l);
     }
    

    Nitpick: Unneeded change

  2. +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
    @@ -136,7 +136,9 @@ protected function setUpEntityTypeDefinitions($definitions = []) {
    -        else throw new PluginNotFoundException($entity_type_id);
    +        else {
    +          throw new PluginNotFoundException($entity_type_id);
    +        }
    
    +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeManagerTest.php
    @@ -112,7 +112,9 @@ protected function setUpEntityTypeDefinitions($definitions = []) {
    -        else throw new PluginNotFoundException($entity_type_id);
    +        else {
    +          throw new PluginNotFoundException($entity_type_id);
    +        }
    

    Wow, I did not even know that this was valid syntax :)

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

mfernea’s picture

Status: Needs work » Needs review
StatusFileSize
new8.95 KB

Re-roll & updates.

andriyun’s picture

There are new phpcs fails was commited

FILE: ...drupal/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
----------------------------------------------------------------------
FOUND 4 ERRORS AFFECTING 4 LINES
----------------------------------------------------------------------
 116 | ERROR | [x] Space found before square bracket; expected
     |       |     "$cases[" but found "$cases ["
 123 | ERROR | [x] Space found before square bracket; expected
     |       |     "$cases[" but found "$cases ["
 131 | ERROR | [x] Space found before square bracket; expected
     |       |     "$cases[" but found "$cases ["
 138 | ERROR | [x] Space found before square bracket; expected
     |       |     "$cases[" but found "$cases ["
----------------------------------------------------------------------
PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------


FILE: ...b/drupal/core/modules/node/src/Plugin/migrate/source/d6/Node.php
----------------------------------------------------------------------
FOUND 4 ERRORS AFFECTING 1 LINE
----------------------------------------------------------------------
 217 | ERROR | [x] Space found after square bracket; expected
     |       |     "[$field" but found "[ $field"
 217 | ERROR | [x] Space found before square bracket; expected "]]"
     |       |     but found "] ]"
 217 | ERROR | [x] Space found after square bracket; expected
     |       |     "[$field" but found "[ $field"
 217 | ERROR | [x] Space found before square bracket; expected "]]"
     |       |     but found "] ]"
----------------------------------------------------------------------
PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Please fix them too

andriyun’s picture

Assigned: pashupathi nath gajawada » Unassigned
Status: Needs review » Needs work
mile23’s picture

Status: Needs work » Reviewed & tested by the community

We're fixing inline control structures here, not array brackets.

I reviewed the patch in #38 this way:

$ cd path/to/drupal
$ git apply [patch]
$ composer install
$ cd core
$ ../vendor/bin/phpcs -ps

This results in 0 errors, up until the process hangs at 96% which I believe is because of my ancient crappy machine. :-) Update: I just didn't let it run long enough. I wonder what file is doing that.

However, we also see that the testbot tells us that no errors occurred, and since a changed phpcs.xml.dist file will result in a testbot sniff of the whole codebase, we're safe. (Search the console output for 'PHPCS config file modified, sniffing entire project.')

The patch adds:

+++ b/core/phpcs.xml.dist
@@ -65,6 +65,7 @@
+  <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/ControlStructures/InlineControlStructureSniff.php"/>

So if any errors remained, this would result in error reports within the scope of this issue.

+++ b/core/lib/Drupal/Component/Utility/Unicode.php
@@ -264,7 +264,8 @@ public static function truncateBytes($string, $len) {
     // Scan backwards to beginning of the byte sequence.
-    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0);
+    while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {
+    }

+++ b/core/modules/simpletest/src/TestServiceProvider.php
@@ -41,7 +41,8 @@ public static function addRouteProvider(ContainerBuilder $container) {
       // While $container->get() does a recursive resolve, getDefinition() does
       // not, so do it ourselves.
-      for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id));
+      for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)) {
+      }

These are kind of weird, and are left over from #21.1 and #21.5. We shouldn't rely on side effects to control the loop. I'll say this patch fixes the CS errors within scope, but we might unwrap those loops for readability either here or in a follow-up.

andriyun’s picture

Ah... yes
Rechecked again
Confirm that no errors after patch applying

alexpott’s picture

@Mile23 yeah the long wait at 96% bugged me too - see #2911280: RectangleTest.php takes a very long time to scan for coding standards

catch’s picture

Status: Reviewed & tested by the community » Needs work

Agreed we need a follow-up for #21.1 and #21.5 - I think we should both open that and add a @todo here so marking CNW for that. It's possibly not in scope for the coding standards change to add the @todo, but it's exposed some very unreadable code.

mfernea’s picture

Status: Needs work » Needs review
StatusFileSize
new9.13 KB
new2.58 KB

Status: Needs review » Needs work

The last submitted patch, 45: drupal-coding-standards-2572699-45.patch, failed testing. View results

mfernea’s picture

Status: Needs work » Needs review
andriyun’s picture

Status: Needs review » Reviewed & tested by the community

no phpcs fails after patch applying
patch contains only sniff related changes
and include @todo comments for #21.1 and #21.5
with links to proper issues.

catch’s picture

Version: 8.5.x-dev » 8.4.x-dev
Status: Reviewed & tested by the community » Fixed

Committed/pushed to 8.5.x and cherry-picked to 8.4.x. Thanks!

  • catch committed 9188516 on 8.5.x
    Issue #2572699 by rajeshwari10, andriyun, mfernea, pashupathi nath...
andypost’s picture

Looks it was not pushed to 8.4.x

andypost’s picture

Status: Fixed » Reviewed & tested by the community

@catch please cherry pick to 8.4.x

mfernea’s picture

Status: Reviewed & tested by the community » Fixed

I can see 20a43f60d9 commit on 8.4.x, so looks ok, although it doesn't appear here in the issue. But that may be another problem.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.