Current section

Files

Jump to
white_bread lib white_bread.ex
Raw

lib/white_bread.ex

defmodule WhiteBread do
def run(context) do
output = WhiteBread.Outputers.Console.start
results = WhiteBread.Feature.Finder.find_in_path("features/")
|> read_in_feature_files
|> parse_features
|> run_all_features(context, output)
output |> WhiteBread.Outputers.Console.stop
%{
successes: results |> Enum.filter(&feature_success?/1),
failures: results |> Enum.filter(&feature_failure?/1)
}
end
defp read_in_feature_files(file_paths) do
file_paths |> Stream.map(&File.read!/1)
end
defp parse_features(feature_texts) do
feature_texts |> Stream.map(&WhiteBread.Gherkin.Parser.parse_feature/1)
end
defp run_all_features(features, context, output) do
features |> Enum.map(get_feature_runner(context, output))
end
defp get_feature_runner(context, output) do
fn(feature) -> {feature, WhiteBread.FeatureRunner.run(feature, context, output)} end
end
defp feature_success?({_feature, %{failures: failures}}) do
failures == []
end
defp feature_failure?({_feature, %{failures: failures}}) do
failures != []
end
end