Clean up test "load resources" methods and classes

There is a big mix of different "load Resources" from different libraries
depending on where you were and what type of resource you want. Now there is a
clear hirarchy:

ResourceUtils:
  for use in actual (non-test) code, reads a file from a context directory

TestDataHelper (uses ResourceUtils):
  for use in tests, reads a file from a context directory + "/testdata". Also
  caches the resource so calling it multiple times with the same file will
  not read the file multiple times.

Library specific helpers (e.g. ToolsTestData) (uses TestDataHelper):
  for use in that library's tests only, reads from a specific testdata directory.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=177027533
This commit is contained in:
guyben 2017-11-27 09:30:46 -08:00 committed by jianglai
parent bbe2584da4
commit 95647528b8
12 changed files with 66 additions and 75 deletions

View file

@ -14,27 +14,19 @@
package google.registry.reporting;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.io.ByteSource;
import com.google.common.io.Resources;
import java.io.IOException;
import java.net.URL;
import google.registry.testing.TestDataHelper;
/** Utility class providing easy access to contents of the {@code testdata/} directory. */
public final class ReportingTestData {
/** Returns {@link ByteSource} for file in {@code reporting/testdata/} directory. */
public static ByteSource get(String filename) {
return Resources.asByteSource(getUrl(filename));
return TestDataHelper.loadBytes(ReportingTestData.class, filename);
}
/** Returns a {@link String} from a file in the {@code reporting/testdata/} directory. */
public static String getString(String filename) throws IOException {
return Resources.asCharSource(getUrl(filename), UTF_8).read();
}
private static URL getUrl(String filename) {
return Resources.getResource(ReportingTestData.class, "testdata/" + filename);
public static String getString(String filename) {
return TestDataHelper.loadFile(ReportingTestData.class, filename);
}
}