Index: dart/compiler/javatests/com/google/dart/compiler/parser/TruncatedSourceParserTest.java |
diff --git a/dart/compiler/javatests/com/google/dart/compiler/parser/TruncatedSourceParserTest.java b/dart/compiler/javatests/com/google/dart/compiler/parser/TruncatedSourceParserTest.java |
deleted file mode 100644 |
index 0263d6221d1d0f1dd9ef7439b7399c4a30a0fa23..0000000000000000000000000000000000000000 |
--- a/dart/compiler/javatests/com/google/dart/compiler/parser/TruncatedSourceParserTest.java |
+++ /dev/null |
@@ -1,162 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-package com.google.dart.compiler.parser; |
- |
-import com.google.dart.compiler.DartCompilationError; |
-import com.google.dart.compiler.DartCompilerListenerTest; |
-import com.google.dart.compiler.DartSourceTest; |
-import com.google.dart.compiler.ast.DartUnit; |
- |
-public class TruncatedSourceParserTest extends AbstractParserTest { |
- |
- private static final int RESULTS_TIMEOUT_SECONDS = 10; |
- private static enum ParseState { |
- INIT, STARTED_PARSE, STOP, |
- } |
- |
- /** |
- * Performs parsing in a separate thread such that the test can detect infinite loop. |
- */ |
- private class ParserThread extends Thread { |
- private final Object lock = new Object(); |
- private final String srcName; |
- private ParseState state = ParseState.INIT; |
- private String srcCode; |
- private DartUnit result; |
- |
- /** |
- * Listener that ignores errors because this is a stress test |
- */ |
- private DartCompilerListenerTest listener = new DartCompilerListenerTest("") { |
- @Override |
- public void checkAllErrorsReported() { |
- } |
- |
- @Override |
- public void onError(DartCompilationError event) { |
- } |
- }; |
- |
- public ParserThread(String srcName) { |
- super("Parsing " + srcName); |
- this.srcName = srcName; |
- } |
- |
- /** |
- * Queue the specified source to be parsed on a separate thread. Wait up to 10 seconds for the |
- * result |
- * |
- * @return <code>true</code> if finished parsing |
- */ |
- public boolean parse(String srcCode) { |
- assert (srcCode != null); |
- assert (state == ParseState.INIT); |
- synchronized (lock) { |
- this.srcCode = srcCode; |
- result = null; |
- state = ParseState.STARTED_PARSE; |
- lock.notifyAll(); |
- try { |
- lock.wait(RESULTS_TIMEOUT_SECONDS * 1000); |
- } catch (InterruptedException e) { |
- // Fall through |
- } |
- return state == ParseState.INIT; |
- } |
- } |
- |
- /** |
- * Parse source code in the background |
- */ |
- @Override |
- public void run() { |
- while (true) { |
- DartSourceTest src; |
- synchronized (lock) { |
- while (state == ParseState.INIT) { |
- try { |
- lock.wait(); |
- } catch (InterruptedException e) { |
- // Fall through |
- } |
- } |
- if (state == ParseState.STOP) { |
- return; |
- } |
- src = new DartSourceTest(srcName, srcCode, null); |
- } |
- DartUnit unit = makeParser(src, srcCode, listener).parseUnit(); |
- synchronized (lock) { |
- if (state == ParseState.STOP) { |
- return; |
- } |
- state = ParseState.INIT; |
- result = unit; |
- lock.notifyAll(); |
- } |
- } |
- } |
- |
- /** |
- * Signal the background thread to terminate |
- */ |
- public void stopParsing() { |
- synchronized (lock) { |
- state = ParseState.STOP; |
- lock.notify(); |
- } |
- } |
- } |
- |
- @Override |
- public void testStringsErrors() { |
- parseUnit("StringsErrorsNegativeTest.dart"); |
- } |
- |
- @Override |
- public void testTiming() { |
- // Skip |
- } |
- |
- @Override |
- protected DartUnit parseUnit(String srcName, String srcCode, Object... errors) { |
- if ("true".equals(System.getProperty("analysis_skip_TruncatedSourceParserTest"))) { |
- return null; |
- } |
- if (errors.length > 0) { |
- throw new RuntimeException("Expected errors not implemented"); |
- } |
- // System.out.print(srcName); |
- ParserThread thread = new ParserThread(srcName); |
- thread.start(); |
- int eol = 0; |
- for (int index = 0; index < srcCode.length(); index++) { |
- if (eol == index) { |
- eol++; |
- while (eol < srcCode.length()) { |
- char ch = srcCode.charAt(eol); |
- if (ch == '\r' || ch == '\n') { |
- break; |
- } |
- eol++; |
- } |
- } |
- String modifiedSrcCode = srcCode.substring(0, index); |
- if (!thread.parse(modifiedSrcCode)) { |
- // System.out.println(); |
- fail("Failed to finish parsing " + srcName + "\n" + modifiedSrcCode); |
- } |
- modifiedSrcCode += srcCode.substring(eol); |
- if (!thread.parse(modifiedSrcCode)) { |
- // System.out.println(); |
- fail("Failed to finish parsing " + srcName + "\n" + modifiedSrcCode); |
- } |
- // System.out.print('.'); |
- } |
- thread.stopParsing(); |
- // System.out.println(); |
- return thread.result; |
- } |
-} |