10000 Symfony 3.3 fully support autowire in defaults in XML #966 · Koc/idea-php-symfony2-plugin@5cea34d · GitHub
[go: up one dir, main page]

Skip to content

Commit 5cea34d

Browse files
committed
Symfony 3.3 fully support autowire in defaults in XML Haehnchen#966
1 parent 32d2786 commit 5cea34d

File tree

4 files changed

+75
-11
lines changed

4 files changed

+75
-11
lines changed

src/fr/adrienbrault/idea/symfony2plugin/action/ServiceActionUtil.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -385,22 +385,28 @@ public static boolean isValidXmlParameterInspectionService(@NotNull XmlTag xmlTa
385385
}
386386
}
387387

388+
// <service autowire="[false|true]"/>
389+
String autowire = xmlTag.getAttributeValue("autowire");
390+
if("true".equalsIgnoreCase(autowire)) {
391+
return false;
392+
} else if("false".equalsIgnoreCase(autowire)) {
393+
return true;
394+
}
395+
388396
// <service><factory/></service>
389397
// symfony2 >= 2.6
390398
if(xmlTag.findSubTags("factory").length > 0) {
391399
return false;
392400
}
393401

394-
// <services><defaults/></services>
395-
PsiElement parent = xmlTag.getParent();
396-
if(!(parent instanceof XmlTag) || !"services".equals(((XmlTag) parent).getName())) {
397-
return true;
398-
}
399-
400-
// <defaults autowire="true" />
401-
for (XmlTag defaults : ((XmlTag) parent).findSubTags("defaults")) {
402-
if("true".equalsIgnoreCase(defaults.getAttributeValue("autowire"))) {
403-
return false;
402+
// <services autowire="true"><defaults/></services>
403+
PsiElement servicesTag = xmlTag.getParent();
404+
if(servicesTag instanceof XmlTag && "services".equals(((XmlTag) servicesTag).getName())) {
405+
// <defaults autowire="true" />
406+
for (XmlTag defaults : ((XmlTag) servicesTag).findSubTags("defaults")) {
407+
if("true".equalsIgnoreCase(defaults.getAttributeValue("autowire"))) {
408+
return false;
409+
}
404410
}
405411
}
406412

src/fr/adrienbrault/idea/symfony2plugin/intentions/yaml/YamlServiceArgumentInspection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class YamlServiceArgumentInspection extends LocalInspectionTool {
2727
public static final String[] INVALID_KEYS = new String[]{
2828
"parent", "factory_class", "factory_service",
2929
"factory_method", "abstract", "factory",
30-
"autowire", "resource", "exclude"
30+
"resource", "exclude"
3131
};
3232

3333
@NotNull
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package fr.adrienbrault.idea.symfony2plugin.tests.action;
2+
3+
import com.intellij.ide.highlighter.XmlFileType;
4+
import com.intellij.psi.PsiElement;
5+
import com.intellij.psi.xml.XmlTag;
6+
import fr.adrienbrault.idea.symfony2plugin.action.ServiceActionUtil;
7+
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
/*
11+
* @author Daniel Espendiller <daniel@espendiller.net>
12+
*/
13+
public class ServiceActionUtilTest extends SymfonyLightCodeInsightFixtureTestCase {
14+
public void testThatAutowireForServiceBlocksInspect() {
15+
XmlTag xmlTag = createServiceXmlTag(
16+
" <services>\n" +
17+
" <serv<caret>ice autowire=\"true\"/>\n" +
18+
" </services>"
19+
);
20+
21+
assertFalse(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
22+
}
23+
24+
public void testThatDefaultValueIsOverwriteInService() {
25+
XmlTag xmlTag = createServiceXmlTag(
26+
" <services>\n" +
27+
" <defaults autowire=\"true\" />\n" +
28+
" <serv<caret>ice autowire=\"false\"/>\n" +
29+
" </services>"
30+
);
31+
32+
assertTrue(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
33+
}
34+
35+
public void testThatAutowireForDefaultMustNotInspectService() {
36+
XmlTag xmlTag = createServiceXmlTag(
37+
" <services>\n" +
38+
" <defaults autowire=\"true\" />\n" +
39+
" <serv<caret>ice/>\n" +
40+
" </services>");
41+
42+
assertFalse(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
43+
}
44+
45+
@NotNull
46+
private XmlTag createServiceXmlTag(@NotNull String content) {
47+
myFixture.configureByText(XmlFileType.INSTANCE, content);
48+
49+
PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset());
50+
return (XmlTag) psiElement.getParent();
51+
}
52+
}

tests/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/inspection/XmlServiceArgumentInspectionTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ public void testThatDefaultValueMustNotProvideInspection() {
9999
createContainer("<defaults autowire=\"false\" /><serv<caret>ice class=\"Foo\\Bar\"/>"),
100100
"Missing argument"
101101
);
102+
103+
assertLocalInspectionContains(
104+
"services.xml",
105+
createContainer("<defaults autowire=\"true\" /><serv<caret>ice autowire=\"false\" class=\"Foo\\Bar\"/>"),
106+
"Missing argument"
107+
);
102108
}
103109

104110
private String createContainer(String serviceDefinition) {

0 commit comments

Comments
 (0)
0