protected List<String> getCompoundValueChildren(PyDebugValue value) throws PyDebuggerException { XValueChildrenList list = myCommunication.loadVariable(value); List<String> result = Lists.newArrayList(); for (int i = 0; i < list.size(); i++) { result.add(((PyDebugValue) list.getValue(i)).getValue()); } return result; }
protected PyDebugValue getValue(String varName) throws PyDebuggerException { XValueChildrenList l = myCommunication.loadFrame(); if (l == null) { return null; } for (int i = 0; i < l.size(); i++) { String name = l.getName(i); if (varName.equals(name)) { return (PyDebugValue) l.getValue(i); } } return null; }
protected void interrupt() { myCommunication.interrupt(); }
protected void setValue(String varName, String value) throws PyDebuggerException { PyDebugValue val = getValue(varName); myCommunication.changeVariable(val, value); }
@Override public void runTestOn(final String sdkHome) throws Exception { final Project project = getProject(); final Sdk sdk = createTempSdk(sdkHome, SdkCreationType.EMPTY_SDK); setProcessCanTerminate(false); PydevConsoleRunner consoleRunner = new PydevConsoleRunner( project, sdk, PyConsoleType.PYTHON, myFixture.getTempDirPath(), Maps.<String, String>newHashMap(), PyConsoleOptions.getInstance(project).getPythonConsoleSettings(), new String[] {}) { @Override protected void showConsole( Executor defaultExecutor, @NotNull RunContentDescriptor contentDescriptor) { myContentDescriptorRef.set(contentDescriptor); super.showConsole(defaultExecutor, contentDescriptor); } }; before(); myConsoleInitSemaphore = new Semaphore(0); consoleRunner.addConsoleListener( new PydevConsoleRunner.ConsoleListener() { @Override public void handleConsoleInitialized(LanguageConsoleView consoleView) { myConsoleInitSemaphore.release(); } }); consoleRunner.run(); waitFor(myConsoleInitSemaphore); myCommandSemaphore = new Semaphore(1); myConsoleView = consoleRunner.getConsoleView(); myProcessHandler = (PyConsoleProcessHandler) consoleRunner.getProcessHandler(); myExecuteHandler = (PydevConsoleExecuteActionHandler) consoleRunner.getConsoleExecuteActionHandler(); myCommunication = consoleRunner.getPydevConsoleCommunication(); myCommunication.addCommunicationListener( new ConsoleCommunicationListener() { @Override public void commandExecuted(boolean more) { myCommandSemaphore.release(); } @Override public void inputRequested() {} }); myProcessHandler.addProcessListener( new ProcessAdapter() { @Override public void processTerminated(ProcessEvent event) { if (event.getExitCode() != 0 && !myProcessCanTerminate) { Assert.fail("Process terminated unexpectedly\n" + output()); } } }); OutputPrinter myOutputPrinter = null; if (shouldPrintOutput) { myOutputPrinter = new OutputPrinter(); myOutputPrinter.start(); } waitForOutput("PyDev console"); try { testing(); after(); } finally { setProcessCanTerminate(true); if (myOutputPrinter != null) { myOutputPrinter.stop(); } disposeConsole(); } }