예제 #1
0
  @Test
  public void testGlobsUpToDate() throws Exception {
    assertTrue(cache.globsUpToDate());

    // Initialize the cache
    cache.getGlob("*.txt");
    assertTrue(cache.globsUpToDate());

    cache.getGlob("*.js");
    assertTrue(cache.globsUpToDate());

    // Change the filesystem
    scratch.file("isolated/third.txt", "# this is third.txt");
    assertFalse(cache.globsUpToDate());

    // Fool the cache to observe the method's behavior.
    cache.setGlobPaths(
        "*.txt",
        false,
        Futures.<List<Path>>immediateFuture(
            Lists.newArrayList(
                scratch.resolve("isolated/first.txt"),
                scratch.resolve("isolated/second.txt"),
                scratch.resolve("isolated/third.txt"))));
    assertTrue(cache.globsUpToDate());
  }
예제 #2
0
  @Test
  public void testSetGlobPaths() throws Exception {
    // This pattern matches no files.
    String pattern = "fake*.java";
    assertThat(cache.getKeySet()).doesNotContain(pattern);

    List<String> results = cache.getGlob(pattern, false);

    assertThat(cache.getKeySet()).contains(Pair.of(pattern, false));
    assertThat(results).isEmpty();

    cache.setGlobPaths(
        pattern,
        false,
        Futures.<List<Path>>immediateFuture(
            Lists.newArrayList(
                scratch.resolve("isolated/fake.txt"), scratch.resolve("isolated/fake.py"))));

    assertThat(cache.getGlob(pattern, false)).containsExactly("fake.py", "fake.txt");
  }
예제 #3
0
 @Test
 public void testRecursiveGlobDoesNotMatchSubpackage() throws Exception {
   List<String> glob = cache.getGlob("**/*.js");
   assertThat(glob)
       .containsExactly(
           "first.js",
           "second.js",
           "foo/first.js",
           "bar/first.js",
           "foo/second.js",
           "bar/second.js");
 }
예제 #4
0
  @Test
  public void testGetKeySet() throws Exception {
    assertThat(cache.getKeySet()).isEmpty();

    cache.getGlob("*.java");
    assertThat(cache.getKeySet()).containsExactly(Pair.of("*.java", false));

    cache.getGlob("*.java");
    assertThat(cache.getKeySet()).containsExactly(Pair.of("*.java", false));

    cache.getGlob("*.js");
    assertThat(cache.getKeySet()).containsExactly(Pair.of("*.java", false), Pair.of("*.js", false));

    cache.getGlob("*.java", true);
    assertThat(cache.getKeySet())
        .containsExactly(Pair.of("*.java", false), Pair.of("*.js", false), Pair.of("*.java", true));

    try {
      cache.getGlob("invalid?");
      fail("Expected an invalid regex exception");
    } catch (BadGlobException expected) {
    }
    assertThat(cache.getKeySet())
        .containsExactly(Pair.of("*.java", false), Pair.of("*.js", false), Pair.of("*.java", true));

    cache.getGlob("foo/first.*");
    assertThat(cache.getKeySet())
        .containsExactly(
            Pair.of("*.java", false),
            Pair.of("*.java", true),
            Pair.of("*.js", false),
            Pair.of("foo/first.*", false));
  }
예제 #5
0
 @Test
 public void testGetGlob_subdirectory() throws Exception {
   List<String> glob = cache.getGlob("foo/*.js");
   assertThat(glob).containsExactly("foo/first.js", "foo/second.js");
 }
예제 #6
0
 @Test
 public void testGetGlob() throws Exception {
   List<String> glob = cache.getGlob("*.js");
   assertThat(glob).containsExactly("first.js", "second.js");
 }