package org.smoothbuild.task.exec; import static java.util.Arrays.asList; import static org.smoothbuild.task.exec.TaskReporter.header; import static org.testory.Testory.given; import static org.testory.Testory.mock; import static org.testory.Testory.onInstance; import static org.testory.Testory.thenCalled; import static org.testory.Testory.thenCalledTimes; import static org.testory.Testory.when; import java.util.List; import org.junit.Test; import org.smoothbuild.cli.Console; import org.smoothbuild.lang.message.CodeLocation; import org.smoothbuild.lang.message.Message; import org.smoothbuild.lang.message.WarningMessage; import org.smoothbuild.task.base.Computer; import org.smoothbuild.task.base.Input; import org.smoothbuild.task.base.Output; import org.smoothbuild.task.base.Task; import com.google.common.collect.ImmutableList; public class TaskReporterTest { Console console = mock(Console.class); TaskReporter taskReporter = new TaskReporter(console); List<Message> messages; Task task; @Test public void internal_task_with_message_is_printed() { given(task = createTask(true)); given(messages = asList(new WarningMessage("message"))); given(task).setOutput(new Output(messages)); when(taskReporter).report(task, false); thenCalled(console).print(header(task, false), messages); } @Test public void internal_task_without_message_is_not_printed() { given(task = createTask(true)); when(taskReporter).report(task, false); thenCalledTimes(0, onInstance(console)); } @Test public void non_internal_task_with_message_is_printed() { given(messages = asList(new WarningMessage("message"))); given(task = createTask(false)); given(task).setOutput(new Output(messages)); when(taskReporter).report(task, false); thenCalled(console).print(header(task, false), messages); } @Test public void non_internal_task_without_message_is_printed() { given(task = createTask(false)); given(messages = asList()); given(task).setOutput(new Output(messages)); when(taskReporter).report(task, false); thenCalled(console).print(header(task, false), messages); } private static Task createTask(boolean isInternal) { return new Task(new MyComputer(isInternal), ImmutableList.of()); } private static final class MyComputer extends Computer { private MyComputer(boolean isInternal) { super(null, "name", isInternal, true, CodeLocation.codeLocation(2)); } public Output execute(Input input, ContainerImpl container) { return null; } } }