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,31 +14,21 @@
package google.registry.rde;
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 RdeTestData {
/** Returns {@link ByteSource} for file in {@code rde/testdata/} directory. */
public static ByteSource get(String filename) {
return Resources.asByteSource(getUrl(filename));
return TestDataHelper.loadBytes(RdeTestData.class, filename);
}
/**
* Loads data from file in {@code rde/testdata/} as a String (assuming file is UTF-8).
*
* @throws IOException if the file couldn't be loaded from the jar.
*/
public static String loadUtf8(String filename) throws IOException {
return Resources.asCharSource(getUrl(filename), UTF_8).read();
}
private static URL getUrl(String filename) {
return Resources.getResource(RdeTestData.class, "testdata/" + filename);
public static String loadUtf8(String filename) {
return TestDataHelper.loadFile(RdeTestData.class, filename);
}
}