lib/jcukeforker/scenarios.rb in jcukeforker-0.3.1 vs lib/jcukeforker/scenarios.rb in jcukeforker-0.4.0
- old
+ new
@@ -1,6 +1,7 @@
-require 'cucumber/runtime/features_loader'
+require 'cucumber/core'
+require 'cucumber/core/filter'
module JCukeForker
#
# CukeForker::Scenarios.by_args(args)
@@ -12,10 +13,11 @@
# will return an array of scenarios and their line numbers that match
# the tags specified in the cucumber profile 'my_profile' AND have the '@edition' tag
#
class Scenarios
+ include Cucumber::Core
def self.by_args(args)
options = Cucumber::Cli::Options.new(STDOUT, STDERR, :default_profile => 'default')
tagged(options.parse!(args)[:tag_expressions])
end
@@ -23,18 +25,16 @@
any_tag = []
tagged any_tag
end
def self.tagged(tags)
- tag_expression = Gherkin::TagExpression.new(tags)
- scenario_line_logger = JCukeForker::Formatters::ScenarioLineLogger.new(tag_expression)
- loader = Cucumber::Runtime::FeaturesLoader.new(feature_files, [], tag_expression)
-
- loader.features.each do |feature|
- feature.accept(scenario_line_logger)
+ scenario_list = ScenarioList.new
+ feature_files.each do |feature|
+ source = JCukeForker::NormalisedEncodingFile.read(feature)
+ file = Cucumber::Core::Gherkin::Document.new(feature, source)
+ self.new.execute([file], scenario_list, [Cucumber::Core::Test::TagFilter.new(tags)])
end
-
- scenario_line_logger.scenarios
+ scenario_list.scenarios
end
def self.feature_files
Dir.glob('**/**.feature')
end