Sha256: 698895a0b862917ae4d5e34da71016bbfe04b04f88d672817b27597be2da26a4
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# frozen_string_literal: true module Lino module Executors class Mock attr_reader :executions, :stdout_contents, :stderr_contents attr_accessor :exit_code def initialize reset end def execute(command_line, opts = {}) execution = { command_line:, opts:, exit_code: @exit_code } execution = process_streams(execution, opts) @executions << execution return if @exit_code.zero? raise Lino::Errors::ExecutionError.new( command_line.string, @exit_code ) end def fail_all_executions self.exit_code = 1 end def write_to_stdout(contents) @stdout_contents = contents end def write_to_stderr(contents) @stderr_contents = contents end def reset @executions = [] @exit_code = 0 @stdout_contents = nil @stderr_contents = nil end private def process_streams(execution, opts) execution = process_stdout(execution, opts[:stdout]) execution = process_stderr(execution, opts[:stderr]) process_stdin(execution, opts[:stdin]) end def process_stdout(execution, stdout) if stdout && stdout_contents stdout.write(stdout_contents) return execution.merge(stdout_contents:) end execution end def process_stderr(execution, stderr) if stderr && stderr_contents stderr.write(stderr_contents) return execution.merge(stderr_contents:) end execution end def process_stdin(execution, stdin) return execution.merge(stdin_contents: stdin.read) if stdin execution end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lino-3.2.0.pre.8 | lib/lino/executors/mock.rb |