summaryrefslogtreecommitdiff
path: root/python/testSrc/com/jetbrains/env/python/PyPackageRequirementsInspectionTest.java
blob: 8e3b75dd56a0102ec4c2ec9549f48ec05262810c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.jetbrains.env.python;

import com.google.common.collect.ImmutableSet;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PsiTestUtil;
import com.jetbrains.env.PyEnvTestCase;
import com.jetbrains.env.PyExecutionFixtureTestTask;
import com.jetbrains.python.PythonTestUtil;
import com.jetbrains.python.inspections.PyPackageRequirementsInspection;
import com.jetbrains.python.sdkTools.SdkCreationType;
import org.jetbrains.annotations.NotNull;

import java.util.Set;

/**
 * @author vlan
 */
public class PyPackageRequirementsInspectionTest extends PyEnvTestCase {
  public static final ImmutableSet<String> TAGS = ImmutableSet.of("requirements");

  public void testPartiallySatisfiedRequirementsTxt() {
    doTest("test1.py");
  }

  public void testPartiallySatisfiedSetupPy() {
    doTest("test1.py");
  }

  public void testImportsNotInRequirementsTxt() {
    doTest("test1.py");
  }

  public void testDuplicateInstallAndTests() {
    doTest("test1.py");
  }

  private void doTest(@NotNull final String filename) {
    final String dir = getTestName(false);
    runPythonTest(new PyExecutionFixtureTestTask() {
      @Override
      protected String getTestDataPath() {
        return PythonTestUtil.getTestDataPath() + "/inspections/PyPackageRequirementsInspection";
      }

      @Override
      public void runTestOn(String sdkHome) throws Exception {
        myFixture.enableInspections(PyPackageRequirementsInspection.class);
        final Sdk sdk = createTempSdk(sdkHome, SdkCreationType.SDK_PACKAGES_ONLY);
        final String perSdkDir = Integer.toHexString(System.identityHashCode(sdk));
        final VirtualFile root = myFixture.copyDirectoryToProject(dir, perSdkDir);
        assertNotNull(root);
        final Module module = myFixture.getModule();
        setupModuleSdk(module, sdk, root);
        try {
          final VirtualFile file = root.findFileByRelativePath(filename);
          assertNotNull(file);
          edt(new Runnable() {
            @Override
            public void run() {
              myFixture.testHighlighting(true, true, true, file);
            }
          });
        }
        finally {
          PsiTestUtil.removeAllRoots(module, sdk);
        }
      }

      @Override
      public Set<String> getTags() {
        return TAGS;
      }
    });
  }

  private static void setupModuleSdk(@NotNull Module module, @NotNull Sdk sdk, @NotNull VirtualFile root) {
    ModuleRootModificationUtil.setModuleSdk(module, sdk);
    PsiTestUtil.addContentRoot(module, root);
  }
}