Niemożliwość odpalenia testów jednostkowych coyote'a na Windows

1

Chciałem odpalić sobie normalnie testy jednostkowe, ale nie mogłem. Dostawałem bład:

Illuminate\Contracts\Container\BindingResolutionException : Target [Coyote\Repositories\Contracts\PageRepositoryInterface] is not instantiable while building [Coyote\Listeners\PageListener].
 C:\Users\User\PhpstormProjects\coyote\vendor\laravel\framework\src\Illuminate\Container\Container.php:1089
 C:\Users\User\PhpstormProjects\coyote\vendor\laravel\framework\src\Illuminate\Container\Container.php:882

google milczy.

Zacząłem debugować, i natrafiłem na źródło problemu, a mianowicie parsowanie ścieżek repozytoriów na namespace'y w RepositoryServiceProvider:

/** @var \SplFileInfo $file */
foreach ($files as $file) {
    $path = str_replace(app_path() . '/', '', $file->getPathname());
    $this->provides[] = 'Coyote\\' . str_replace('/', '\\', substr($path, 0, -4));
}

Kluczem jest str_replace(app_path() . '/', '', $file->getPathname()) - ta linijka ma zamienić aboslutną ścieżkę $file->getPathname() na relatywzną względem app_path(). Na systemach w których '/' jest separatorem katalogów, to śmiga; ale na systemach z separatorem \ otóż nie śmiga.

Strzelam że tutaj wszyscy maintainerzy coytote'a odpalają testy z dockera, a tam siedzi linuch, więc bug nie był nigdy wykryty.

PR na Githubie: https://github.com/adam-boduch/coyote/pull/645

1

@Adam Boduch: Widziałem że zmergowałes PR, to temat do zamknięcia?

2

Tak, dzięki za poprawkę :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1