Browse Source

tests for javac internal modifications of -source attribute

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1237203 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 13 years ago
parent
commit
54ea4a4a0c
1 changed files with 181 additions and 0 deletions
  1. +181
    -0
      src/tests/junit/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapterTest.java

+ 181
- 0
src/tests/junit/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapterTest.java View File

@@ -0,0 +1,181 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package org.apache.tools.ant.taskdefs.compilers;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Javac;
import org.apache.tools.ant.types.Commandline;
import junit.framework.TestCase;

public class DefaultCompilerAdapterTest extends TestCase {

private static class LogCapturingJavac extends Javac {
private StringBuffer sb = new StringBuffer();
public void log(String msg, int msgLevel) {
sb.append(msg);
}
String getLog() {
return sb.toString();
}
}

private static class SourceTargetHelper extends DefaultCompilerAdapter {
/**
* Overridden to have no effect.
*/
protected Commandline setupJavacCommandlineSwitches(Commandline cmd,
boolean debug) {
return cmd;
}

public boolean execute() { return false; }
}

public void testSourceIsIgnoredForJavac13() {
testSource(null, "javac1.3", "", null, "1.1");
testSource(null, "javac1.3", "", null, "1.2");
testSource(null, "javac1.3", "", null, "1.3");
testSource(null, "javac1.3", "", null, "1.4");
}

public void testSource11IsUpgradedTo13() {
testSource("1.3", "javac1.4", "", null, "1.1");
testSource("1.3", "javac1.5", "", null, "1.1");
testSource("1.3", "javac1.6", "", null, "1.1");
testSource("1.3", "javac1.7", "", null, "1.1");
testSource("1.3", "javac1.8", "", null, "1.1");
}

public void testSource12IsUpgradedTo13() {
testSource("1.3", "javac1.4", "", null, "1.2");
testSource("1.3", "javac1.5", "", null, "1.2");
testSource("1.3", "javac1.6", "", null, "1.2");
testSource("1.3", "javac1.7", "", null, "1.2");
testSource("1.3", "javac1.8", "", null, "1.2");
}

public void testImplicitSourceForJava15() {
commonSourceDowngrades("javac1.5");
testSource(null, "javac1.5", "", "1.5");
testSource(null, "javac1.5", "", "5");
}

public void testImplicitSourceForJava16() {
commonSourceDowngrades("javac1.6");
testSource(null, "javac1.6", "", "1.5");
testSource(null, "javac1.6", "", "5");
testSource(null, "javac1.6", "", "1.6");
testSource(null, "javac1.6", "", "6");
}

public void testImplicitSourceForJava17() {
commonSourceDowngrades("javac1.7");
testSource("1.5", "javac1.7",
"If you specify -target 1.5 you now must also specify"
+ " -source 1.5", "1.5");
testSource("1.6", "javac1.7",
"If you specify -target 1.6 you now must also specify"
+ " -source 1.6", "1.6");
/* FIXME - should be adapted as well
testSource("5", "javac1.7",
"If you specify -target 5 you now must also specify"
+ " -source 5", "5");
testSource("6", "javac1.7",
"If you specify -target 6 you now must also specify"
+ " -source 6", "6");
*/
testSource(null, "javac1.7", "", "1.7");
testSource(null, "javac1.7", "", "7");
}

public void testImplicitSourceForJava18() {
commonSourceDowngrades("javac1.8");
testSource("1.5", "javac1.8",
"If you specify -target 1.5 you now must also specify"
+ " -source 1.5", "1.5");
testSource("1.6", "javac1.8",
"If you specify -target 1.6 you now must also specify"
+ " -source 1.6", "1.6");
testSource("1.7", "javac1.8",
"If you specify -target 1.7 you now must also specify"
+ " -source 1.7", "1.7");
/* FIXME - should be adapted as well
testSource("5", "javac1.8",
"If you specify -target 5 you now must also specify"
+ " -source 5", "5");
testSource("6", "javac1.8",
"If you specify -target 6 you now must also specify"
+ " -source 6", "6");
testSource("7", "javac1.8",
"If you specify -target 7 you now must also specify"
+ " -source 7", "7");
*/
testSource(null, "javac1.8", "", "1.8");
testSource(null, "javac1.8", "", "8");
}

private void commonSourceDowngrades(String javaVersion) {
// FIXME, should be minimum 1.3 as -source
testSource("1.2", javaVersion,
"If you specify -target 1.1 you now must also specify"
+ " -source 1.2", "1.1");
testSource("1.2", javaVersion,
"If you specify -target 1.2 you now must also specify"
+ " -source 1.2", "1.2");
testSource("1.3", javaVersion,
"If you specify -target 1.3 you now must also specify"
+ " -source 1.3", "1.3");
testSource("1.4", javaVersion,
"If you specify -target 1.4 you now must also specify"
+ " -source 1.4", "1.4");
}

private void testSource(String expectedSource, String javaVersion,
String expectedLog, String configuredTarget) {
testSource(expectedSource, javaVersion, expectedLog, configuredTarget,
null);
}

private void testSource(String expectedSource, String javaVersion,
String expectedLog, String configuredTarget,
String configuredSource) {
LogCapturingJavac javac = new LogCapturingJavac();
javac.setProject(new Project());
javac.setCompiler(javaVersion);
javac.setSource(configuredSource);
javac.setTarget(configuredTarget);
SourceTargetHelper sth = new SourceTargetHelper();
sth.setJavac(javac);
Commandline cmd = new Commandline();
sth.setupModernJavacCommandlineSwitches(cmd);
if ("".equals(expectedLog)) {
assertEquals("", javac.getLog());
} else {
String l = javac.getLog();
assertTrue("expected to find '" + expectedLog + "' in '" + l + "'",
l.indexOf(expectedLog) > -1);
}
String[] args = cmd.getCommandline();
assertEquals(expectedSource == null ? 0 : 2, args.length);
if (expectedSource != null) {
assertEquals("-source", args[0]);
assertEquals(expectedSource, args[1]);
}
}
}

Loading…
Cancel
Save