示例#1
0
  /** Assert cache discarded only if file has changed on disk */
  public void test_changed() {
    server.start();
    ParseResult parse1 = savedContext.parse(moneyLibFile, moneyLibFile, FIVE_MINUTES_MS);
    assertNotNull(parse1.getDartUnit());
    ParseResult parse2 = savedContext.parse(moneyLibFile, moneyLibFile, FIVE_MINUTES_MS);
    assertSame(parse1.getDartUnit(), parse2.getDartUnit());

    listener.reset();
    server.changed(moneyLibFile);
    ParseResult parse3 = savedContext.parse(moneyLibFile, moneyLibFile, FIVE_MINUTES_MS);
    assertSame(parse1.getDartUnit(), parse3.getDartUnit());
    listener.assertDiscarded();
    server.assertAnalyze(false);

    listener.reset();
    server.resetAnalyze();
    final long oldLastModified = moneyLibFile.lastModified();
    try {
      // Ensure marked as modified... lastModified is only accurate to the second
      moneyLibFile.setLastModified(System.currentTimeMillis() + 1000);
      server.changed(moneyLibFile);
      ParseResult parse4 = savedContext.parse(moneyLibFile, moneyLibFile, FIVE_MINUTES_MS);
      assertNotSame(parse1.getDartUnit(), parse4.getDartUnit());
      listener.assertDiscarded(moneyLibFile);
      server.assertAnalyze(false, moneyLibFile);
    } finally {
      moneyLibFile.setLastModified(oldLastModified);
    }
  }
示例#2
0
  /** Assert removing #source directive causes sourced file to become analyzed as library */
  public void test_changed_library() throws Exception {
    final String directive = "part \"simple_money.dart\";";
    final String oldContent = FileUtilities.getContents(moneyLibFile);
    int index = oldContent.indexOf(directive);
    assertTrue(index > 0);
    final String newContent =
        oldContent.substring(0, index) + oldContent.substring(index + directive.length());

    server.scan(moneyLibFile, null);
    server.start();
    listener.waitForIdle(1, FIVE_MINUTES_MS);
    assertTrackedLibraryFiles(server, moneyLibFile);
    Object lib1 = getCachedLibrary(savedContext, moneyLibFile);
    assertNotNull(lib1);
    assertNull(getCachedLibrary(savedContext, simpleMoneySrcFile));

    server.resetAnalyze();
    final long oldLastModified = moneyLibFile.lastModified();
    FileUtilities.setContents(moneyLibFile, newContent);
    // Ensure marked as modified... lastModified is only accurate to the second
    moneyLibFile.setLastModified(oldLastModified + 1000);
    try {
      server.changed(moneyLibFile);
      listener.waitForIdle(2, FIVE_MINUTES_MS);
      assertTrackedLibraryFiles(server, moneyLibFile);
      server.assertAnalyze(false, moneyLibFile);
      Object lib2 = getCachedLibrary(savedContext, moneyLibFile);
      assertNotNull(lib2);
      assertNotSame(lib1, lib2);
      lib1 = lib2;
      // Files with "part of" are never considered libraries
      assertNull(getCachedLibrary(savedContext, simpleMoneySrcFile));
    } finally {
      FileUtilities.setContents(moneyLibFile, oldContent);
      moneyLibFile.setLastModified(oldLastModified);
    }

    server.resetAnalyze();
    server.changed(moneyLibFile);
    listener.waitForIdle(3, FIVE_MINUTES_MS);
    assertTrackedLibraryFiles(server, moneyLibFile);
    server.assertAnalyze(false, moneyLibFile);
    Object lib2 = getCachedLibrary(savedContext, moneyLibFile);
    assertNotNull(lib2);
    assertNotSame(lib1, lib2);
    assertNull(getCachedLibrary(savedContext, simpleMoneySrcFile));
  }
示例#3
0
  /** Assert adding library directive causes sourced file to become analyzed as library */
  public void test_changed_library_directive() throws Exception {
    final String oldContent = FileUtilities.getContents(simpleMoneySrcFile);
    PrintStringWriter writer = new PrintStringWriter();
    writer.println("library \"foobar\";\n");
    writer.append(oldContent);
    final String newContent = writer.toString();

    server.scan(moneyLibFile, null);
    server.start();
    listener.waitForIdle(1, FIVE_MINUTES_MS);
    assertTrackedLibraryFiles(server, moneyLibFile);
    Object lib1 = getCachedLibrary(savedContext, moneyLibFile);
    assertNotNull(lib1);
    assertNull(getCachedLibrary(savedContext, simpleMoneySrcFile));

    server.resetAnalyze();
    final long oldLastModified = simpleMoneySrcFile.lastModified();
    try {
      FileUtilities.setContents(simpleMoneySrcFile, newContent);
      // Ensure marked as modified... lastModified is only accurate to the second
      simpleMoneySrcFile.setLastModified(oldLastModified + 1000);
      server.changed(simpleMoneySrcFile);
      listener.waitForIdle(2, FIVE_MINUTES_MS);
      assertTrackedLibraryFiles(server, moneyLibFile, simpleMoneySrcFile);
      server.assertAnalyze(false, moneyLibFile, simpleMoneySrcFile);
      Object lib2 = getCachedLibrary(savedContext, moneyLibFile);
      assertNotNull(lib2);
      assertNotSame(lib1, lib2);
      lib1 = lib2;
      assertNotNull(getCachedLibrary(savedContext, simpleMoneySrcFile));
    } finally {
      FileUtilities.setContents(simpleMoneySrcFile, oldContent);
      simpleMoneySrcFile.setLastModified(oldLastModified);
    }

    server.resetAnalyze();
    server.changed(simpleMoneySrcFile);
    listener.waitForIdle(3, FIVE_MINUTES_MS);
    assertTrackedLibraryFiles(server, moneyLibFile);
    server.assertAnalyze(false, moneyLibFile, simpleMoneySrcFile);
    Object lib2 = getCachedLibrary(savedContext, moneyLibFile);
    assertNotNull(lib2);
    assertNotSame(lib1, lib2);
    assertNull(getCachedLibrary(savedContext, simpleMoneySrcFile));
  }