Module: CIAT::Processors::BasicProcessing

Includes:
Differs::HtmlDiffer
Included in:
Java, Parrot
Defined in:
lib/ciat/processors/basic_processing.rb

Instance Method Summary collapse

Methods included from Differs::HtmlDiffer

#diff_options, #html_diff

Instance Method Details

#command_line_args(test) ⇒ Object

:nodoc:



31
32
33
# File 'lib/ciat/processors/basic_processing.rb', line 31

def command_line_args(test) #:nodoc:
  test.element?(:command_line) ? test.element(:command_line).content.strip : ''
end

#diff(test) ⇒ Object

Compares the expected and generated executions.



36
37
38
39
40
41
# File 'lib/ciat/processors/basic_processing.rb', line 36

def diff(test)
  html_diff(
    test.element(kind.output_name).as_file,
    test.element(kind.output_name, :generated).as_file, 
    test.element(kind.output_name, :diff).as_file)
end

#error_file(test) ⇒ Object



51
52
53
# File 'lib/ciat/processors/basic_processing.rb', line 51

def error_file(test)
  test.element(kind.output_name, :error).as_file
end

#execute(test) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/ciat/processors/basic_processing.rb', line 23

def execute(test)
  RakeFileUtils.verbose(false) do
    sh "#{executable} '#{input_file(test)}' #{command_line_args(test)} > '#{output_file(test)}' 2> '#{error_file(test)}'" do |ok, result|
      return ok
    end
  end
end

#input_file(test) ⇒ Object



43
44
45
# File 'lib/ciat/processors/basic_processing.rb', line 43

def input_file(test)
  test.element(kind.input_name).as_file
end

#output_file(test) ⇒ Object



47
48
49
# File 'lib/ciat/processors/basic_processing.rb', line 47

def output_file(test)
  test.element(kind.output_name, :generated).as_file
end

#process(test) ⇒ Object

Executes the program, and diffs the output.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/ciat/processors/basic_processing.rb', line 9

def process(test)
  # TODO: verify required elements
  # TODO: handle optional element
  if execute(test)
    if diff(test)
      CIAT::TrafficLight::GREEN
    else
      CIAT::TrafficLight::RED
    end
  else
    CIAT::TrafficLight::YELLOW
  end
end