Search in sources :

Example 11 with InterpreterInfo

use of org.python.pydev.ast.interpreter_managers.InterpreterInfo in project Pydev by fabioz.

the class SyncSystemModulesManagerTest method testUpdateAndApply.

public void testUpdateAndApply() throws Exception {
    setupEnv();
    SyncSystemModulesManager synchManager = new SyncSystemModulesManager();
    final DataAndImageTreeNode root = new DataAndImageTreeNode(null, null, null);
    Map<IInterpreterManager, Map<String, IInterpreterInfo>> managerToNameToInfoMap = InterpreterManagersAPI.getInterpreterManagerToInterpreterNameToInfo();
    ManagerInfoToUpdate managerToNameToInfo = new ManagerInfoToUpdate(managerToNameToInfoMap);
    checkUpdateStructures(synchManager, root, managerToNameToInfo);
    checkSynchronize(synchManager, root, managerToNameToInfo);
    // Ok, the interpreter should be synchronized with the pythonpath which is currently set.
    // Now, check a different scenario: create a new path and add it to the interpreter pythonpath.
    // In this situation, the sync manager should ask the user if that path should actually be added
    // to this interpreter.
    root.clear();
    managerToNameToInfo = new ManagerInfoToUpdate(InterpreterManagersAPI.getInterpreterManagerToInterpreterNameToInfo());
    synchManager.updateStructures(null, root, managerToNameToInfo, new SyncSystemModulesManager.CreateInterpreterInfoCallback() {

        @Override
        public IInterpreterInfo createInterpreterInfo(IInterpreterManager manager, String executable, IProgressMonitor monitor) {
            Collection<String> pythonpath = new ArrayList<String>();
            pythonpath.add(libDir.toString());
            pythonpath.add(libDir2.toString());
            final InterpreterInfo info = new InterpreterInfo("2.6", TestDependent.PYTHON2_EXE, pythonpath);
            return info;
        }
    });
    assertTrue(root.hasChildren());
    List<TreeNode> selectElements = new ArrayList<>();
    selectElements.addAll(root.flattenChildren());
    synchManager.applySelectedChangesToInterpreterInfosPythonpath(root, selectElements, null);
    List<IInterpreterInfo> allInterpreterInfos = InterpreterManagersAPI.getAllInterpreterInfos();
    for (IInterpreterInfo interpreterInfo : allInterpreterInfos) {
        assertEquals(5, interpreterInfo.getModulesManager().getSize(false));
    }
}
Also used : ArrayList(java.util.ArrayList) DataAndImageTreeNode(org.python.pydev.shared_core.structure.DataAndImageTreeNode) IInterpreterManager(org.python.pydev.core.IInterpreterManager) SyncSystemModulesManager(org.python.pydev.ast.codecompletion.revisited.SyncSystemModulesManager) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) DataAndImageTreeNode(org.python.pydev.shared_core.structure.DataAndImageTreeNode) TreeNode(org.python.pydev.shared_core.structure.TreeNode) Collection(java.util.Collection) InterpreterInfo(org.python.pydev.ast.interpreter_managers.InterpreterInfo) AdditionalSystemInterpreterInfo(com.python.pydev.analysis.additionalinfo.AdditionalSystemInterpreterInfo) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) HashMap(java.util.HashMap) Map(java.util.Map) ManagerInfoToUpdate(org.python.pydev.ast.codecompletion.revisited.ManagerInfoToUpdate)

Example 12 with InterpreterInfo

use of org.python.pydev.ast.interpreter_managers.InterpreterInfo in project Pydev by fabioz.

the class SyncSystemModulesManagerTest method checkUpdateStructures.

private void checkUpdateStructures(SyncSystemModulesManager synchManager, final DataAndImageTreeNode root, ManagerInfoToUpdate managerToNameToInfo) {
    synchManager.updateStructures(null, root, managerToNameToInfo, new SyncSystemModulesManager.CreateInterpreterInfoCallback() {

        @Override
        public IInterpreterInfo createInterpreterInfo(IInterpreterManager manager, String executable, IProgressMonitor monitor) {
            Collection<String> pythonpath = new ArrayList<String>();
            pythonpath.add(libDir.toString());
            // Still the same!
            final InterpreterInfo info = new InterpreterInfo("2.6", TestDependent.PYTHON2_EXE, pythonpath);
            return info;
        }
    });
    Tuple<IInterpreterManager, IInterpreterInfo>[] managerAndInfos = managerToNameToInfo.getManagerAndInfos();
    int found = managerAndInfos.length;
    assertEquals(found, 1);
}
Also used : IInterpreterManager(org.python.pydev.core.IInterpreterManager) SyncSystemModulesManager(org.python.pydev.ast.codecompletion.revisited.SyncSystemModulesManager) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) Collection(java.util.Collection) InterpreterInfo(org.python.pydev.ast.interpreter_managers.InterpreterInfo) AdditionalSystemInterpreterInfo(com.python.pydev.analysis.additionalinfo.AdditionalSystemInterpreterInfo) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) Tuple(org.python.pydev.shared_core.structure.Tuple)

