/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.ui.interpreters;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import junit.framework.TestCase;
import org.eclipse.jface.preference.PreferenceStore;
import org.python.pydev.core.IInterpreterInfo;
import org.python.pydev.core.IInterpreterManager;
import org.python.pydev.core.MisconfigurationException;
import org.python.pydev.core.TestDependent;
import org.python.pydev.editor.codecompletion.revisited.ProjectModulesManager;
import org.python.pydev.plugin.PydevTestUtils;
import org.python.pydev.shared_core.io.FileUtils;
import org.python.pydev.ui.pythonpathconf.InterpreterInfo;
/**
* @author fabioz
*
*/
public class InterpreterManagerTest extends TestCase {
private File baseDir;
private File stateLocation;
private File additionalPythonpathEntry;
public static void main(String[] args) {
try {
// DEBUG_TESTS_BASE = true;
InterpreterManagerTest test2 = new InterpreterManagerTest();
// test2.setUp();
// test2.testCompletion();
// test2.tearDown();
System.out.println("Finished");
junit.textui.TestRunner.run(InterpreterManagerTest.class);
} catch (Throwable e) {
e.printStackTrace();
}
}
@Override
protected void setUp() throws Exception {
ProjectModulesManager.IN_TESTS = true;
baseDir = PydevTestUtils.setTestPlatformStateLocation();
baseDir = new File(TestDependent.TEST_PYDEV_PLUGIN_LOC, "data_temporary_for_testing");
FileUtils.deleteDirectoryTree(baseDir);
baseDir.mkdirs();
stateLocation = new File(baseDir, "pydev_plugin_state_location");
stateLocation.mkdir();
additionalPythonpathEntry = new File(baseDir, "additional_pythonpath_entry");
additionalPythonpathEntry.mkdir();
}
@Override
protected void tearDown() throws Exception {
ProjectModulesManager.IN_TESTS = false;
FileUtils.deleteDirectoryTree(baseDir);
}
public void testInterpreterManager() throws Exception {
Collection<String> pythonpath = new ArrayList<String>();
pythonpath.add(TestDependent.PYTHON_LIB);
pythonpath.add(TestDependent.PYTHON_SITE_PACKAGES);
PreferenceStore prefs = new PreferenceStore();
String interpreterStr = new InterpreterInfo("2.6", TestDependent.PYTHON_EXE, pythonpath).toString();
prefs.setValue(IInterpreterManager.PYTHON_INTERPRETER_PATH, interpreterStr);
PythonInterpreterManager manager = new PythonInterpreterManager(prefs);
checkSameInterpreterInfo(manager);
manager.clearCaches();
InterpreterInfo info = checkSameInterpreterInfo(manager);
pythonpath = new ArrayList<String>();
pythonpath.add(TestDependent.PYTHON_LIB);
pythonpath.add(TestDependent.PYTHON_SITE_PACKAGES);
pythonpath.add(additionalPythonpathEntry.toString());
interpreterStr = new InterpreterInfo("2.6", TestDependent.PYTHON_EXE, pythonpath).toString();
prefs.setValue(IInterpreterManager.PYTHON_INTERPRETER_PATH, interpreterStr);
info = checkSameInterpreterInfo(manager);
}
private InterpreterInfo checkSameInterpreterInfo(PythonInterpreterManager manager) throws MisconfigurationException {
InterpreterInfo infoInManager = manager.getInterpreterInfo(TestDependent.PYTHON_EXE, null);
IInterpreterInfo[] interpreterInfos = manager.getInterpreterInfos();
assertEquals(1, interpreterInfos.length);
assertSame(interpreterInfos[0], infoInManager);
return infoInManager;
}
}