/** * Copyright (c) 2016 by Brainwy Software Ltda. 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.editor.codecompletion; import java.io.File; import org.eclipse.core.runtime.CoreException; import org.python.pydev.core.IInterpreterManager; import org.python.pydev.core.IModule; import org.python.pydev.core.IPythonNature; import org.python.pydev.core.MisconfigurationException; import org.python.pydev.core.TestDependent; import org.python.pydev.editor.codecompletion.revisited.CodeCompletionTestsBase; import org.python.pydev.editor.codecompletion.revisited.modules.CompiledModule; import org.python.pydev.editor.codecompletion.shell.AbstractShell; import org.python.pydev.editor.codecompletion.shell.PythonShell; import org.python.pydev.editor.codecompletion.shell.PythonShellTest; import org.python.pydev.plugin.nature.PythonNature; public class PythonCompletionWithBuiltinsPython3Test extends CodeCompletionTestsBase { protected boolean isInTestFindDefinition = false; public static void main(String[] args) { try { PythonCompletionWithBuiltinsPython3Test builtins = new PythonCompletionWithBuiltinsPython3Test(); builtins.setUp(); builtins.testCodeCompletionPep484Str(); builtins.tearDown(); junit.textui.TestRunner.run(PythonCompletionWithBuiltinsPython3Test.class); } catch (Exception e) { e.printStackTrace(); } } @Override protected PythonNature createNature() { return new PythonNature() { @Override public int getInterpreterType() throws CoreException { return IInterpreterManager.INTERPRETER_TYPE_PYTHON; } @Override public int getGrammarVersion() { return IPythonNature.GRAMMAR_PYTHON_VERSION_3_0; } @Override public String resolveModule(File file) throws MisconfigurationException { if (isInTestFindDefinition) { return null; } return super.resolveModule(file); } }; } @Override protected boolean isPython3Test() { return true; } private static PythonShell shell; /* * @see TestCase#setUp() */ @Override public void setUp() throws Exception { super.setUp(); ADD_MX_TO_FORCED_BUILTINS = false; CompiledModule.COMPILED_MODULES_ENABLED = true; this.restorePythonPath(TestDependent.PYTHON_30_LIB, false); codeCompletion = new PyCodeCompletion(); //we don't want to start it more than once if (shell == null) { shell = PythonShellTest.startShell(); } AbstractShell.putServerShell(nature, AbstractShell.getShellId(), shell); IModule builtinMod = nature.getBuiltinMod(); if (builtinMod == null) { throw new AssertionError("builtins not found"); } } /* * @see TestCase#tearDown() */ @Override public void tearDown() throws Exception { CompiledModule.COMPILED_MODULES_ENABLED = false; super.tearDown(); AbstractShell.putServerShell(nature, AbstractShell.getShellId(), null); } public void testCodeCompletionPep484Str() throws Exception { String s; s = "" + "def seek(s:str):\n" + " s.t" + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } public void testCodeCompletionPep484Dict() throws Exception { String s; s = "" + "from typing import Dict\n" + "def seek(s:Dict[str, int]):\n" + " s.i" + ""; requestCompl(s, s.length(), -1, new String[] { "items()" }); } public void testCodeCompletionPep484DictUnpack() throws Exception { String s; s = "" + "from typing import Dict\n" + "def seek(s:Dict[str, int]):\n" + " for a, b in s.items():\n" + " a.t" + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } public void testCodeCompletionPep484DictUnpack2() throws Exception { String s; s = "" + "from typing import Dict\n" + "def seek(s:Dict[int, str]):\n" + " for a, b in s.items():\n" + " b.t" + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } public void testCodeCompletionPep484ListUnpack() throws Exception { String s; s = "" + "from typing import List\n" + "def seek(s:List[str]):\n" + " for a in s:\n" + " a." + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } public void testCodeCompletionPep484DictUnpack3() throws Exception { String s; s = "" + "from typing import Dict\n" + "\n" + "def call() -> Dict[int, str]:\n" + " pass\n" + "\n" + "def seek():\n" + " x = call()\n" + " for a, b in x.items():\n" + " b.t" + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } public void testCodeCompletionPep484Return() throws Exception { String s; s = "" + "def call() -> str:\n" + " pass\n" + "\n" + "def seek():\n" + " a = call()\n" + " a.t" + ""; requestCompl(s, s.length(), -1, new String[] { "title()", "translate(table)" }); } }