/* * Copyright 2013-2015 Sergey Ignatov, Alexander Zolotov, Florin Patan * * Licensed 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 com.goide.runconfig.testing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ContainerUtil; import jetbrains.buildServer.messages.serviceMessages.*; import org.jetbrains.annotations.NotNull; import java.util.Map; public class LoggingServiceMessageVisitor implements ServiceMessageVisitor { private static final String MY_INDENT = " "; private final StringBuilder myLog = new StringBuilder(); private String myIndent = ""; @NotNull public String getLog() { return myLog.toString(); } private void increaseIndent() { myIndent += MY_INDENT; } private void decreaseIndent() { myIndent = StringUtil.trimEnd(myIndent, MY_INDENT); } private void append(@NotNull MessageWithAttributes message) { myLog.append(myIndent).append(message.getClass().getSimpleName()).append('\n'); increaseIndent(); increaseIndent(); for (Map.Entry<String, String> entry : ContainerUtil.newTreeMap(message.getAttributes()).entrySet()) { String key = entry.getKey(); String value = "duration".equals(key) ? "42" : entry.getValue(); myLog.append(myIndent).append("- ").append(key).append("=") .append(value.replace("\n", "\\n")).append('\n'); } decreaseIndent(); decreaseIndent(); } @Override public void visitTestSuiteStarted(@NotNull TestSuiteStarted testSuiteStarted) { append(testSuiteStarted); increaseIndent(); } @Override public void visitTestSuiteFinished(@NotNull TestSuiteFinished testSuiteFinished) { decreaseIndent(); append(testSuiteFinished); } @Override public void visitTestStarted(@NotNull TestStarted testStarted) { append(testStarted); increaseIndent(); } @Override public void visitTestFinished(@NotNull TestFinished testFinished) { decreaseIndent(); append(testFinished); } @Override public void visitTestIgnored(@NotNull TestIgnored testIgnored) { append(testIgnored); } @Override public void visitTestStdOut(@NotNull TestStdOut testStdOut) { append(testStdOut); } @Override public void visitTestStdErr(@NotNull TestStdErr testStdErr) { append(testStdErr); } @Override public void visitTestFailed(@NotNull TestFailed testFailed) { append(testFailed); } @Override public void visitPublishArtifacts(@NotNull PublishArtifacts artifacts) { } @Override public void visitProgressMessage(@NotNull ProgressMessage message) { } @Override public void visitProgressStart(@NotNull ProgressStart start) { } @Override public void visitProgressFinish(@NotNull ProgressFinish finish) { } @Override public void visitBuildStatus(@NotNull BuildStatus status) { } @Override public void visitBuildNumber(@NotNull BuildNumber number) { } @Override public void visitBuildStatisticValue(@NotNull BuildStatisticValue value) { } @Override public void visitMessageWithStatus(@NotNull Message message) { } @Override public void visitBlockOpened(@NotNull BlockOpened opened) { } @Override public void visitBlockClosed(@NotNull BlockClosed closed) { } @Override public void visitCompilationStarted(@NotNull CompilationStarted started) { } @Override public void visitCompilationFinished(@NotNull CompilationFinished finished) { } @Override public void visitServiceMessage(@NotNull ServiceMessage message) { } }