Module: CIAT::Processors::BasicProcessing

Included in:
Compilers::Java, Executors::Java, Executors::Parrot
Defined in:
lib/ciat/processors/basic_processing.rb

Instance Method Summary collapse

Instance Method Details

#command_line_args(test) ⇒ Object

:nodoc:



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

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.



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

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

#error_file(test) ⇒ Object



60
61
62
# File 'lib/ciat/processors/basic_processing.rb', line 60

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

#execute(test) ⇒ Object



26
27
28
# File 'lib/ciat/processors/basic_processing.rb', line 26

def execute(test)
  system "#{executable} '#{input_file(test)}' #{command_line_args(test)} > '#{output_file(test)}' 2> '#{error_file(test)}'"
end

#for_testObject

Produces a clone for an individual test.



4
5
6
7
8
# File 'lib/ciat/processors/basic_processing.rb', line 4

def for_test
  copy = clone
  copy.light = light.clone
  copy
end

#input_file(test) ⇒ Object



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

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

#output_file(test) ⇒ Object



56
57
58
# File 'lib/ciat/processors/basic_processing.rb', line 56

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

#process(test) ⇒ Object

Executes the program, and diffs the output.



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

def process(test)
  # TODO: verify required elements
  # TODO: handle optional element
  if execute(test)
    if diff(test)
      light.green!
    else
      light.red!
    end
  else
    light.yellow!
  end
  test
end

#relevant_element_namesObject



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

def relevant_element_names
  processor_kind.element_name_hash[light.setting]
end

#relevant_elements(test) ⇒ Object



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

def relevant_elements(test)
  relevant_element_names.
    select { |name| test.element?(name) }.
    map { |name| test.element(name) }
end