/** * Copyright (c) 2005-2012 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.debug.ui; import java.util.regex.Matcher; import junit.framework.TestCase; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.shared_core.SharedCorePlugin; public class PythonConsoleLineTrackerTest extends TestCase { public void testFileMatch() throws Exception { // PythonConsoleLineTrackerTest fails because it depends on org.eclipse.debug.ui.console.IConsoleLineTracker // being able to be loaded. But IConsoleLineTracker is in a plug-in with an activator that in // turn relies on the workbench being loaded, leading to a test error. This isn't a problem // when run within Eclipse as a (plain) JUint test because the Activator is skipped. // Since the classes under test rely on IConsoleLineTracker, the test must be run as a // GUI enabled Plug-in test (i.e workbench started), however if you do that the test fails // because of interactions with other services in the workbench. if (PydevPlugin.getDefault() != null) { if (SharedCorePlugin.skipKnownFailures()) { return; } } Matcher matcher = PythonConsoleLineTracker.linePattern .matcher("File \"Y:\\test_python\\src\\mod1\\mod2\\test_it2.py\", line 45, in testAnotherCase"); assertTrue(matcher.matches()); String file = matcher.group(1); String fileName = matcher.group(2); String lineNumber = matcher.group(3); assertEquals("File", file); assertEquals("Y:\\test_python\\src\\mod1\\mod2\\test_it2.py", fileName); assertEquals("45", lineNumber); matcher = PythonConsoleLineTracker.linePattern .matcher("File \"/home/users/foo/test_it2.py\", line 45, in testAnotherCase"); assertTrue(matcher.matches()); fileName = matcher.group(2); lineNumber = matcher.group(3); assertEquals("/home/users/foo/test_it2.py", fileName); assertEquals("45", lineNumber); } }