Example 13 with InterpreterInfo

use of org.python.pydev.ast.interpreter_managers.InterpreterInfo in project Pydev by fabioz.

the class SyncSystemModulesManagerTest method testSaveUserChoicesAfterSelection.

public void testSaveUserChoicesAfterSelection() throws Exception {
    setupEnv(false);
    IEclipsePreferences preferences = createPreferenceStore();
    SyncSystemModulesManager synchManager = new SyncSystemModulesManager();
    final DataAndImageTreeNode root = new DataAndImageTreeNode(null, null, null);
    Map<IInterpreterManager, Map<String, IInterpreterInfo>> managerToNameToInfo = InterpreterManagersAPI.getInterpreterManagerToInterpreterNameToInfo();
    synchManager.updateStructures(null, root, new ManagerInfoToUpdate(managerToNameToInfo), new SyncSystemModulesManager.CreateInterpreterInfoCallback() {

        @Override
        public IInterpreterInfo createInterpreterInfo(IInterpreterManager manager, String executable, IProgressMonitor monitor) {
            Collection<String> pythonpath = new ArrayList<>();
            pythonpath.add(libDir.toString());
            pythonpath.add(libDir2.toString());
            pythonpath.add(libDir3.toString());
            pythonpath.add(libZipFile.toString());
            final InterpreterInfo info = new InterpreterInfo("2.6", TestDependent.PYTHON2_EXE, pythonpath);
            return info;
        }
    });
    assertTrue(root.hasChildren());
    List<TreeNode> selectedElements = new ArrayList<>();
    TreeNode interpreterNode = (TreeNode) root.getChildren().get(0);
    selectedElements.add(interpreterNode);
    List<TreeNode> children = interpreterNode.getChildren();
    for (TreeNode<PythonpathChange> treeNode : children) {
        if (treeNode.getData().path.equals(libDir2.toString())) {
            selectedElements.add(treeNode);
        }
    }
    synchManager.saveUnselected(root, selectedElements, preferences);
    // Check that we ignored libDir3 and libZipFile
    String key = SyncSystemModulesManager.createKeyForInfo((IInterpreterInfo) ((TreeNode) root.getChildren().get(0)).getData());
    String entry = preferences.get(key, "");
    List<String> entries = StringUtils.split(entry, "|||");
    assertEquals(2, entries.size());
    HashSet<String> entriesSet = new HashSet<>(entries);
    assertEquals(new HashSet(entries), new HashSet(Arrays.asList(libDir3.toString(), libZipFile.toString())));
    // Check that only libDir2 is initially selected.
    List<TreeNode> initialSelection = synchManager.createInitialSelectionForDialogConsideringPreviouslyIgnored(root, preferences);
    assertEquals(2, initialSelection.size());
    TreeNode treeNode = initialSelection.get(0);
    TreeNode treeNode1 = initialSelection.get(1);
    TreeNode interpreterInfoNode;
    TreeNode pythonpathNode;
    if (treeNode.getData() instanceof IInterpreterInfo) {
        interpreterNode = treeNode;
        pythonpathNode = treeNode1;
    } else {
        interpreterNode = treeNode1;
        pythonpathNode = treeNode;
    }
    assertEquals(((PythonpathChange) pythonpathNode.getData()).path, libDir2.toString());
}
Also used : IEclipsePreferences(org.eclipse.core.runtime.preferences.IEclipsePreferences) ArrayList(java.util.ArrayList) DataAndImageTreeNode(org.python.pydev.shared_core.structure.DataAndImageTreeNode) IInterpreterManager(org.python.pydev.core.IInterpreterManager) SyncSystemModulesManager(org.python.pydev.ast.codecompletion.revisited.SyncSystemModulesManager) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) DataAndImageTreeNode(org.python.pydev.shared_core.structure.DataAndImageTreeNode) TreeNode(org.python.pydev.shared_core.structure.TreeNode) Collection(java.util.Collection) InterpreterInfo(org.python.pydev.ast.interpreter_managers.InterpreterInfo) AdditionalSystemInterpreterInfo(com.python.pydev.analysis.additionalinfo.AdditionalSystemInterpreterInfo) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) HashMap(java.util.HashMap) Map(java.util.Map) PythonpathChange(org.python.pydev.ast.codecompletion.revisited.SyncSystemModulesManager.PythonpathChange) ManagerInfoToUpdate(org.python.pydev.ast.codecompletion.revisited.ManagerInfoToUpdate) HashSet(java.util.HashSet)

