Sha256: 9ac67bc290054a4f27a3b9c4c43a054c9981b05f967c4fb4e182b1f7db17e7bb
Contents?: true
Size: 1.46 KB
Versions: 4
Compression:
Stored size: 1.46 KB
Contents
module StonesSpec class Runner include StonesSpec::WithTempfile def initialize(parser) @parser = parser end def run!(test_definition) subject = Subject.from(test_definition[:subject]) source = test_definition[:source] check_head_position = test_definition[:check_head_position] show_initial_board = test_definition.fetch(:show_initial_board, true) begin [test_definition[:examples].map do |example_definition| run_example!(example_definition, check_head_position, show_initial_board, source, subject) end] rescue Gobstones::AbortedError => e test_definition[:expect_endless_while] ? [e.message, :passed] : [e.message, e.status] rescue Gobstones::Error => e [e.message, e.status] end end private def run_example!(example_definition, check_head_position, show_initial_board, source, subject) example = Example.new(subject, example_definition) data = example.execution_data source files = { source: Gobstones.source_code_extension, initial_board: Gobstones.board_extension, final_board: Gobstones.board_extension }.map_values { |name, extension| write_tempfile(data[name], extension) } execution = example.execute! files, @parser example.result files, execution, Postcondition.from(example, check_head_position, show_initial_board) ensure files.each_value(&:unlink) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
stones-spec-1.0.4 | lib/runner.rb |
stones-spec-1.0.3 | lib/runner.rb |
stones-spec-1.0.2 | lib/runner.rb |
stones-spec-1.0.1 | lib/runner.rb |