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

Load all library files automatically in tests #204

Merged
merged 2 commits into from
Jul 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
},
"scripts": {
"lint": "vendor/bin/parallel-lint --colors src/ tests/",
"lint-7.x": "vendor/bin/parallel-lint --colors src/ tests/ --exclude tests/libs/TypesEverywhere.php --exclude tests/src/disallowed/functionCallsNamedParams.php --exclude tests/src/disallowed-allow/functionCallsNamedParams.php --exclude tests/src/disallowed/attributeUsages.php --exclude tests/src/disallowed-allow/attributeUsages.php",
"lint-8.0": "vendor/bin/parallel-lint --colors src/ tests/ --exclude tests/libs/TypesEverywhere.php",
"lint-7.x": "vendor/bin/parallel-lint --colors src/ tests/ --exclude tests/src/TypesEverywhere.php --exclude tests/src/disallowed/functionCallsNamedParams.php --exclude tests/src/disallowed-allow/functionCallsNamedParams.php --exclude tests/src/disallowed/attributeUsages.php --exclude tests/src/disallowed-allow/attributeUsages.php",
"lint-8.0": "vendor/bin/parallel-lint --colors src/ tests/ --exclude tests/src/TypesEverywhere.php",
"lint-neon": "vendor/bin/neon-lint .",
"phpcs": "vendor/bin/phpcs src/ tests/",
"cs-fix": "vendor/bin/phpcbf src/ tests/",
Expand Down
16 changes: 8 additions & 8 deletions tests/Calls/FunctionCallsInMultipleNamespacesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,36 +52,36 @@ protected function getRule(): Rule
public function testRule(): void
{
// Based on the configuration above, in this file:
$this->analyse([__DIR__ . '/../libs/FunctionInMultipleNamespaces.php'], [
$this->analyse([__DIR__ . '/../src/FunctionInMultipleNamespaces.php'], [
[
// expect this error message:
'Calling __() (as alias()) is forbidden, use MyNamespace\__ instead',
// on this line:
18,
20,
],
[
'Calling MyNamespace\__() (as __()) is forbidden, ha ha ha nope',
23,
26,
],
[
'Calling printf() is forbidden, because reasons',
26,
30,
],
[
'Calling printf() is forbidden, because reasons',
27,
31,
],
[
'Calling MyNamespace\__() (as alias()) is forbidden, ha ha ha nope',
35,
39,
],
[
'Calling printf() is forbidden, because reasons',
36,
40,
],
[
'Calling printf() is forbidden, because reasons',
37,
41,
],
]);
}
Expand Down
14 changes: 7 additions & 7 deletions tests/Usages/AttributeUsagesAllowParamsMultipleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected function getRule(): Rule
AttributeEntity::class,
],
'allowIn' => [
'../libs/ClassWithAttributesAllow.php',
'../src/disallowed-allow/ClassWithAttributesAllow.php',
],
'allowParamsAnywhereAnyValue' => [
[
Expand All @@ -57,26 +57,26 @@ protected function getRule(): Rule
public function testRule(): void
{
// Based on the configuration above, in this file:
$this->analyse([__DIR__ . '/../libs/ClassWithAttributes.php'], [
$this->analyse([__DIR__ . '/../src/disallowed/ClassWithAttributes.php'], [
[
// expect this error message:
'Attribute Attributes\AttributeEntity is forbidden, because reasons',
// on this line:
10,
8,
],
]);
$this->analyse([__DIR__ . '/../libs/ClassWithAttributesAllow.php'], [
$this->analyse([__DIR__ . '/../src/disallowed-allow/ClassWithAttributesAllow.php'], [
[
'Attribute Attributes\AttributeEntity is forbidden, because reasons',
10,
8,
],
[
'Attribute Attributes\AttributeEntity is forbidden, because reasons',
15,
12,
],
[
'Attribute Attributes\AttributeEntity is forbidden, because reasons',
22,
18,
],
]);
}
Expand Down
13 changes: 7 additions & 6 deletions tests/Usages/AttributeUsagesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,18 @@ class AttributeUsagesTest extends RuleTestCase

protected function getRule(): Rule
{
$allowed = new Allowed(new Formatter(new Normalizer()), new Normalizer(), new AllowedPath(new FilePath(new FileHelper(__DIR__))));
$normalizer = new Normalizer();
$allowed = new Allowed(new Formatter($normalizer), $normalizer, new AllowedPath(new FilePath(new FileHelper(__DIR__))));
return new AttributeUsages(
new DisallowedAttributeRuleErrors($allowed, new Identifier()),
new DisallowedAttributeFactory($allowed, new Normalizer()),
new DisallowedAttributeFactory($allowed, $normalizer),
[
[
'attribute' => [
AttributeEntity::class,
],
'allowIn' => [
'../libs/ClassWithAttributesAllow.php',
'../src/disallowed-allow/ClassWithAttributesAllow.php',
],
'allowParamsAnywhereAnyValue' => [
[
Expand All @@ -48,15 +49,15 @@ protected function getRule(): Rule
public function testRule(): void
{
// Based on the configuration above, in this file:
$this->analyse([__DIR__ . '/../libs/ClassWithAttributes.php'], [
$this->analyse([__DIR__ . '/../src/disallowed/ClassWithAttributes.php'], [
[
// expect this error message:
'Attribute Attributes\AttributeEntity is forbidden, because reasons',
// on this line:
10,
8,
],
]);
$this->analyse([__DIR__ . '/../libs/ClassWithAttributesAllow.php'], []);
$this->analyse([__DIR__ . '/../src/disallowed-allow/ClassWithAttributesAllow.php'], []);
}

}
2 changes: 1 addition & 1 deletion tests/Usages/NamespaceUsagesTypesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ protected function getRule(): Rule
public function testRule(): void
{
// Based on the configuration above, in this file:
$this->analyse([__DIR__ . '/../libs/TypesEverywhere.php'], [
$this->analyse([__DIR__ . '/../src/TypesEverywhere.php'], [
[
// expect this error message:
'Namespace Waldo\Quux\Blade is forbidden, do androids dream of electric sheep?',
Expand Down
17 changes: 7 additions & 10 deletions tests/bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
declare(strict_types = 1);

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/libs/Bar.php';
require_once __DIR__ . '/libs/Blade.php';
require_once __DIR__ . '/libs/Constructor.php';
require_once __DIR__ . '/libs/Functions.php';
require_once __DIR__ . '/libs/Inheritance.php';
require_once __DIR__ . '/libs/Royale.php';
require_once __DIR__ . '/libs/SomeInterface.php';
require_once __DIR__ . '/libs/Option.php';
require_once __DIR__ . '/libs/TestTrait.php';
require_once __DIR__ . '/libs/Traits.php';

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__ . '/libs', FilesystemIterator::SKIP_DOTS));
foreach ($iterator as $fileInfo) {
if ($fileInfo->getExtension() === 'php') {
require_once $fileInfo->getPathname();
}
}
34 changes: 0 additions & 34 deletions tests/libs/ClassWithAttributes.php

This file was deleted.

34 changes: 0 additions & 34 deletions tests/libs/ClassWithAttributesAllow.php

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
declare(strict_types=1);
declare(strict_types = 1);

namespace {

Expand All @@ -11,18 +11,22 @@ function __(): string

namespace MyNamespace {

// phpcs:ignore SlevomatCodingStandard.Namespaces.UseSpacing.IncorrectLinesCountAfterLastUse
use function __ as alias;


function __(): string
{
return alias();
}


function someOtherFn(): string
{
return __(); // The __ used here is MyNamespace\__
return __(); // The __ used here is MyNamespace\__
}


printf('oo');
\printf('oo');

Expand All @@ -37,4 +41,3 @@ function someOtherFn(): string
\printf('oo');

}

File renamed without changes.
29 changes: 29 additions & 0 deletions tests/src/disallowed-allow/ClassWithAttributesAllow.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php
declare(strict_types = 1);

namespace Attributes;

use Waldo\Quux\Blade;

#[\Attributes\AttributeEntity] // allowed by path in AttributeUsagesTest, disallowed in AttributeUsagesAllowParamsMultipleTest because no $repositoryClass parameter specified
class ClassWithAttributesAllow
{

#[\Attributes\AttributeEntity(repositoryClass: \Attributes\UserRepository::class, readOnly: false)] // allowed by path in AttributeUsagesTest, disallowed in AttributeUsagesAllowParamsMultipleTest because $repositoryClass has other value
public function hasAvocado(): bool
{
}


#[\Attributes\AttributeEntity(\Attributes\UserRepository::class)] // allowed by path in AttributeUsagesTest, disallowed in AttributeUsagesAllowParamsMultipleTest because $repositoryClass has other value
public function hasTuna(): bool
{
}


#[\Attributes\AttributeEntity(Blade::class)] // allowed in all tests, $repositoryClass present with allowed value
public function hasKetchup(): bool
{
}

}
29 changes: 29 additions & 0 deletions tests/src/disallowed/ClassWithAttributes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php
declare(strict_types = 1);

namespace Attributes;

use Waldo\Quux\Blade;

#[AttributeEntity] // disallowed, no $repositoryClass parameter specified
class ClassWithAttributes
{

#[AttributeEntity(repositoryClass: UserRepository::class, readOnly: false)] // disallowed, $repositoryClass present with any value
public function hasAvocado(): bool
{
}


#[AttributeEntity(UserRepository::class)] // allowed, $repositoryClass present with any value
public function hasTuna(): bool
{
}


#[AttributeEntity(Blade::class)] // allowed, $repositoryClass present with any value
public function hasKetchup(): bool
{
}

}