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

cucumber.runner.Scenario Maven / Gradle / Ivy

There is a newer version: 7.18.0
Show newest version
package cucumber.runner;

import cucumber.api.Result;
import cucumber.api.event.EmbedEvent;
import cucumber.api.event.WriteEvent;
import gherkin.pickles.PickleTag;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import static java.util.Collections.max;

class Scenario implements cucumber.api.Scenario {

    private final List stepResults = new ArrayList();
    private final EventBus bus;
    private final TestCase testCase;

    Scenario(EventBus bus, TestCase testCase) {
        this.bus = bus;
        this.testCase = testCase;
    }

    public void add(Result result) {
        stepResults.add(result);
    }

    @Override
    public Collection getSourceTagNames() {
        Set result = new HashSet<>();
        for (PickleTag tag : testCase.getTags()) {
            result.add(tag.getName());
        }
        // Has to be a List in order for JRuby to convert to Ruby Array.
        return new ArrayList<>(result);
    }

    @Override
    public Result.Type getStatus() {
        if (stepResults.isEmpty()) {
            return Result.Type.UNDEFINED;
        }

        return max(stepResults, Result.SEVERITY).getStatus();
    }

    @Override
    public boolean isFailed() {
        return getStatus() == Result.Type.FAILED;
    }

    @Override
    public void embed(byte[] data, String mimeType) {
        if (bus != null) {
            bus.send(new EmbedEvent(bus.getTime(), testCase, data, mimeType));
        }
    }

    @Override
    public void write(String text) {
        if (bus != null) {
            bus.send(new WriteEvent(bus.getTime(), testCase, text));
        }
    }

    @Override
    public String getName() {
        return testCase.getName();
    }

    @Override
    public String getId() {
        return testCase.getUri() + ":" + testCase.getLine();
    }

    @Override
    public String getUri() {
        return testCase.getUri();
    }

    @Override
    public List getLines() {
        return testCase.getLines();
    }

    public Throwable getError() {
        if (stepResults.isEmpty()) {
            return null;
        }

        return max(stepResults, Result.SEVERITY).getError();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy