diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
index b4a87cb576a31271e9dfabd0abbaf80e4c189b2b..5e5218f56c802ae968089997b7f022015dee9803 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
@@ -97,7 +97,8 @@ public class TestBase {
     }
 
     public enum Context implements TestTrait {
-        NonShared; // Test requires a new non-shared {@link RContext}.
+        NonShared, // Test requires a new non-shared {@link RContext}.
+        LongTimeout; // Test requires a long timeout
     }
 
     /**
@@ -665,7 +666,7 @@ public class TestBase {
         microTestInfo.expression = input;
         String result;
         try {
-            result = fastROutputManager.fastRSession.eval(input, contextInfo);
+            result = fastROutputManager.fastRSession.eval(input, contextInfo, false);
         } catch (Throwable e) {
             String clazz;
             if (e instanceof RInternalError && e.getCause() != null) {
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
index 2676ef74024676c4fb19b609c37a9e9644671ae9..3f09fb01ea81f59fd26feae31f4f8fd9dee83986 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
@@ -49,7 +49,8 @@ import com.oracle.truffle.r.test.TestBase;
 
 public final class FastRSession implements RSession {
 
-    private static final int TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 20000;
+    private static final int DEFAULT_TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 10000;
+    private static final int LONG_TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 60000;
 
     /**
      * A (virtual) console handler that collects the output in a {@link StringBuilder} for
@@ -176,7 +177,7 @@ public final class FastRSession implements RSession {
 
     @Override
     @SuppressWarnings("deprecation")
-    public String eval(String expression, ContextInfo contextInfo) throws Throwable {
+    public String eval(String expression, ContextInfo contextInfo, boolean longTimeout) throws Throwable {
         consoleHandler.reset();
 
         EvalThread thread = evalThread;
@@ -190,7 +191,7 @@ public final class FastRSession implements RSession {
         thread.push(expression);
 
         try {
-            if (!thread.await(TIMEOUT)) {
+            if (!thread.await(longTimeout ? LONG_TIMEOUT : DEFAULT_TIMEOUT)) {
                 consoleHandler.println("<timeout>");
                 thread.stop();
                 evalThread = null;
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
index d9e8a2fbf908befc53bdf9f9f05bf9ef49bc84e0..793c65dbafdf21ccbce6b88a4fc868c5d56baa8e 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
@@ -93,7 +93,7 @@ public class GnuROneShotRSession implements RSession {
     }
 
     @Override
-    public String eval(String expression, ContextInfo contextInfo) {
+    public String eval(String expression, ContextInfo contextInfo, boolean longTimeout) {
         if (expression.contains("library(") && !TestBase.generatingExpected()) {
             System.out.println("==============================================");
             System.out.println("LIBRARY LOADING WHILE CREATING EXPECTED OUTPUT");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
index 3c362b55c3d28f73250c24ba428adb64c3afdbba..94ec8c3413e5fc0f9d14ab697d57517784774d8b 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
@@ -33,8 +33,9 @@ public interface RSession {
      *
      * If {@code contextInfo is non-null} it is used for the evaluation, else the choice is left to
      * the implementation.
+     * @param longTimeout TODO
      */
-    String eval(String expression, ContextInfo contextInfo) throws Throwable;
+    String eval(String expression, ContextInfo contextInfo, boolean longTimeout) throws Throwable;
 
     /**
      * A name to identify the session.
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
index ae41bbe4739a0ecfac2439c9961eb4d85dbf59dc..02d8aff7a4e39c28e9cabc3bfd8fb3333512dfa6 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
@@ -360,7 +360,7 @@ public class TestOutputManager {
             String expected = null;
             if (!checkOnly) {
                 try {
-                    expected = rSession.eval(test, null);
+                    expected = rSession.eval(test, null, false);
                 } catch (Throwable e) {
                     throw RInternalError.shouldNotReachHere("unexpected exception thrown by GNUR session: " + e);
                 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
index 777cd8db8c76fc9eb8c7a0fa9b6a70d702e9842d..805565cf8225137ee12af9ceed4fc19cf296a6cc 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
@@ -64,6 +64,6 @@ public class TestRecommendedPackages extends TestRPackages {
 
     @Test
     public void testLoad() {
-        assertEval(Context.NonShared, TestBase.template("{ library(%1, lib.loc = \"%0\"); detach(\"package:%1\"); }", new String[]{TestRPackages.libLoc()}, OK_PACKAGES));
+        assertEval(Context.NonShared, Context.LongTimeout, TestBase.template("{ library(%1, lib.loc = \"%0\"); detach(\"package:%1\"); }", new String[]{TestRPackages.libLoc()}, OK_PACKAGES));
     }
 }