package com.prezi.spaghetti.haxe.gradle;
import com.prezi.haxe.gradle.MUnitNode;
import com.prezi.spaghetti.haxe.gradle.internal.CompiledJsCopier;
import org.gradle.api.internal.file.FileOperations;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.Optional;
import org.gradle.process.internal.ExecActionFactory;
import javax.inject.Inject;
import java.io.File;
import java.net.URL;
public class MUnitNodeWithSpaghetti extends MUnitNode implements MUnitTask {
private File testApplication;
private String testApplicationName;
@Inject
public MUnitNodeWithSpaghetti(ExecActionFactory execActionFactory) {
super(execActionFactory);
}
@Override
@Optional
public File getInputFile() {
return super.getInputFile();
}
@InputDirectory
public File getTestApplication() {
return testApplication;
}
public void setTestApplication(Object testApplication) {
this.testApplication = getProject().file(testApplication);
}
@SuppressWarnings("UnusedDeclaration")
public void testApplication(Object testApplication) {
setTestApplication(testApplication);
}
@Input
public String getTestApplicationName() {
return testApplicationName;
}
public void setTestApplicationName(String testApplicationName) {
this.testApplicationName = testApplicationName;
}
@SuppressWarnings("UnusedDeclaration")
public void testApplicationName(String testApplicationName) {
setTestApplicationName(testApplicationName);
}
@Override
protected String copyCompiledTest(final File workDir) {
return new CompiledJsCopier(getServices().get(FileOperations.class), getLogger())
.copyCompiledJs(workDir, getTestApplication(), getTestApplicationName());
}
@Override
protected URL getMUnitJsHtmlTemplate() {
return getClass().getResource("/js_runner-html-with-require.mtt");
}
}