Example 14 with InterpreterInfo

use of org.python.pydev.ast.interpreter_managers.InterpreterInfo in project Pydev by fabioz.

the class IronPythonCodeCompletionTestsBase method setInterpreterManager.

@Override
protected void setInterpreterManager(String path) {
    IronpythonInterpreterManager interpreterManager = new IronpythonInterpreterManager(this.getPreferences());
    InterpreterInfo info = (InterpreterInfo) interpreterManager.createInterpreterInfo(TestDependent.IRONPYTHON_EXE, new NullProgressMonitor(), false);
    TestDependent.IRONPYTHON_EXE = info.executableOrJar;
    if (path != null) {
        info = new InterpreterInfo(info.getVersion(), info.executableOrJar, PythonPathHelper.parsePythonPathFromStr(path, new ArrayList<String>()));
    }
    interpreterManager.setInfos(new IInterpreterInfo[] { info }, null, null);
    InterpreterManagersAPI.setIronpythonInterpreterManager(interpreterManager);
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) InterpreterInfo(org.python.pydev.ast.interpreter_managers.InterpreterInfo) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) IronpythonInterpreterManager(org.python.pydev.ast.interpreter_managers.IronpythonInterpreterManager)

Example 15 with InterpreterInfo

use of org.python.pydev.ast.interpreter_managers.InterpreterInfo in project Pydev by fabioz.

the class CodeCompletionTestsBase method afterRestorSystemPythonPath.

/**
 * @param info the information for the system manager that we just restored
 */
protected void afterRestorSystemPythonPath(InterpreterInfo info) {
    // has to be restored for the project, as we just restored the system pythonpath
    nature = null;
    // ok, the system manager must be there
    assertTrue(info.getModulesManager().getSize(true) > 0);
    // and it must be registered as the pydev interpreter manager
    IInterpreterManager iMan2 = getInterpreterManager();
    InterpreterInfo info2;
    try {
        info2 = (InterpreterInfo) iMan2.getDefaultInterpreterInfo(false);
    } catch (MisconfigurationException e) {
        throw new RuntimeException(e);
    }
    assertTrue(info2 == info);
    // does it have the loaded modules?
    assertTrue(info2.getModulesManager().getSize(true) > 0);
    assertTrue(info2.getModulesManager().getBuiltins().length > 0);
}
Also used : MisconfigurationException(org.python.pydev.core.MisconfigurationException) InterpreterInfo(org.python.pydev.ast.interpreter_managers.InterpreterInfo) IInterpreterInfo(org.python.pydev.core.IInterpreterInfo) IInterpreterManager(org.python.pydev.core.IInterpreterManager)

Aggregations

InterpreterInfo (org.python.pydev.ast.interpreter_managers.InterpreterInfo)34 IInterpreterInfo (org.python.pydev.core.IInterpreterInfo)27 IInterpreterManager (org.python.pydev.core.IInterpreterManager)13 ArrayList (java.util.ArrayList)11 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)9 AdditionalSystemInterpreterInfo (com.python.pydev.analysis.additionalinfo.AdditionalSystemInterpreterInfo)7 HashMap (java.util.HashMap)5 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)5 File (java.io.File)4 Collection (java.util.Collection)4 HashSet (java.util.HashSet)4 IEclipsePreferences (org.eclipse.core.runtime.preferences.IEclipsePreferences)4 PythonInterpreterManager (org.python.pydev.ast.interpreter_managers.PythonInterpreterManager)4 MisconfigurationException (org.python.pydev.core.MisconfigurationException)4 DataAndImageTreeNode (org.python.pydev.shared_core.structure.DataAndImageTreeNode)4 TreeNode (org.python.pydev.shared_core.structure.TreeNode)4 Tuple (org.python.pydev.shared_core.structure.Tuple)4 Map (java.util.Map)3 SyncSystemModulesManager (org.python.pydev.ast.codecompletion.revisited.SyncSystemModulesManager)3 IInfo (org.python.pydev.core.IInfo)3