import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.io.File;
import java.util.Collections;
import java.util.Date;
fsTick();
gc.gc();
stats = gc.getStatistics();
+ assertNoEmptyFanoutDirectories();
assertEquals(0, stats.numberOfLooseObjects);
assertEquals(8, stats.numberOfPackedObjects);
assertEquals(2, stats.numberOfPackFiles);
}
+
+ private void assertNoEmptyFanoutDirectories() {
+ File[] fanout = repo.getObjectsDirectory().listFiles();
+ for (File f : fanout) {
+ if (f.isDirectory()) {
+ String[] entries = f.list();
+ if (entries == null || entries.length == 0) {
+ assertFalse(
+ "Found empty fanout directory "
+ + f.getAbsolutePath() + " after pruning",
+ f.getName().length() == 2);
+ }
+ }
+ }
+ }
}
pm.update(1);
if (d.length() != 2)
continue;
- File[] entries = new File(objects, d).listFiles();
- if (entries == null)
+ File dir = new File(objects, d);
+ File[] entries = dir.listFiles();
+ if (entries == null || entries.length == 0) {
+ FileUtils.delete(dir, FileUtils.IGNORE_ERRORS);
continue;
+ }
for (File f : entries) {
checkCancelled();
String fName = f.getName();