IDEA-56096 Allow to create file templates with extension contains dot [CR-IC-3923]

This commit is contained in:
Rustam Vishnyakov
2014-01-30 14:48:58 +04:00
parent e507a6f16c
commit c1728ca8b1
6 changed files with 132 additions and 15 deletions
@@ -1,5 +1,6 @@
package com.intellij.ide.fileTemplates
import com.intellij.ide.fileTemplates.impl.CustomFileTemplate
import com.intellij.ide.fileTemplates.impl.FileTemplateTestUtil
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ex.PathManagerEx
import com.intellij.openapi.roots.ModuleRootManager
@@ -16,6 +17,16 @@ import com.intellij.testFramework.PsiTestUtil
import com.intellij.util.properties.EncodingAwareProperties
public class FileTemplatesTest extends IdeaTestCase {
private File myTestConfigDir;
@Override
protected void tearDown() throws Exception {
super.tearDown();
if (myTestConfigDir !=null && myTestConfigDir.exists()) {
FileUtil.delete(myTestConfigDir);
}
}
public void testAllTemplates() throws Exception {
final File testsDir = new File(PathManagerEx.getTestDataPath()+"/ide/fileTemplates");
@@ -130,4 +141,38 @@ public class FileTemplatesTest extends IdeaTestCase {
template.setText(text);
template
}
public void doTestSaveLoadTemplate(String name, String ext) {
FileTemplateTestUtil.TestFTManager templateManager = new FileTemplateTestUtil.TestFTManager("test", "testTemplates",
getTestConfigRoot());
FileTemplate template = templateManager.addTemplate(name, ext);
String qName = template.getQualifiedName();
templateManager.saveTemplates();
templateManager.removeTemplate(qName);
FileTemplateTestUtil.loadCustomizedContent(templateManager);
FileTemplate loadedTemplate = templateManager.findTemplateByName(name);
assertNotNull("Template '" + qName + "' was not found", loadedTemplate);
assertEquals(name, loadedTemplate.getName());
assertEquals(ext, loadedTemplate.getExtension());
assertTrue(template != loadedTemplate);
}
private File getTestConfigRoot() throws Exception {
if (myTestConfigDir == null) {
myTestConfigDir = FileUtil.createTempDirectory(getTestName(true), "config");
}
return myTestConfigDir;
}
public void testSaveLoadCustomTemplate() throws Exception {
doTestSaveLoadTemplate("name", "ext");
}
public void testSaveLoadCustomTemplateDottedName() throws Exception {
doTestSaveLoadTemplate("name.has.dots", "ext");
}
public void testSaveLoadCustomTemplateDottedExt() throws Exception {
doTestSaveLoadTemplate("name", "ext.has.dots");
}
}
@@ -0,0 +1,54 @@
/*
* Copyright 2000-2014 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.ide.fileTemplates.impl;
import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.io.File;
/**
* @author Rustam Vishnyakov
*/
public class FileTemplateTestUtil {
public static final class TestFTManager extends FTManager {
private File myTestConfigDir;
public TestFTManager(
@NotNull @NonNls String name,
@NotNull @NonNls String defaultTemplatesDirName,
@NotNull File testConfigDir) {
super(name, defaultTemplatesDirName);
myTestConfigDir = testConfigDir;
}
@Override
public File getConfigRoot(boolean create) {
return myTestConfigDir;
}
@Override
public void saveTemplates() {
super.saveTemplates();
}
}
public static void loadCustomizedContent(FTManager templateManager) {
FileTemplatesLoader loader = new FileTemplatesLoader(FileTypeManagerEx.getInstanceEx());
loader.loadCustomizedContent(templateManager);
}
}