< prev index next >

test/jdk/jdk/internal/jimage/ImageReaderTest.java

Print this page

103                     "@com.bar.preview.stuff.Foo",
104                     "@com.bar.preview.stuff.Bar"),
105             "modbaz", Arrays.asList(
106                     "!file.txt",
107                     "!normal.txt",
108                     "!META-INF/preview/file.txt",
109                     "!META-INF/preview/previewOnly.txt"),
110             "modgus", Arrays.asList(
111                     // A second module with a preview-only empty package (preview).
112                     "@com.bar.preview.other.Gus"));
113     private final Path image = buildJImage(IMAGE_ENTRIES);
114 
115     @ParameterizedTest
116     @ValueSource(strings = {
117             "/",
118             "/modules",
119             "/modules/modfoo",
120             "/modules/modbar",
121             "/modules/modfoo/com",
122             "/modules/modfoo/com/foo",
123             "/modules/modfoo/com/foo/bar"})

124     public void testModuleDirectories_expected(String name) throws IOException {
125         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
126             assertDir(reader, name);
127         }
128     }
129 
130     @ParameterizedTest
131     @ValueSource(strings = {
132             "",
133             "//",
134             "/modules/",
135             "/modules/unknown",
136             "/modules/modbar/",
137             "/modules/modfoo//com",
138             "/modules/modfoo/com/"})

139     public void testModuleNodes_absent(String name) throws IOException {
140         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
141             assertAbsent(reader, name);
142         }
143     }
144 
145     @Test
146     public void testModuleResources() throws IOException {
147         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
148             assertNode(reader, "/modules/modfoo/com/foo/HasPreviewVersion.class");
149             assertNode(reader, "/modules/modbar/com/bar/One.class");
150 
151             ImageClassLoader loader = new ImageClassLoader(reader, IMAGE_ENTRIES.keySet());
152             assertNonPreviewVersion(loader, "modfoo", "com.foo.HasPreviewVersion");
153             assertNonPreviewVersion(loader, "modfoo", "com.foo.NormalFoo");
154             assertNonPreviewVersion(loader, "modfoo", "com.foo.bar.NormalBar");
155             assertNonPreviewVersion(loader, "modbar", "com.bar.One");
156         }
157     }
158 

216                 assertNull(reader.findResourceNode(modName, resPath));
217                 assertFalse(reader.containsResource(modName, resPath));
218 
219                 // Non-existent resources names should either not be found,
220                 // or (in the case of directory nodes) not be resources.
221                 String canonicalNodeName = "/modules/" + modName + "/" + resPath;
222                 Node node = reader.findNode(canonicalNodeName);
223                 assertTrue(node == null || !node.isResource());
224             }
225         }
226     }
227 
228     @ParameterizedTest
229     @CsvSource(delimiter = ':', value = {
230             // Don't permit module names to contain paths.
231             "modfoo/com/bar:One.class",
232             "modfoo/com:bar/One.class",
233             "modules/modfoo/com:foo/HasPreviewVersion.class",
234     })
235     public void testResource_invalid(String modName, String resPath) throws IOException {
236         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
237             assertThrows(IllegalArgumentException.class, () -> reader.containsResource(modName, resPath));
238             assertThrows(IllegalArgumentException.class, () -> reader.findResourceNode(modName, resPath));


239         }
240     }
241 
242     @Test
243     public void testPackageDirectories() throws IOException {
244         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
245             Node root = assertDir(reader, "/packages");
246             Set<String> pkgNames = root.getChildNames().collect(toSet());
247             assertTrue(pkgNames.contains("/packages/com"));
248             assertTrue(pkgNames.contains("/packages/com.foo"));
249             assertTrue(pkgNames.contains("/packages/com.bar"));
250 
251             // Even though no classes exist directly in the "com" package, it still
252             // creates a directory with links back to all the modules which contain it.
253             Set<String> comLinks = assertDir(reader, "/packages/com").getChildNames().collect(Collectors.toSet());
254             assertTrue(comLinks.contains("/packages/com/modfoo"));
255             assertTrue(comLinks.contains("/packages/com/modbar"));
256         }
257     }
258 

