668b53d841869186ce65e9ad04d0c027838d58e3
[idea/community.git] / python / testSrc / com / jetbrains / python / PyOptimizeImportsTest.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.jetbrains.python;
17
18 import com.intellij.codeInsight.actions.OptimizeImportsAction;
19 import com.intellij.ide.DataManager;
20 import com.jetbrains.python.fixtures.PyTestCase;
21
22 /**
23  * @author yole
24  */
25 public class PyOptimizeImportsTest extends PyTestCase {
26
27   @Override
28   protected void setUp() throws Exception {
29     super.setUp();
30     // importsFromTypingUnusedInTypeComments depends on registered TokenSetContributors
31     PythonDialectsTokenSetProvider.reset();
32   }
33
34   public void testSimple() {
35     doTest();
36   }
37
38   public void testOneOfMultiple() {
39     doTest();
40   }
41
42   public void testImportStar() {
43     doTest();
44   }
45
46   public void testImportStarOneOfMultiple() {
47     doTest();
48   }
49
50   public void testTryExcept() {
51     doTest();
52   }
53
54   public void testFromFuture() {
55     doTest();
56   }
57
58   public void testUnresolved() {  // PY-2201
59     doTest();
60   }
61   
62   public void testSuppressed() {  // PY-5228
63     doTest();
64   }
65
66   public void testSplit() {
67     doTest();
68   }
69
70   public void testOrderByType() {
71     doTest();
72   }
73
74   // PY-12018
75   public void testAlphabeticalOrder() {
76     doTest();
77   }
78
79   public void testInsertBlankLines() {  // PY-8355
80     doTest();
81   }
82
83   // PY-16351
84   public void testNoExtraBlankLineAfterImportBlock() {
85     final String testName = getTestName(true);
86     myFixture.copyDirectoryToProject(testName, "");
87     myFixture.configureByFile("main.py");
88     OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));
89     myFixture.checkResultByFile(testName + "/main.after.py");
90   }
91
92   // PY-18521
93   public void testImportsFromTypingUnusedInTypeComments() {
94     myFixture.copyDirectoryToProject("../typing", "");
95     doTest();
96   }
97
98   private void doTest() {
99     myFixture.configureByFile(getTestName(true) + ".py");
100     OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));
101     myFixture.checkResultByFile(getTestName(true) + ".after.py");
102   }
103
104   @Override
105   protected String getTestDataPath() {
106     return super.getTestDataPath() + "/optimizeImports";
107   }
108 }