package monolipse.ui.tests;
import monolipse.core.BooCore;
import monolipse.core.IAssemblyReference;
import monolipse.core.IAssemblySource;
import monolipse.core.foundation.ArrayUtilities;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.Path;
public class BooBuilderTestCase extends AbstractBooTestCase {
private IAssemblySource _assemblySource;
protected void setUp() throws Exception {
super.setUp();
IFile file = copyResourceTo("TestClass.dll", "lib");
_assemblySource = addAssemblySource(new Path("src/Test"));
_assemblySource.setReferences(
ArrayUtilities.append(
_assemblySource.getReferences(),
BooCore.createAssemblyReference(file)));
copyResourceTo("Program.boo", "src/Test");
build();
}
public void testBuild() throws Exception {
assertNoErrorsOn(_assemblySource);
assertTrue(_assemblySource.getOutputFile().exists());
assertTrue(_assemblySource.getOutputFile().isDerived());
assertReferencedAssemblyOutput("bin/TestClass.dll", "local file");
assertReferencedAssemblyOutput("bin/Boo.Lang.PatternMatching.dll", "Boo.Lang.PatternMatching referenced by default");
assertReferencedAssemblyOutput("bin/Boo.Lang.dll", "Boo.Lang referenced by default");
}
public void testClean() throws Exception {
_project.getProject().build(IncrementalProjectBuilder.CLEAN_BUILD, null);
assertFalse(_assemblySource.getOutputFile().exists());
assertFalse(getFile("bin/TestClass.dll").exists());
}
public void testAssemblySourceBuildOrder() throws Exception {
IAssemblySource bar = addAssemblySource("src/Bar");
bar.setOutputType(IAssemblySource.OutputType.LIBRARY);
IAssemblySource foo = addAssemblySource("src/Foo");
foo.setReferences(new IAssemblyReference[] { BooCore.createAssemblyReference(bar) });
copyResourceTo("Bar.boo", "src/Bar");
copyResourceTo("Foo.boo", "src/Foo");
build();
assertTrue(foo.getOutputFile().exists());
assertTrue(bar.getOutputFile().exists());
}
public void testConfigFilesAreCopiedToOutputFolder() throws Exception {
copyResourceTo("Test.exe.config", "src/Test");
build();
assertTrue(_assemblySource.getOutputFile().getParent().exists(new Path("./Test.exe.config")));
}
private void assertReferencedAssemblyOutput(String expectedOutput,
String referenceKind) {
IFile copiedRef = getFile(expectedOutput);
assertTrue("referenced " + referenceKind + " must be copied to the output folder", copiedRef.exists());
assertTrue("copied references must be marked as derived files", copiedRef.isDerived());
}
}