@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()); }
@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"); }
@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"); }
@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)); }
@Test public void testGetGlob_subdirectory() throws Exception { List<String> glob = cache.getGlob("foo/*.js"); assertThat(glob).containsExactly("foo/first.js", "foo/second.js"); }
@Test public void testGetGlob() throws Exception { List<String> glob = cache.getGlob("*.js"); assertThat(glob).containsExactly("first.js", "second.js"); }