Просмотр исходного кода

GroupImportFixer severely broken

Andrei Tcaci 3 лет назад
Родитель
Сommit
4bceafb16d
2 измененных файлов с 49 добавлено и 1 удалено
  1. 6 1
      src/Fixer/Import/GroupImportFixer.php
  2. 43 0
      tests/Fixer/Import/GroupImportFixerTest.php

+ 6 - 1
src/Fixer/Import/GroupImportFixer.php

@@ -97,7 +97,12 @@ final class GroupImportFixer extends AbstractFixer
             return \in_array($namespaceName, $sameNamespaces, true);
         });
 
-        sort($sameNamespaceAnalysis);
+        usort($sameNamespaceAnalysis, function (NamespaceUseAnalysis $a, NamespaceUseAnalysis $b) {
+            $namespaceA = $this->getNamespaceNameWithSlash($a);
+            $namespaceB = $this->getNamespaceNameWithSlash($b);
+
+            return \strlen($namespaceA) - \strlen($namespaceB) ?: strcmp($a->getFullName(), $b->getFullName());
+        });
 
         return $sameNamespaceAnalysis;
     }

+ 43 - 0
tests/Fixer/Import/GroupImportFixerTest.php

@@ -247,6 +247,49 @@ use Foo\Bar;
 use Foo\Baz;
 use \ReflectionClass;
 use \ReflectionMethod;
+',
+            ],
+            [
+                '<?php
+
+use Framework\Support\{Arr, Collection};
+use Framework\Database\ORM\{Model, SoftDeletes};
+use Framework\Notifications\{Notifiable, Notification};
+use Framework\Support\Facades\{DB, Log};
+use Framework\Database\ORM\Relations\{BelongsTo, HasOne};
+use Framework\Database\Query\JoinClause;
+',
+                '<?php
+
+use Framework\Database\ORM\Model;
+use Framework\Database\ORM\Relations\BelongsTo;
+use Framework\Database\ORM\Relations\HasOne;
+use Framework\Database\ORM\SoftDeletes;
+use Framework\Database\Query\JoinClause;
+use Framework\Notifications\Notifiable;
+use Framework\Notifications\Notification;
+use Framework\Support\Arr;
+use Framework\Support\Collection;
+use Framework\Support\Facades\DB;
+use Framework\Support\Facades\Log;
+',
+            ],
+            [
+                '<?php
+
+use Framework\Baz\Class6;
+use Framework\Bar\{Class3, Class4, Class5};
+use Framework\Foo\{Class1, Class2, Class7};
+',
+                '<?php
+
+use Framework\Foo\Class1;
+use Framework\Foo\Class2;
+use Framework\Bar\Class3;
+use Framework\Bar\Class4;
+use Framework\Bar\Class5;
+use Framework\Baz\Class6;
+use Framework\Foo\Class7;
 ',
             ],
         ];