RepeatedUsesAndProvidesTest.java revision 3294:9adfb22ff08f
161452Sdfr/* 261452Sdfr * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 361452Sdfr * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 461452Sdfr * 561452Sdfr * This code is free software; you can redistribute it and/or modify it 661452Sdfr * under the terms of the GNU General Public License version 2 only, as 761452Sdfr * published by the Free Software Foundation. 861452Sdfr * 961452Sdfr * This code is distributed in the hope that it will be useful, but WITHOUT 1061452Sdfr * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1161452Sdfr * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1261452Sdfr * version 2 for more details (a copy is included in the LICENSE file that 1361452Sdfr * accompanied this code). 1461452Sdfr * 1561452Sdfr * You should have received a copy of the GNU General Public License version 1661452Sdfr * 2 along with this work; if not, write to the Free Software Foundation, 1761452Sdfr * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1861452Sdfr * 1961452Sdfr * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2061452Sdfr * or visit www.oracle.com if you need additional information or have any 2161452Sdfr * questions. 2261452Sdfr */ 2361452Sdfr 2461452Sdfr/** 2561452Sdfr * @test 8145012 2661452Sdfr * @summary Javac doesn't report errors on duplicate uses or provides 27116192Sobrien * @library /tools/lib 28116192Sobrien * @modules 29116192Sobrien * jdk.compiler/com.sun.tools.javac.api 3061452Sdfr * jdk.compiler/com.sun.tools.javac.main 3161452Sdfr * jdk.jdeps/com.sun.tools.javap 3261452Sdfr * @build ToolBox ModuleTestBase 3361452Sdfr * @run main RepeatedUsesAndProvidesTest 34129878Sphk */ 3561452Sdfr 3661452Sdfrimport java.nio.file.Files; 3776827Salfredimport java.nio.file.Path; 3879339Sjhb 3961452Sdfrpublic class RepeatedUsesAndProvidesTest extends ModuleTestBase { 40173573Sjhb public static void main(String... args) throws Exception { 41173573Sjhb RepeatedUsesAndProvidesTest t = new RepeatedUsesAndProvidesTest(); 42119288Simp t.runTests(); 43119288Simp } 4461452Sdfr 4561452Sdfr @Test 4661452Sdfr void testDuplicateUses(Path base) throws Exception { 4761452Sdfr Path src = base.resolve("src"); 4861452Sdfr tb.writeJavaFiles(src, 49115355Sjhb "module m { uses p1.C1; uses p1.C1; }", 50115355Sjhb "package p1; public class C1 {}"); 5161452Sdfr Path classes = base.resolve("classes"); 5261452Sdfr Files.createDirectories(classes); 5361452Sdfr 5461452Sdfr String log = tb.new JavacTask() 55115355Sjhb .options("-XDrawDiagnostics") 56165826Stakawata .outdir(classes) 5761452Sdfr .files(findJavaFiles(src)) 5861452Sdfr .run(ToolBox.Expect.FAIL) 5961452Sdfr .writeAll() 6061452Sdfr .getOutput(ToolBox.OutputKind.DIRECT); 6161452Sdfr if (!log.contains("module-info.java:1:24: compiler.err.duplicate.uses: p1.C1")) 6261452Sdfr throw new Exception("expected output not found"); 6361452Sdfr } 64165811Sjkim 6561452Sdfr @Test 6661452Sdfr void testDuplicateProvides(Path base) throws Exception { 67165811Sjkim Path src = base.resolve("src"); 6861452Sdfr tb.writeJavaFiles(src, 6961452Sdfr "module m { provides p1.C1 with p2.C2; provides p1.C1 with p2.C2; }", 7061452Sdfr "package p1; public class C1 {}", 7161452Sdfr "package p2; public class C2 extends p1.C1 {}"); 7261452Sdfr Path classes = base.resolve("classes"); 7361452Sdfr Files.createDirectories(classes); 7461452Sdfr 7561452Sdfr String log = tb.new JavacTask() 7661452Sdfr .options("-XDrawDiagnostics") 7761452Sdfr .outdir(classes) 7861452Sdfr .files(findJavaFiles(src)) 7967379Sache .run(ToolBox.Expect.FAIL) 8067379Sache .writeAll() 8186192Skuriyama .getOutput(ToolBox.OutputKind.DIRECT); 82109115Sanholt if (!log.contains("module-info.java:1:39: compiler.err.duplicate.provides")) 8386192Skuriyama throw new Exception("expected output not found"); 8490270Sbenno } 8590270Sbenno} 8686192Skuriyama