Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package fr.adrienbrault.idea.symfony2plugin.tests.util.yaml;

import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.php.lang.psi.elements.Parameter;
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlHelper;
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlPsiElementFactory;
Expand All @@ -20,7 +24,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
* @author Daniel Espendiller <daniel@espendiller.net>
Expand Down Expand Up @@ -605,6 +609,74 @@ public void testGetServiceKeyFromResourceFromStringOrArray() {
assertEquals("App\\", YamlHelper.getServiceKeyFromResourceFromStringOrArray(fromText));
}

@NotNull
private Collection<String> getClassNamesFromResourceGlob(@NotNull Collection<YAMLKeyValue> yamlKeyValues, @NotNull String namespace) {
YAMLKeyValue yamlKeyValue = yamlKeyValues.stream()
.filter(yamlKeyValue1 -> namespace.equals(yamlKeyValue1.getKeyText()))
.findFirst()
.orElseThrow();

return YamlHelper.getNamespaceResourcesClasses(yamlKeyValue).stream()
.map(PhpNamedElement::getFQN)
.collect(Collectors.toSet());
}

public void testGetNamespaceResourcesClasses() {
myFixture.copyFileToProject("YamlHelper.php", "src/YamlHelper.php");
VirtualFile service = myFixture.copyFileToProject("services.yml", "src/services.yml");
PsiFile file = PsiManager.getInstance(getProject()).findFile(service);

Collection<YAMLKeyValue> yamlKeyValues = PsiTreeUtil.collectElementsOfType(file, YAMLKeyValue.class);

assertContainsElements(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo\\"),
"\\Foo\\Bar"
);

assertContainsElements(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo1\\"),
"\\Foo1\\Bar"
);

assertContainsElements(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo2\\"),
"\\Foo2\\Bar"
);

assertContainsElements(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo3\\"),
"\\Foo3\\Bar"
);

assertContainsElements(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo4\\"),
"\\Foo4\\Bar"
);
}

public void testGetNamespaceResourcesClassesWithExclude() {
myFixture.copyFileToProject("YamlHelper.php", "src/YamlHelper.php");
VirtualFile service = myFixture.copyFileToProject("services.yml", "src/services.yml");
PsiFile file = PsiManager.getInstance(getProject()).findFile(service);

Collection<YAMLKeyValue> yamlKeyValues = PsiTreeUtil.collectElementsOfType(file, YAMLKeyValue.class);

assertDoesntContain(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo5\\"),
"\\Foo5\\Bar"
);

assertDoesntContain(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo6\\"),
"\\Foo6\\Bar"
);

assertDoesntContain(
getClassNamesFromResourceGlob(yamlKeyValues, "Foo7\\"),
"\\Foo7\\Bar"
);
}

private int getIndentForTextContent(@NotNull String content) {
return YamlHelper.getIndentSpaceForFile((YAMLFile) YamlPsiElementFactory.createDummyFile(
getProject(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace Foo
{
class Bar
{
public function __construct(Bar $foobar, Bar $foobar1)
{
}

public function setBar($arg1, $arg2)
{
}
}
}


namespace Foo1
{
class Bar {}
}

namespace Foo2
{
class Bar {}
}

namespace Foo3
{
class Bar {}
}

namespace Foo4
{
class Bar {}
}

namespace Foo5
{
class Bar {}
}

namespace Foo6
{
class Bar {}
}

namespace Foo7
{
class Bar {}
}

namespace Foo8
{
class Bar {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
services:
Foo\:
resource: ../src/*

Foo1\:
resource: ../src/

Foo2\:
resource: ../src/**

Foo3\:
resource: ../src/YamlHelper.php

Foo4\:
resource: ../src/*.php

Foo5\:
resource: ../src/*.php
exclude: '../src/YamlHelper.php'

Foo6\:
resource: ../src/*.php
exclude:
- '../src/YamlHelper.php'

Foo7\:
resource: ../src/*.php
exclude: ['../src/YamlHelper.php']