All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cucumber.runtime.android.AndroidLogcatReporter Maven / Gradle / Ivy

There is a newer version: 1.2.6
Show newest version
package cucumber.runtime.android;

import android.util.Log;
import cucumber.runtime.Runtime;
import gherkin.formatter.model.Background;
import gherkin.formatter.model.Examples;
import gherkin.formatter.model.Feature;
import gherkin.formatter.model.Scenario;
import gherkin.formatter.model.ScenarioOutline;
import gherkin.formatter.model.Step;
import java.util.List;

/**
 * Logs information about the currently executed statements to androids logcat.
 */
public class  AndroidLogcatReporter extends NoOpFormattingReporter {

    /**
     * The {@link cucumber.runtime.Runtime} to get the errors and snippets from for writing them to the logcat at the end of the execution.
     */
    private final Runtime runtime;

    /**
     * The log tag to be used when logging to logcat.
     */
    private final String logTag;

    /**
     * Holds the feature's uri.
     */
    private String uri;

    /**
     * Creates a new instance for the given parameters.
     *
     * @param runtime the {@link cucumber.runtime.Runtime} to get the errors and snippets from
     * @param logTag the tag to use for logging to logcat
     */
    public AndroidLogcatReporter(final Runtime runtime, final String logTag) {
        this.runtime = runtime;
        this.logTag = logTag;
    }

    @Override
    public void uri(final String uri) {
        this.uri = uri;
    }

    @Override
    public void feature(final Feature feature) {
        Log.d(logTag, String.format("%s: %s (%s)%n%s", feature.getKeyword(), feature.getName(), uri, feature.getDescription()));
    }

    @Override
    public void background(final Background background) {
        Log.d(logTag, background.getName());
    }

    @Override
    public void scenario(final Scenario scenario) {
        Log.d(logTag, String.format("%s: %s", scenario.getKeyword(), scenario.getName()));
    }

    @Override
    public void scenarioOutline(final ScenarioOutline scenarioOutline) {
        Log.d(logTag, String.format("%s: %s", scenarioOutline.getKeyword(), scenarioOutline.getName()));
    }

    @Override
    public void examples(final Examples examples) {
        Log.d(logTag, String.format("%s: %s", examples.getKeyword(), examples.getName()));
    }

    @Override
    public void step(final Step step) {
        Log.d(logTag, String.format("%s%s", step.getKeyword(), step.getName()));
    }

    @Override
    public void syntaxError(final String state, final String event, final List legalEvents, final String uri, final Integer line) {
        Log.e(logTag, String.format("syntax error '%s' %s:%d", event, uri, line));
    }

    @Override
    public void done() {
        for (final Throwable throwable : runtime.getErrors()) {
            Log.e(logTag, throwable.toString());
        }

        for (final String snippet : runtime.getSnippets()) {
            Log.w(logTag, snippet);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy