ciat 0.4.9 → 0.4.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ciat.rb +1 -2
- data/lib/ciat/{test_file.rb → ciat_file.rb} +21 -9
- data/lib/ciat/erb_helpers.rb +6 -1
- data/lib/ciat/feedback/feedback_counter.rb +11 -19
- data/lib/ciat/feedback/return_status.rb +6 -2
- data/lib/ciat/feedback/standard_output.rb +7 -2
- data/lib/ciat/processors/compilation_interpreter.rb +20 -7
- data/lib/ciat/processors/compiler.rb +38 -15
- data/lib/ciat/processors/interpreter.rb +28 -7
- data/lib/ciat/processors/java.rb +2 -8
- data/lib/ciat/processors/parrot.rb +0 -3
- data/lib/ciat/subresult.rb +14 -4
- data/lib/ciat/subtest.rb +83 -0
- data/lib/ciat/suite.rb +9 -9
- data/lib/ciat/suite_builder.rb +5 -5
- data/lib/ciat/test.rb +36 -28
- data/lib/ciat/test_result.rb +2 -2
- data/lib/ciat/traffic_light.rb +5 -14
- data/lib/data/ciat.css +14 -2
- data/lib/data/elements.yml +8 -2
- data/lib/templates/detail_row.html.erb +10 -4
- data/lib/templates/report.html.erb +5 -5
- data/lib/templates/summary_row.html.erb +5 -3
- data/spec/ciat/{test_file_spec.rb → ciat_file_spec.rb} +51 -19
- data/spec/ciat/erb_helpers_spec.rb +8 -13
- data/spec/ciat/feedback/feedback_counter_spec.rb +37 -57
- data/spec/ciat/feedback/return_status_spec.rb +67 -61
- data/spec/ciat/feedback/standard_output_spec.rb +21 -15
- data/spec/ciat/processors/compilation_interpreter_spec.rb +12 -0
- data/spec/ciat/processors/compiler_spec.rb +12 -0
- data/spec/ciat/processors/interpreter_spec.rb +12 -0
- data/spec/ciat/processors/java_spec.rb +0 -10
- data/spec/ciat/processors/parrot_spec.rb +0 -10
- data/spec/ciat/processors/shared_examples_for_element_names.rb +27 -0
- data/spec/ciat/rake_task_spec.rb +65 -0
- data/spec/ciat/subresult_spec.rb +13 -12
- data/spec/ciat/subtest_spec.rb +199 -0
- data/spec/ciat/suite_builder_spec.rb +17 -17
- data/spec/ciat/suite_spec.rb +13 -13
- data/spec/ciat/test_result_spec.rb +36 -0
- data/spec/ciat/test_spec.rb +73 -83
- data/spec/ciat/traffic_light_spec.rb +21 -31
- data/spec/spec_helper.rb +16 -53
- data/spec/templates/detail_row/elements_html_erb_spec.rb +3 -4
- data/spec/templates/detail_row_html_erb_spec.rb +84 -23
- data/spec/templates/elements/diff_html_erb_spec.rb +5 -3
- data/spec/templates/summary_row_html_erb_spec.rb +21 -14
- metadata +13 -7
- data/lib/ciat/processors/basic_processing.rb +0 -55
- data/spec/ciat/processors/basic_processing_spec.rb +0 -146
@@ -5,6 +5,7 @@ require 'hpricot'
|
|
5
5
|
describe "checked-files output in detail row" do
|
6
6
|
include ERBHelpers
|
7
7
|
include CustomDetailRowMatchers
|
8
|
+
include Webrat::Matchers
|
8
9
|
|
9
10
|
attr_reader :erb
|
10
11
|
attr_reader :element
|
@@ -21,8 +22,9 @@ describe "checked-files output in detail row" do
|
|
21
22
|
@element.should_receive(:describe).at_least(:once).and_return("the description")
|
22
23
|
@element.should_receive(:content).and_return("the diff")
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
process_erb.should have_selector("body") do |body|
|
26
|
+
body.should have_selector("h4", :content => "the description")
|
27
|
+
body.should have_diff_table("the diff")
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
2
|
|
3
3
|
require 'hpricot'
|
4
|
+
require 'webrat'
|
4
5
|
|
5
6
|
describe "summary row of test report" do
|
6
7
|
include ERBHelpers
|
7
8
|
include CustomDetailRowMatchers
|
9
|
+
include Webrat::Matchers
|
8
10
|
|
9
11
|
attr_reader :erb
|
10
12
|
attr_reader :recursion
|
@@ -20,9 +22,10 @@ describe "summary row of test report" do
|
|
20
22
|
expect_description("the description")
|
21
23
|
@result.should_receive(:subresults).at_least(:once).and_return([])
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
process_erb.should have_selector("body") do |body|
|
26
|
+
body.should have_selector("a", :content => "the description")
|
27
|
+
body.should have_selector("td", :count => 1)
|
28
|
+
end
|
26
29
|
end
|
27
30
|
|
28
31
|
it "should work with one processor" do
|
@@ -35,9 +38,11 @@ describe "summary row of test report" do
|
|
35
38
|
expect_light(subresult, :light_setting, "the light")
|
36
39
|
|
37
40
|
doc = process_erb
|
38
|
-
doc.should
|
39
|
-
|
40
|
-
|
41
|
+
doc.should have_selector("body") do |body|
|
42
|
+
body.should have_selector("a", :content => "one proc description")
|
43
|
+
body.should have_selector(".light_setting", :content => "the light")
|
44
|
+
body.should have_selector("td", :count => 2)
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
48
|
it "should work with many processors" do
|
@@ -50,24 +55,26 @@ describe "summary row of test report" do
|
|
50
55
|
expect_light(subresults[1], :light1, "word 1")
|
51
56
|
expect_light(subresults[2], :light2, "word 2")
|
52
57
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
58
|
+
process_erb.should have_selector("body") do |body|
|
59
|
+
body.should have_selector("a", :content => "description three")
|
60
|
+
body.should have_light(:light0, "word 0")
|
61
|
+
body.should have_light(:light1, "word 1")
|
62
|
+
body.should have_light(:light2, "word 2")
|
63
|
+
body.should have_selector("td", :count => 4)
|
64
|
+
end
|
59
65
|
end
|
60
66
|
|
61
67
|
def expect_light(subresult, setting, word)
|
62
68
|
light = mock("mock #{setting}")
|
63
69
|
subresult.should_receive(:light).at_least(:once).and_return(light)
|
64
|
-
light.should_receive(:
|
70
|
+
light.should_receive(:color).and_return(setting)
|
65
71
|
light.should_receive(:text).and_return(word)
|
66
72
|
end
|
67
73
|
|
68
74
|
def expect_description(text)
|
69
75
|
description = mock("description")
|
70
|
-
@result.should_receive(:element).
|
76
|
+
@result.should_receive(:element).
|
77
|
+
with(:description).and_return(description)
|
71
78
|
description.should_receive(:content).and_return(text)
|
72
79
|
end
|
73
80
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ciat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy D. Frens
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-11-21 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -24,6 +24,7 @@ extra_rdoc_files:
|
|
24
24
|
- README.rdoc
|
25
25
|
files:
|
26
26
|
- lib/ciat.rb
|
27
|
+
- lib/ciat/ciat_file.rb
|
27
28
|
- lib/ciat/differs/html_differ.rb
|
28
29
|
- lib/ciat/erb_helpers.rb
|
29
30
|
- lib/ciat/feedback/composite.rb
|
@@ -33,7 +34,6 @@ files:
|
|
33
34
|
- lib/ciat/feedback/return_status.rb
|
34
35
|
- lib/ciat/feedback/standard_output.rb
|
35
36
|
- lib/ciat/io.rb
|
36
|
-
- lib/ciat/processors/basic_processing.rb
|
37
37
|
- lib/ciat/processors/compilation_interpreter.rb
|
38
38
|
- lib/ciat/processors/compiler.rb
|
39
39
|
- lib/ciat/processors/interpreter.rb
|
@@ -41,11 +41,11 @@ files:
|
|
41
41
|
- lib/ciat/processors/parrot.rb
|
42
42
|
- lib/ciat/rake_task.rb
|
43
43
|
- lib/ciat/subresult.rb
|
44
|
+
- lib/ciat/subtest.rb
|
44
45
|
- lib/ciat/suite.rb
|
45
46
|
- lib/ciat/suite_builder.rb
|
46
47
|
- lib/ciat/test.rb
|
47
48
|
- lib/ciat/test_element.rb
|
48
|
-
- lib/ciat/test_file.rb
|
49
49
|
- lib/ciat/test_result.rb
|
50
50
|
- lib/ciat/traffic_light.rb
|
51
51
|
- lib/data/ciat.css
|
@@ -70,7 +70,7 @@ rdoc_options:
|
|
70
70
|
- --title
|
71
71
|
- CIAT -- Compiler and Interpreter Acceptance Tester
|
72
72
|
- --main
|
73
|
-
- README.
|
73
|
+
- README.rdoc
|
74
74
|
- --line-numbers
|
75
75
|
require_paths:
|
76
76
|
- lib
|
@@ -94,20 +94,26 @@ signing_key:
|
|
94
94
|
specification_version: 3
|
95
95
|
summary: Acceptance tester for compilers and interpreters
|
96
96
|
test_files:
|
97
|
+
- spec/ciat/ciat_file_spec.rb
|
97
98
|
- spec/ciat/erb_helpers_spec.rb
|
98
99
|
- spec/ciat/feedback/composite_spec.rb
|
99
100
|
- spec/ciat/feedback/feedback_counter_spec.rb
|
100
101
|
- spec/ciat/feedback/html_feedback_spec.rb
|
101
102
|
- spec/ciat/feedback/return_status_spec.rb
|
102
103
|
- spec/ciat/feedback/standard_output_spec.rb
|
103
|
-
- spec/ciat/processors/
|
104
|
+
- spec/ciat/processors/compilation_interpreter_spec.rb
|
105
|
+
- spec/ciat/processors/compiler_spec.rb
|
106
|
+
- spec/ciat/processors/interpreter_spec.rb
|
104
107
|
- spec/ciat/processors/java_spec.rb
|
105
108
|
- spec/ciat/processors/parrot_spec.rb
|
109
|
+
- spec/ciat/processors/shared_examples_for_element_names.rb
|
110
|
+
- spec/ciat/rake_task_spec.rb
|
106
111
|
- spec/ciat/subresult_spec.rb
|
112
|
+
- spec/ciat/subtest_spec.rb
|
107
113
|
- spec/ciat/suite_builder_spec.rb
|
108
114
|
- spec/ciat/suite_spec.rb
|
109
115
|
- spec/ciat/test_element_spec.rb
|
110
|
-
- spec/ciat/
|
116
|
+
- spec/ciat/test_result_spec.rb
|
111
117
|
- spec/ciat/test_spec.rb
|
112
118
|
- spec/ciat/traffic_light_spec.rb
|
113
119
|
- spec/ciat_spec.rb
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'ciat/differs/html_differ'
|
3
|
-
|
4
|
-
module CIAT::Processors
|
5
|
-
module BasicProcessing
|
6
|
-
include CIAT::Differs::HtmlDiffer
|
7
|
-
|
8
|
-
# Executes the program, and diffs the output.
|
9
|
-
def process(test)
|
10
|
-
# TODO: verify required elements
|
11
|
-
# TODO: handle optional element
|
12
|
-
if execute(test)
|
13
|
-
if diff(test)
|
14
|
-
CIAT::TrafficLight::GREEN
|
15
|
-
else
|
16
|
-
CIAT::TrafficLight::RED
|
17
|
-
end
|
18
|
-
else
|
19
|
-
CIAT::TrafficLight::YELLOW
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def execute(test)
|
24
|
-
RakeFileUtils.verbose(false) do
|
25
|
-
sh "#{executable} '#{input_file(test)}' #{command_line_args(test)} > '#{output_file(test)}' 2> '#{error_file(test)}'" do |ok, result|
|
26
|
-
return ok
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def command_line_args(test) #:nodoc:
|
32
|
-
test.element?(:command_line) ? test.element(:command_line).content.strip : ''
|
33
|
-
end
|
34
|
-
|
35
|
-
# Compares the expected and generated executions.
|
36
|
-
def diff(test)
|
37
|
-
html_diff(
|
38
|
-
test.element(kind.output_name).as_file,
|
39
|
-
test.element(kind.output_name, :generated).as_file,
|
40
|
-
test.element(kind.output_name, :diff).as_file)
|
41
|
-
end
|
42
|
-
|
43
|
-
def input_file(test)
|
44
|
-
test.element(kind.input_name).as_file
|
45
|
-
end
|
46
|
-
|
47
|
-
def output_file(test)
|
48
|
-
test.element(kind.output_name, :generated).as_file
|
49
|
-
end
|
50
|
-
|
51
|
-
def error_file(test)
|
52
|
-
test.element(kind.output_name, :error).as_file
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
describe CIAT::Processors::BasicProcessing do
|
4
|
-
class Processor
|
5
|
-
include CIAT::Processors::BasicProcessing
|
6
|
-
end
|
7
|
-
|
8
|
-
before(:each) do
|
9
|
-
@processor = Processor.new
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "processing" do
|
13
|
-
before(:each) do
|
14
|
-
@test = mock("test")
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should execute and diff normally" do
|
18
|
-
@processor.should_receive(:execute).with(@test).and_return(true)
|
19
|
-
@processor.should_receive(:diff).with(@test).and_return(true)
|
20
|
-
|
21
|
-
@processor.process(@test).should == CIAT::TrafficLight::GREEN
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should execute with an error" do
|
25
|
-
@processor.should_receive(:execute).with(@test).and_return(false)
|
26
|
-
|
27
|
-
@processor.process(@test).should == CIAT::TrafficLight::YELLOW
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should execute normally and diff with a failure" do
|
31
|
-
@processor.should_receive(:execute).with(@test).and_return(true)
|
32
|
-
@processor.should_receive(:diff).with(@test).and_return(false)
|
33
|
-
|
34
|
-
@processor.process(@test).should == CIAT::TrafficLight::RED
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "executing a processor for a test" do
|
39
|
-
it "should put together and execute a shell command" do
|
40
|
-
test, ok, result = mock("test"), mock("ok"), mock("result")
|
41
|
-
|
42
|
-
@processor.should_receive(:executable).and_return("[executable]")
|
43
|
-
@processor.should_receive(:input_file).with(test).
|
44
|
-
and_return("[input]")
|
45
|
-
@processor.should_receive(:command_line_args).with(test).
|
46
|
-
and_return("[args]")
|
47
|
-
@processor.should_receive(:output_file).with(test).
|
48
|
-
and_return("[output]")
|
49
|
-
@processor.should_receive(:error_file).with(test).
|
50
|
-
and_return("[error]")
|
51
|
-
@processor.should_receive(:sh).
|
52
|
-
with("[executable] '[input]' [args] > '[output]' 2> '[error]'").
|
53
|
-
and_yield(ok, result)
|
54
|
-
|
55
|
-
@processor.execute(test).should == ok
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe "handling command-line arguments" do
|
60
|
-
it "should strip command-line arguments" do
|
61
|
-
test = mock("test")
|
62
|
-
command_line = mock("command_line")
|
63
|
-
|
64
|
-
test.should_receive(:element?).with(:command_line).and_return(true)
|
65
|
-
test.should_receive(:element).with(:command_line).
|
66
|
-
and_return(command_line)
|
67
|
-
command_line.should_receive(:content).
|
68
|
-
and_return(" argument1 \t argument2 \n\n")
|
69
|
-
|
70
|
-
@processor.command_line_args(test).should == "argument1 \t argument2"
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should return empty string if none provided" do
|
74
|
-
test = mock("test")
|
75
|
-
|
76
|
-
test.should_receive(:element?).with(:command_line).and_return(false)
|
77
|
-
|
78
|
-
@processor.command_line_args(test).should == ''
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "computing a diff" do
|
83
|
-
it "should compute a diff in HTML" do
|
84
|
-
test, kind, result =
|
85
|
-
mock("test"), mock("processor kind"), mock("result")
|
86
|
-
output_name = mock("output name")
|
87
|
-
|
88
|
-
@processor.should_receive(:kind).any_number_of_times.and_return(kind)
|
89
|
-
kind.should_receive(:output_name).any_number_of_times.
|
90
|
-
and_return(output_name)
|
91
|
-
original_file = expect_element_as_file(test, output_name)
|
92
|
-
generated_file = expect_element_as_file(test, output_name, :generated)
|
93
|
-
diff_file = expect_element_as_file(test, output_name, :diff)
|
94
|
-
@processor.should_receive(:html_diff).
|
95
|
-
with(original_file, generated_file, diff_file).and_return(result)
|
96
|
-
|
97
|
-
@processor.diff(test).should eql(result)
|
98
|
-
end
|
99
|
-
|
100
|
-
def expect_element_as_file(test, *names)
|
101
|
-
element, filename = mock("#{names} element"), mock("#{names} filename")
|
102
|
-
test.should_receive(:element).with(*names).and_return(element)
|
103
|
-
element.should_receive(:as_file).and_return(filename)
|
104
|
-
filename
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
it "should get filename of input" do
|
109
|
-
test = mock("test")
|
110
|
-
kind, element, name = mock("kind"), mock("element"), mock("name")
|
111
|
-
filename = mock("filename")
|
112
|
-
|
113
|
-
@processor.should_receive(:kind).and_return(kind)
|
114
|
-
kind.should_receive(:input_name).and_return(name)
|
115
|
-
test.should_receive(:element).with(name).and_return(element)
|
116
|
-
element.should_receive(:as_file).and_return(filename)
|
117
|
-
|
118
|
-
@processor.input_file(test).should eql(filename)
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should get filename of input" do
|
122
|
-
test = mock("test")
|
123
|
-
kind, element, name = mock("kind"), mock("element"), mock("name")
|
124
|
-
filename = mock("filename")
|
125
|
-
|
126
|
-
@processor.should_receive(:kind).and_return(kind)
|
127
|
-
kind.should_receive(:output_name).and_return(name)
|
128
|
-
test.should_receive(:element).with(name, :generated).and_return(element)
|
129
|
-
element.should_receive(:as_file).and_return(filename)
|
130
|
-
|
131
|
-
@processor.output_file(test).should eql(filename)
|
132
|
-
end
|
133
|
-
|
134
|
-
it "should get filename of input" do
|
135
|
-
test = mock("test")
|
136
|
-
kind, element, name = mock("kind"), mock("element"), mock("name")
|
137
|
-
filename = mock("filename")
|
138
|
-
|
139
|
-
@processor.should_receive(:kind).and_return(kind)
|
140
|
-
kind.should_receive(:output_name).and_return(name)
|
141
|
-
test.should_receive(:element).with(name, :error).and_return(element)
|
142
|
-
element.should_receive(:as_file).and_return(filename)
|
143
|
-
|
144
|
-
@processor.error_file(test).should eql(filename)
|
145
|
-
end
|
146
|
-
end
|