103                     "@com.bar.preview.stuff.Foo",
104                     "@com.bar.preview.stuff.Bar"),
105             "modbaz", Arrays.asList(
106                     "!file.txt",
107                     "!normal.txt",
108                     "!META-INF/preview/file.txt",
109                     "!META-INF/preview/previewOnly.txt"),
110             "modgus", Arrays.asList(
111                     // A second module with a preview-only empty package (preview).
112                     "@com.bar.preview.other.Gus"));
113     private final Path image = buildJImage(IMAGE_ENTRIES);
114 
115     @ParameterizedTest
116     @ValueSource(strings = {
117             "/",
118             "/modules",
119             "/modules/modfoo",
120             "/modules/modbar",
121             "/modules/modfoo/com",
122             "/modules/modfoo/com/foo",
123             "/modules/modfoo/com/foo/bar",
124     })
125     public void testModuleDirectories_expected(String name) throws IOException {
126         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
127             assertDir(reader, name);
128         }
129     }
130 
131     @ParameterizedTest
132     @ValueSource(strings = {
133             "",
134             "//",
135             "/modules/",
136             "/modules/unknown",
137             "/modules/modbar/",
138             "/modules/modfoo//com",
139             "/modules/modfoo/com/",
140     })
141     public void testModuleNodes_absent(String name) throws IOException {
142         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
143             assertAbsent(reader, name);
144         }
145     }
146 
147     @Test
148     public void testModuleResources() throws IOException {
149         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
150             assertNode(reader, "/modules/modfoo/com/foo/HasPreviewVersion.class");
151             assertNode(reader, "/modules/modbar/com/bar/One.class");
152 
153             ImageClassLoader loader = new ImageClassLoader(reader, IMAGE_ENTRIES.keySet());
154             assertNonPreviewVersion(loader, "modfoo", "com.foo.HasPreviewVersion");
155             assertNonPreviewVersion(loader, "modfoo", "com.foo.NormalFoo");
156             assertNonPreviewVersion(loader, "modfoo", "com.foo.bar.NormalBar");
157             assertNonPreviewVersion(loader, "modbar", "com.bar.One");
158         }
159     }
160 

218                 assertNull(reader.findResourceNode(modName, resPath));
219                 assertFalse(reader.containsResource(modName, resPath));
220 
221                 // Non-existent resources names should either not be found,
222                 // or (in the case of directory nodes) not be resources.
223                 String canonicalNodeName = "/modules/" + modName + "/" + resPath;
224                 Node node = reader.findNode(canonicalNodeName);
225                 assertTrue(node == null || !node.isResource());
226             }
227         }
228     }
229 
230     @ParameterizedTest
231     @CsvSource(delimiter = ':', value = {
232             // Don't permit module names to contain paths.
233             "modfoo/com/bar:One.class",
234             "modfoo/com:bar/One.class",
235             "modules/modfoo/com:foo/HasPreviewVersion.class",
236     })
237     public void testResource_invalid(String modName, String resPath) throws IOException {
238         for (PreviewMode mode : List.of(PreviewMode.ENABLED, PreviewMode.DISABLED)) {
239             try (ImageReader reader = ImageReader.open(image, mode)) {
240                 assertThrows(IllegalArgumentException.class, () -> reader.containsResource(modName, resPath));
241                 assertThrows(IllegalArgumentException.class, () -> reader.findResourceNode(modName, resPath));
242             }
243         }
244     }
245 
246     @Test
247     public void testPackageDirectories() throws IOException {
248         try (ImageReader reader = ImageReader.open(image, PreviewMode.DISABLED)) {
249             Node root = assertDir(reader, "/packages");
250             Set<String> pkgNames = root.getChildNames().collect(toSet());
251             assertTrue(pkgNames.contains("/packages/com"));
252             assertTrue(pkgNames.contains("/packages/com.foo"));
253             assertTrue(pkgNames.contains("/packages/com.bar"));
254 
255             // Even though no classes exist directly in the "com" package, it still
256             // creates a directory with links back to all the modules which contain it.
257             Set<String> comLinks = assertDir(reader, "/packages/com").getChildNames().collect(Collectors.toSet());
258             assertTrue(comLinks.contains("/packages/com/modfoo"));
259             assertTrue(comLinks.contains("/packages/com/modbar"));
260         }
261     }
262 
< prev index next >