diff --git a/tests/org.eclipse.dltk.ruby.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.dltk.ruby.core.tests/META-INF/MANIFEST.MF
index e259618..f4b76aa 100644
--- a/tests/org.eclipse.dltk.ruby.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.dltk.ruby.core.tests/META-INF/MANIFEST.MF
@@ -12,9 +12,7 @@
  org.eclipse.dltk.core;bundle-version="0.0.0",
  org.eclipse.dltk.ruby.core,
  org.eclipse.dltk.core.tests,
- org.eclipse.dltk.ruby.launching,
- org.eclipse.dltk.launching;bundle-version="0.0.0",
- org.eclipse.dltk.ruby.debug
+ org.eclipse.dltk.launching;bundle-version="0.0.0"
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.dltk.ruby.core.tests,
  org.eclipse.dltk.ruby.core.tests.parser
diff --git a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/AllTests.java b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/AllTests.java
index 9d6e256..01d0f5b 100755
--- a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/AllTests.java
+++ b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/AllTests.java
@@ -1,8 +1,5 @@
 package org.eclipse.dltk.ruby.core.tests;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
 import org.eclipse.dltk.ruby.core.tests.assist.RubySelectionTests;
 import org.eclipse.dltk.ruby.core.tests.parser.RubyParserRecoveryTests;
 import org.eclipse.dltk.ruby.core.tests.parser.RubyParserTests;
@@ -19,47 +16,23 @@
 import org.eclipse.dltk.ruby.core.tests.typeinference.SimpleTest;
 import org.eclipse.dltk.ruby.core.tests.typeinference.StatementsTest;
 import org.eclipse.dltk.ruby.core.tests.typeinference.VariablesTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
 
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ RubyResourcesTests.class, MixinTestsSuite.class, MixinModelManipulationTests.class,
+		RubyMixinClassTests.class, RubySelectionTests.class, RubyCompletionTests.class, RubyParserTests.class,
+		RubyParserRecoveryTests.class, VariablesTest.class, MethodsTest.class, StatementsTest.class, SimpleTest.class,
+		MixinProjectIsolationTests.class, RubySearchTests.class, RubyFullNameSearchTests.class,
+		RubyMethodSearchTests.class })
 public class AllTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite("org.eclipse.dltk.ruby.core");
-		// $JUnit-BEGIN$
-		suite.addTest(RubyResourcesTests.suite());
-		// suite.addTest(SourceCacheTests.suite());
-		suite.addTest(MixinTestsSuite.suite());
-		suite.addTest(MixinModelManipulationTests.suite());
-		suite.addTest(RubyMixinClassTests.suite());
 
-		suite.addTest(RubySelectionTests.suite());
-		suite.addTest(RubyCompletionTests.suite());
+	// FIXME: fix running of this tests under mac os x
+	// suite.addTest(StdlibRubyParserTests.suite());
+	// suite.addTest(JRuby1RubyParserTests.suite());
 
-		suite.addTestSuite(RubyParserTests.class);
-		suite.addTestSuite(RubyParserRecoveryTests.class);
+	// XXX: uncomment this tests, when type hierarchies
+	// support will be implemented
+	// suite.addTest(TypeHierarchyTests.suite());
 
-		// FIXME: fix running of this tests under mac os x
-		// suite.addTest(StdlibRubyParserTests.suite());
-		// suite.addTest(JRuby1RubyParserTests.suite());
-
-		// XXX: uncomment this tests, when type hierarchies
-		// support will be implemented
-		// suite.addTest(TypeHierarchyTests.suite());
-
-		// Type inference
-		suite.addTest(VariablesTest.suite());
-		suite.addTest(MethodsTest.suite());
-		suite.addTest(StatementsTest.suite());
-		suite.addTest(SimpleTest.suite());
-		suite.addTest(MixinProjectIsolationTests.suite());
-
-		// Launching
-		// suite.addTest(RubyLaunchingTests.suite());
-
-		// Search
-		suite.addTest(RubySearchTests.suite());
-		suite.addTest(RubyFullNameSearchTests.suite());
-		suite.addTest(RubyMethodSearchTests.suite());
-
-		// $JUnit-END$
-		return suite;
-	}
 }
diff --git a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/parser/jruby/ZippedParserSuite.java b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/parser/jruby/ZippedParserSuite.java
index 6421bb2..ef56845 100755
--- a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/parser/jruby/ZippedParserSuite.java
+++ b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/parser/jruby/ZippedParserSuite.java
@@ -13,7 +13,6 @@
 import java.io.InputStream;
 import java.util.Enumeration;
 import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
 import java.util.zip.ZipFile;
 
 import org.eclipse.dltk.ast.parser.IModuleDeclaration;
@@ -63,8 +62,6 @@
 			} finally {
 				zipFile.close();
 			}
-		} catch (ZipException e) {
-			e.printStackTrace();
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
diff --git a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/typeinference/AbstractTypeInferencingTests.java b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/typeinference/AbstractTypeInferencingTests.java
index 1793950..3b44821 100644
--- a/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/typeinference/AbstractTypeInferencingTests.java
+++ b/tests/org.eclipse.dltk.ruby.core.tests/src/org/eclipse/dltk/ruby/core/tests/typeinference/AbstractTypeInferencingTests.java
@@ -40,6 +40,8 @@
 	Hashtable<String, String> oldOptions;
 	ISourceModule wc = null;
 
+	private static final int COMPLETE_TIMEOUT = 5000;
+
 	public AbstractTypeInferencingTests(String projectName, String name) {
 		super(projectName, name);
 	}
@@ -69,7 +71,7 @@
 			tokenStart = str.lastIndexOf(tokenStartBehind) + tokenStartBehind.length();
 			tokenEnd = tokenStart + token.length() - 1;
 		}
-		this.wc.codeComplete(cursorLocation, requestor, this.wcOwner);
+		this.wc.codeComplete(cursorLocation, requestor, this.wcOwner, COMPLETE_TIMEOUT);
 		CompletionResult result = new CompletionResult();
 		result.proposals = requestor.getResults();
 		result.context = requestor.getContext();
@@ -100,7 +102,7 @@
 	
 	protected CompletionResult contextComplete(ISourceModule cu, int cursorLocation) throws ModelException {
 		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, false, false, false);
-		cu.codeComplete(cursorLocation, requestor, this.wcOwner);
+		cu.codeComplete(cursorLocation, requestor, this.wcOwner, COMPLETE_TIMEOUT);
 		CompletionResult result = new CompletionResult();
 		result.proposals = requestor.getResults();
 		result.context = requestor.getContext();
