| /* |
| * Copyright 2000-2009 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.lang.ant; |
| |
| import com.intellij.lang.ant.config.AntConfigurationBase; |
| import com.intellij.lang.ant.dom.AntDomMacrodefAttribute; |
| import com.intellij.openapi.application.PluginPathManager; |
| import com.intellij.openapi.util.SystemInfo; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.pom.PomTargetPsiElement; |
| import com.intellij.psi.PsiElement; |
| import com.intellij.psi.PsiFile; |
| import com.intellij.psi.PsiReference; |
| import com.intellij.psi.xml.XmlFile; |
| import com.intellij.psi.xml.XmlTag; |
| import com.intellij.testFramework.ResolveTestCase; |
| import com.intellij.util.xml.DomElement; |
| import com.intellij.util.xml.DomTarget; |
| import com.intellij.util.xml.DomUtil; |
| |
| public class AntResolveTest extends ResolveTestCase { |
| |
| public void testDefaultTarget() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testSingleDependsTarget() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testMultipleDependsTarget() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testMultipleDependsTarget1() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testMultipleDependsTarget2() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testAntCall() throws Exception { |
| doTargetTest(); |
| } |
| |
| public void testPropValueInAttribute() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute1() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute2() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute3() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute4() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute5() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute6() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute7() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute8() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttribute9() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeA() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeB() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeC() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeD() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeE() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropValueInAttributeF() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testExecProperty() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testExecProperty1() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testFailProperty() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement elem = ref.resolve(); |
| assertTrue(elem == null); |
| } |
| |
| public void testFailProperty1() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement elem = ref.resolve(); |
| assertTrue(elem == null); |
| } |
| |
| public void testEnvPropertyW() throws Exception { |
| if (SystemInfo.isWindows) doPropertyTestExpectReferenceUnresolved(); |
| } |
| |
| public void testEnvPropertyU() throws Exception { |
| if (SystemInfo.isUnix) doPropertyTestExpectReferenceUnresolved(); |
| } |
| |
| public void testEnvProperty1W() throws Exception { |
| if (SystemInfo.isWindows) doPropertyTest(); |
| } |
| |
| public void testEnvProperty1U() throws Exception { |
| if (SystemInfo.isUnix) doPropertyTest(); |
| } |
| |
| public void testNonExistingEnvProperty() throws Exception { |
| boolean isNull = false; |
| final PsiReference ref = configure(); |
| if (ref != null && ref.resolve() == null) { |
| isNull = true; |
| } |
| assertTrue(isNull); |
| } |
| |
| public void testNonExistingEnvProperty1() throws Exception { |
| boolean isNull = false; |
| final PsiReference ref = configure(); |
| if (ref != null && ref.resolve() == null) { |
| isNull = true; |
| } |
| assertTrue(isNull); |
| } |
| |
| public void testRefid() throws Exception { |
| PsiReference ref = configure(); |
| assertNotNull(ref.resolve()); |
| } |
| |
| public void testIndirectRefid() throws Exception { |
| PsiReference ref = configure(); |
| assertNotNull(ref.resolve()); |
| } |
| |
| public void testPredefinedProperty() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testMacroDef() throws Exception { |
| doTaskTest(); |
| } |
| |
| public void testNestedMacroDef() throws Exception { |
| doTaskTest(); |
| } |
| |
| public void testPresetDef() throws Exception { |
| PsiReference ref = configure(); |
| assertNotNull(ref.resolve()); |
| } |
| |
| public void testPropInDependieTarget() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropInDependieTarget1() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropDefinedInIfTargetAttribute() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement property = ref.resolve(); |
| assertTrue(property == null); |
| } |
| |
| public void testPropDefinedInUnlessTargetAttribute() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement property = ref.resolve(); |
| assertTrue(property == null); |
| } |
| |
| public void testBuildNumber() throws Exception { |
| doPropertyTest(); |
| } |
| |
| public void testPropertyInMacrodefParam() throws Exception { |
| PsiReference ref = configure(); |
| final PsiElement result = ref.resolve(); |
| assertTrue(result instanceof PomTargetPsiElement); |
| final PsiElement naviElem = ((DomTarget)((PomTargetPsiElement)result).getTarget()).getNavigationElement(); |
| final DomElement domElement = DomUtil.getDomElement(naviElem); |
| assertNotNull(domElement); |
| assertNotNull(domElement.getParentOfType(AntDomMacrodefAttribute.class, false)); |
| } |
| |
| public void testMacrodefElement() throws Exception { |
| PsiReference ref = configure(); |
| assertNotNull(ref.resolve()); |
| } |
| |
| public void testAntFilePropertyWithContexts() throws Exception { |
| final PsiReference refImporting = configureByFile("PropertyAntFileImporting.ant"); |
| |
| final PsiFile importing = refImporting.getElement().getContainingFile(); |
| assertTrue(importing instanceof XmlFile); |
| |
| final VirtualFile vFile = importing.getVirtualFile(); |
| assertTrue(vFile != null); |
| |
| final PsiReference refImported = configureByFile("PropertyAntFileImported.ant", vFile.getParent()); |
| |
| final PsiFile imported = refImported.getElement().getContainingFile(); |
| assertTrue(imported instanceof XmlFile); |
| |
| final VirtualFile importedVFile = imported.getVirtualFile(); |
| assertTrue(importedVFile != null); |
| |
| AntConfigurationBase.getInstance(getProject()).setContextFile((XmlFile)imported, (XmlFile)importing); |
| |
| assertTrue(refImported.resolve() != null); |
| assertTrue(refImporting.resolve() != null); |
| } |
| |
| private void doTargetTest() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement target = ref.resolve(); |
| assertTrue(target instanceof PomTargetPsiElement && ((PomTargetPsiElement)target).getTarget().canNavigateToSource()); |
| } |
| |
| private void doPropertyTest() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement target = ref.resolve(); |
| assertTrue( |
| (target instanceof PomTargetPsiElement && ((PomTargetPsiElement)target).getTarget().canNavigateToSource()) || |
| (target instanceof XmlTag && ("project".equalsIgnoreCase(((XmlTag)target).getName()) || "buildnumber".equalsIgnoreCase(((XmlTag)target).getName()))) |
| ); |
| } |
| |
| private void doPropertyTestExpectReferenceUnresolved() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement target = ref.resolve(); |
| assertTrue(target == null); |
| } |
| |
| private void doTaskTest() throws Exception { |
| PsiReference ref = configure(); |
| PsiElement target = ref.resolve(); |
| assertTrue(target instanceof PomTargetPsiElement && ((PomTargetPsiElement)target).getTarget().canNavigateToSource()); |
| } |
| |
| @Override |
| protected String getTestDataPath() { |
| return PluginPathManager.getPluginHomePath("ant") + "/tests/data/psi/resolve/"; |
| } |
| |
| private PsiReference configure() throws Exception { |
| return configureByFile(getTestName(false) + ".ant"); |
| } |
| |
| } |