mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
76 lines
3.4 KiB
Java
76 lines
3.4 KiB
Java
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
|
package com.intellij.ide.macro;
|
|
|
|
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
|
import com.intellij.openapi.actionSystem.DataContext;
|
|
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
|
|
import com.intellij.openapi.actionSystem.impl.SimpleDataContext;
|
|
import com.intellij.openapi.project.Project;
|
|
import com.intellij.openapi.roots.ModuleRootManager;
|
|
import com.intellij.openapi.util.io.FileUtil;
|
|
import com.intellij.openapi.util.text.StringUtil;
|
|
import com.intellij.openapi.vfs.VirtualFile;
|
|
import com.intellij.psi.PsiFile;
|
|
import com.intellij.testFramework.PlatformTestUtil;
|
|
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
|
|
|
|
import java.io.File;
|
|
|
|
public class MacroManagerTest extends CodeInsightFixtureTestCase {
|
|
private void doTest(String filePath, String str, String expected) throws Macro.ExecutionCancelledException {
|
|
PsiFile file = myFixture.addFileToProject(filePath, "");
|
|
String actual = MacroManager.getInstance().expandMacrosInString(str, false, getContext(file.getVirtualFile()));
|
|
assertEquals(expected, actual);
|
|
}
|
|
|
|
public DataContext getContext(VirtualFile file) {
|
|
Project project = myFixture.getProject();
|
|
return SimpleDataContext.builder()
|
|
.add(CommonDataKeys.PROJECT, project)
|
|
.add(CommonDataKeys.VIRTUAL_FILE, file)
|
|
.add(PlatformCoreDataKeys.PROJECT_FILE_DIRECTORY, PlatformTestUtil.getOrCreateProjectBaseDir(project))
|
|
.build();
|
|
}
|
|
|
|
public void testFileParentDirMacro() throws Throwable {
|
|
doTest(
|
|
"foo/bar/baz/test.txt",
|
|
"ans: $FileParentDir(bar)$ ",
|
|
"ans: " + myFixture.getTempDirPath() + File.separator + "foo "
|
|
);
|
|
doTest(
|
|
"foo/bar/baz/test2.txt",
|
|
"ans: $FileDirPathFromParent(bar)$ ",
|
|
"ans: baz" + File.separator + " "
|
|
);
|
|
doTest(
|
|
"foo/bar/baz/test3.txt",
|
|
"ans: $FileDirPathFromParent(foo/bar)$ ",
|
|
"ans: baz" + File.separator + " "
|
|
);
|
|
doTest(
|
|
"foo/bar/baz/test4.txt",
|
|
"ans: $FileDirPathFromParent(foo/bar/baz/)$ ",
|
|
"ans: "
|
|
);
|
|
}
|
|
|
|
public void testFileDirPathFromParentMacro_NoParentFound() throws Throwable {
|
|
PsiFile file = myFixture.addFileToProject("foo/bar/baz/test.txt", "");
|
|
String args = "ans: $FileDirPathFromParent(qqq/)$ ";
|
|
String actual = MacroManager.getInstance().expandMacrosInString(args, false, getContext(file.getVirtualFile()));
|
|
String expected = "ans: " + FileUtil.toSystemDependentName(StringUtil.trimEnd(file.getVirtualFile().getParent().getPath(), "/") + "/ ");
|
|
assertEquals(expected, actual);
|
|
}
|
|
|
|
public void testContentRootMacro() throws Exception {
|
|
String root = FileUtil.toSystemDependentName(ModuleRootManager.getInstance(myModule).getContentRoots()[0].getPath());
|
|
doTest("foo/bar/baz.txt", "$ContentRoot$", root);
|
|
doTest("foo/bar/baz2.txt", "$ContentRoot$$ContentRoot$", root+root);
|
|
doTest("foo/bar/baz3.txt", "$ContentRoot$$ContentRoot$$ContentRoot$", root+root+root);
|
|
doTest("foo/bar/baz4.txt", "$ContentRoot$test", root+"test");
|
|
doTest("foo/bar/baz5.txt", "test$ContentRoot$$ContentRoot$", "test"+root+root);
|
|
doTest("foo/bar/baz6.txt", "test$ContentRoot$test$ContentRoot$", "test"+root+"test"+root);
|
|
doTest("foo/bar/baz7.txt", "$ContentRoot$$ContentRoot$$ContentRoot$test", root+root+root+"test");
|
|
}
|
|
} |