greenpepper-ruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. data/bin/greenpepperize +71 -0
  2. data/bin/greenpepperrails +33 -0
  3. data/bin/greenpepperruby +15 -0
  4. data/data/greenpepper.rake +37 -0
  5. data/data/helper.rb +32 -0
  6. data/data/tags +6 -0
  7. data/lib/greenpepper/argumentparser.rb +161 -0
  8. data/lib/greenpepper/common/loadpath.rb +7 -0
  9. data/lib/greenpepper/context/htmlcontext.rb +26 -0
  10. data/lib/greenpepper/converter.rb +347 -0
  11. data/lib/greenpepper/core.rb +152 -0
  12. data/lib/greenpepper/example/collectionexample.rb +305 -0
  13. data/lib/greenpepper/example/dowithexample.rb +192 -0
  14. data/lib/greenpepper/example/exampleheader.rb +41 -0
  15. data/lib/greenpepper/example/examplewithfixture.rb +73 -0
  16. data/lib/greenpepper/example/executionresults.rb +160 -0
  17. data/lib/greenpepper/example/fieldaccessor.rb +36 -0
  18. data/lib/greenpepper/example/freetextexample.rb +51 -0
  19. data/lib/greenpepper/example/importexample.rb +39 -0
  20. data/lib/greenpepper/example/nameresolver.rb +69 -0
  21. data/lib/greenpepper/example/ruleforexample.rb +117 -0
  22. data/lib/greenpepper/example/setupexample.rb +79 -0
  23. data/lib/greenpepper/example/silentexample.rb +14 -0
  24. data/lib/greenpepper/example/unknownexample.rb +17 -0
  25. data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
  26. data/lib/greenpepper/executionunit.rb +39 -0
  27. data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
  28. data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
  29. data/lib/greenpepper/factory/examplefactory.rb +14 -0
  30. data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
  31. data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
  32. data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
  33. data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
  34. data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
  35. data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
  36. data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
  37. data/lib/greenpepper/freetext.rb +164 -0
  38. data/lib/greenpepper/grammar/array.treetop +51 -0
  39. data/lib/greenpepper/grammar/arrayparser.rb +14 -0
  40. data/lib/greenpepper/greenpepperconfig.rb +19 -0
  41. data/lib/greenpepper/greenpeppertask.rb +60 -0
  42. data/lib/greenpepper/logger.rb +45 -0
  43. data/lib/greenpepper/parser/freetextparser.rb +96 -0
  44. data/lib/greenpepper/parser/htmlparser.rb +70 -0
  45. data/lib/greenpepper/parser/scenario.rb +25 -0
  46. data/lib/greenpepper/parser/table.rb +37 -0
  47. data/lib/greenpepper/parser/wikiparser.rb +26 -0
  48. data/lib/greenpepper/pass/freetextpass.rb +24 -0
  49. data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
  50. data/lib/greenpepper/pass/tablepass.rb +38 -0
  51. data/lib/greenpepper/railsargumentparser.rb +46 -0
  52. data/lib/greenpepper/redpeppertask.rb +89 -0
  53. data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
  54. data/lib/greenpepper/writer/consolewriter.rb +21 -0
  55. data/lib/greenpepper/writer/freetextresult.rb +233 -0
  56. data/lib/greenpepper/writer/freetextwriter.rb +44 -0
  57. data/lib/greenpepper/writer/html.rb +14 -0
  58. data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
  59. data/lib/greenpepper/writer/htmlresult.rb +192 -0
  60. data/lib/greenpepper/writer/htmlwriter.rb +112 -0
  61. data/lib/greenpepper/writer/output.rb +26 -0
  62. data/lib/greenpepper/writer/result.rb +35 -0
  63. data/lib/greenpepper/writer/xmlwriter.rb +32 -0
  64. data/test/coreseedstest.rb +39 -0
  65. data/test/greenpepper/argumentparsertest.rb +162 -0
  66. data/test/greenpepper/common/loadpathtest.rb +24 -0
  67. data/test/greenpepper/common/stattest.rb +186 -0
  68. data/test/greenpepper/convertertest.rb +371 -0
  69. data/test/greenpepper/coretest.rb +159 -0
  70. data/test/greenpepper/example/collectionexampletest.rb +484 -0
  71. data/test/greenpepper/example/dowithexampletest.rb +148 -0
  72. data/test/greenpepper/example/exampletest.rb +28 -0
  73. data/test/greenpepper/example/freetextexampletest.rb +151 -0
  74. data/test/greenpepper/example/importexampletest.rb +79 -0
  75. data/test/greenpepper/example/nameresolvertest.rb +56 -0
  76. data/test/greenpepper/example/ruleforexampletest.rb +225 -0
  77. data/test/greenpepper/example/setupexampletest.rb +140 -0
  78. data/test/greenpepper/example/silentexampletest.rb +17 -0
  79. data/test/greenpepper/example/unknownexampletest.rb +17 -0
  80. data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
  81. data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
  82. data/test/greenpepper/factory/examplefactorytest.rb +88 -0
  83. data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
  84. data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
  85. data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
  86. data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
  87. data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
  88. data/test/greenpepper/freetexttest.rb +222 -0
  89. data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
  90. data/test/greenpepper/loggertest.rb +26 -0
  91. data/test/greenpepper/parser/freetextparsertest.rb +124 -0
  92. data/test/greenpepper/parser/htmlparsertest.rb +77 -0
  93. data/test/greenpepper/parser/wikiparsertest.rb +21 -0
  94. data/test/greenpepper/pass/freetextpasstest.rb +54 -0
  95. data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
  96. data/test/greenpepper/pass/tablepasstest.rb +23 -0
  97. data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
  98. data/test/greenpepper/writer/freetextwritertest.rb +301 -0
  99. data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
  100. data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
  101. data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
  102. data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
  103. data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
  104. data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
  105. data/test/greenpepper/writer/writertest.rb +33 -0
  106. data/test/greenpepper/writer/xmlwritertest.rb +34 -0
  107. data/test/integration/collectionexampleintegrationtest.rb +64 -0
  108. data/test/integration/errorhandlingintegrationtest.rb +68 -0
  109. data/test/integration/freetextexampleintegrationtest.rb +75 -0
  110. data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
  111. data/test/integration/importexampleintegrationtest.rb +41 -0
  112. data/test/integration/interpretationordertest.rb +48 -0
  113. data/test/integration/ruleforexampleintegrationtest.rb +102 -0
  114. data/test/integration/securityintegrationtest.rb +30 -0
  115. data/test/integration/setupexampleintegrationtest.rb +31 -0
  116. data/test/integration/silentexampleintegrationtest.rb +29 -0
  117. data/test/task/greenpeppertasktest.rb +96 -0
  118. data/test/task/redpeppertasktest.rb +120 -0
  119. data/vendor/accents.rb +85 -0
  120. metadata +234 -0
@@ -0,0 +1,371 @@
1
+ =begin
2
+ authors: Simon Mathieu (simon.math@gmail.com)
3
+ Sebastien Boisclair (sebboisclair@gmail.com)
4
+ date: March 3, 2009
5
+ =end
6
+
7
+ require 'test/unit'
8
+ require 'test/helper/assert.rb'
9
+ require 'greenpepper/converter'
10
+ require 'greenpepper/example/ruleforexample'
11
+ require 'date'
12
+ require 'test/fixtures/fixture'
13
+
14
+ include GreenPepper
15
+
16
+ class TypeConverterTest< Test::Unit::TestCase
17
+ def test_global_convert_int
18
+ s = "123"
19
+ assert_value_and_type_convert_string 123, s
20
+ end
21
+
22
+ def test_global_convert_float
23
+ s = "123.56"
24
+ assert_value_and_type_convert_string 123.56, s
25
+ end
26
+
27
+ def test_global_convert_string
28
+ s = ["123A", "a123", "12 3"]
29
+
30
+ s.each{ |n|
31
+ assert_value_and_type_convert_string n, n
32
+ }
33
+ end
34
+
35
+ def test_global_convert_bool
36
+ s = ['True', 'true', 'False', 'false', 'Yes', 'yes', 'No', 'no', 'fALse',
37
+ 'tRUe']
38
+ r = [true, true, false, false, true, true, false, false, false, true]
39
+
40
+ s.each_index{ |i|
41
+ assert_value_and_type_convert_string r[i], s[i]
42
+ }
43
+
44
+ end
45
+
46
+ def test_global_convert_blank_string
47
+ s = "blank"
48
+ assert_value_and_type_convert_string "", s
49
+ end
50
+
51
+ def test_global_convert_nils
52
+ s = ['nil', 'null', 'NIL', 'NULL', 'none', 'nothing']
53
+
54
+ s.each{ |n|
55
+ assert_value_and_type_convert_string nil, n
56
+ }
57
+ end
58
+
59
+ def test_global_iso_date_conversion
60
+ date = ["2009-03-04",
61
+ "2009-03-04 03:32Z",
62
+ "2009-03-04T03:32Z"]
63
+
64
+ date.each{ |d|
65
+ assert_value_and_type_convert_string DateTime.parse(d), d
66
+ }
67
+ end
68
+
69
+ def test_global_array
70
+ s = "[1,5.0,null]"
71
+ assert_value_and_type_convert_string [1,5.0,nil], s
72
+ end
73
+
74
+ def test_global_array_conversion
75
+ s = "[1,2,3.0]"
76
+ assert_value_and_type_convert_string [1,2,3.0], s
77
+
78
+ s = "[1]"
79
+ assert_value_and_type_convert_string [1], s
80
+
81
+ s = "[2,]"
82
+ assert_value_and_type_convert_string [2,], s
83
+
84
+ s = "[]"
85
+ assert_value_and_type_convert_string [], s
86
+ end
87
+
88
+ def test_global_array_conversion_empty_array
89
+ s = "empty"
90
+ assert_value_and_type_convert_string [], s
91
+ end
92
+
93
+ def test_global_array_with_string_containing_comma
94
+ s = "[1,\"test,comma\",5.0]"
95
+ assert_value_and_type_convert_string [1,"test,comma",5.0], s
96
+
97
+ s = "[1,'test,comma',5.0]"
98
+ assert_value_and_type_convert_string [1,'test,comma',5.0], s
99
+ end
100
+
101
+ def test_global_array_with_all_types
102
+ s = "[1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
103
+ e = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),"test,comma"]
104
+ assert_value_and_type_convert_string e, s
105
+ end
106
+
107
+ def test_global_csv
108
+ s = "1,2,3.0"
109
+ assert_value_and_type_convert_string [1,2,3.0], s
110
+ end
111
+
112
+ def test_global_csv_with_string_containing_comma
113
+ s = "1,\"test,comma\",5.0"
114
+ assert_value_and_type_convert_string [1,"test,comma",5.0], s
115
+
116
+ s = "1,'test,comma',5.0"
117
+ assert_value_and_type_convert_string [1,'test,comma',5.0], s
118
+ end
119
+
120
+ def test_global_csv_with_all_types
121
+ s = "1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\""
122
+ e = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),"test,comma"]
123
+ assert_value_and_type_convert_string e, s
124
+ end
125
+
126
+ class MoneyType < TypeBase
127
+ def self.regex
128
+ /^\$\d+\.\d+$/
129
+ end
130
+
131
+ def self.convert
132
+ Proc.new {|s| s[1..-1].to_f }
133
+ end
134
+
135
+ def self.format
136
+ Proc.new { |money,expected_format|
137
+ money = money.to_s.split(".")
138
+ "\$" + money[0] + "." + money[1].ljust(2,'0')
139
+ }
140
+ end
141
+ end
142
+
143
+ def test_custom_type_define
144
+ assert_value_and_type_convert_string 1.01, '$1.01'
145
+ end
146
+
147
+ #TODO : Integration test, shall not use example and results
148
+ =begin
149
+ def test_fixture_convert_type
150
+ ex = RuleForExample.new "ConvertTypeFixture", NameResolver
151
+ ex.add_input_header "operand1"
152
+ ex.add_output_header "value"
153
+ ex.add_row ['01/01/01', '01/01/01']
154
+ results = ex.execute
155
+ assert_results_success stats
156
+ assert_value_and_type_convert_string Date.parse('01/01/01'),
157
+ stats.rows[0][0].expected_value
158
+ end
159
+ =end
160
+
161
+ def test_explicit_string_declaration
162
+ s = "\"allo\""
163
+ assert_value_and_type_convert_string "allo", s
164
+
165
+ s = "'allo'"
166
+ assert_value_and_type_convert_string "allo", s
167
+ end
168
+
169
+ def test_global_convert_exceptions
170
+ s = "1,5.0,not,blAnk,noone,2009#03#04,\"test,comma\",typenonexistant"
171
+ assert_raise(GreenPepperTypeError) {
172
+ TypeConverter.instance.convert_string s
173
+ }
174
+ end
175
+
176
+ class FormatFixture
177
+ def format_date(date)
178
+ "my date: " + date.to_s
179
+ end
180
+ end
181
+
182
+ def test_fixture_format
183
+ f = FormatFixture.new
184
+ s = TypeConverter.instance.auto_convert_object(
185
+ f, "date", 'my date: 2001-01-01', Date.parse('01/01/2001'))
186
+ assert_equal 'my date: 2001-01-01', s
187
+ end
188
+
189
+ def test_global_format_money_type
190
+ f = FormatFixture.new
191
+ s = TypeConverter.instance.auto_convert_object(
192
+ f, "undefined format in fixture", '$1.50', 1.2)
193
+ assert_equal '$1.20', s
194
+ end
195
+
196
+ def test_global_format_int
197
+ assert_value_and_type_format_object "123", 123, "456"
198
+ end
199
+
200
+ def test_global_format_float
201
+ assert_value_and_type_format_object "123.56", 123.56, "456.78"
202
+ end
203
+
204
+ def test_global_format_bool
205
+ boolean_true = ['True', 'true', 'Yes', 'yes']
206
+ boolean_false = ['False', 'false', 'No', 'no']
207
+
208
+ boolean_true.each{ |true_expected|
209
+ assert_value_format_object true_expected, true, true_expected
210
+ }
211
+
212
+ boolean_false.each{ |false_expected|
213
+ assert_value_format_object false_expected, false, false_expected
214
+ }
215
+
216
+ boolean_true.each_index{ |i|
217
+ assert_value_format_object boolean_false[i], false, boolean_true[i]
218
+ }
219
+
220
+ r = TypeConverter.instance.format_object "tRue", true
221
+ assert_not_equal "tRue", r
222
+ assert_equal true.to_s, r
223
+ end
224
+
225
+ def test_global_format_blank_string
226
+ assert_value_and_type_format_object "blank", "", "blank"
227
+ end
228
+
229
+ def test_global_format_nils
230
+ s = ['nil', 'null', 'NIL', 'NULL', 'none', 'nothing']
231
+
232
+ s.each{ |nil_expected|
233
+ assert_value_and_type_format_object nil_expected, nil, nil_expected
234
+ }
235
+ end
236
+
237
+ def test_global_format_iso_date
238
+ assert_value_and_type_format_object "2009-03-04",
239
+ DateTime.parse("2009-03-04"), "0001-02-03"
240
+ assert_value_and_type_format_object "2009-03-04 03:32",
241
+ DateTime.parse("2009-03-04 03:32"), "0001-02-03 04:05"
242
+ assert_value_and_type_format_object "2009-03-04 03:32Z",
243
+ DateTime.parse("2009-03-04 03:32Z"), "0001-02-03 04:05Z"
244
+ assert_value_and_type_format_object "2009-03-04T03:32Z",
245
+ DateTime.parse("2009-03-04T03:32Z"), "0001-02-03T04:05Z"
246
+ assert_value_and_type_format_object "2009/03/04",
247
+ DateTime.parse("2009/03/04"), "0001/02/03"
248
+ assert_value_and_type_format_object "2009/03/04 03:32",
249
+ DateTime.parse("2009/03/04 03:32"), "0001/02/03 04:05"
250
+ assert_value_and_type_format_object "2009/03/04 03:32Z",
251
+ DateTime.parse("2009/03/04 03:32Z"), "0001/02/03 04:05Z"
252
+ assert_value_and_type_format_object "2009/03/04T03:32Z",
253
+ DateTime.parse("2009/03/04T03:32Z"), "0001/02/03T04:05Z"
254
+
255
+ date = DateTime.parse("04-03-2009")
256
+ r = TypeConverter.instance.format_object "01-02-0003", date
257
+ assert_not_equal "03-04-2009", r
258
+ assert_equal date.to_s, r
259
+ end
260
+
261
+ def test_global_format_array
262
+ assert_value_and_type_format_object "[1,2,3.0]", [1,2,3.0], "[4,5,6.0]"
263
+ assert_value_and_type_format_object "[1]", [1], "[2]"
264
+ assert_value_and_type_format_object "[1,]", [1,], "[2,]"
265
+ assert_value_and_type_format_object "[]", [], "[ ]"
266
+ end
267
+
268
+ def test_global_format_array_with_string_containing_commas
269
+ array = [1,'test,comma',5.0]
270
+ e = "[1,'test,comma',5.0]"
271
+ f = "[4,'format,virgule',2.5]"
272
+ assert_value_and_type_format_object e, array, f
273
+
274
+ array = [1,"test,comma",5.0]
275
+ e = "[1,\"test,comma\",5.0]"
276
+ f = "[4,\"format,virgule\",2.5]"
277
+ assert_value_and_type_format_object e, array, f
278
+ end
279
+
280
+ def test_global_format_array_with_all_types
281
+ array = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),
282
+ "test,comma"]
283
+ e = "[1,5.0,Yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
284
+ f = "[2,10.20,No,blank,nothing,2008-02-05 07:33Z,\"message,virgule\"]"
285
+ assert_value_and_type_format_object e, array, f
286
+
287
+ array = [1,5.0,true]
288
+ r = TypeConverter.instance.format_object(
289
+ "[2,10.20,type boolean existant pas,]", array)
290
+ assert_not_equal "[1,5.0,type boolean existant pas,]", r
291
+ assert_equal "[1,5.0," + true.to_s + ",]", r
292
+ end
293
+
294
+ def test_global_format_csv
295
+ assert_value_and_type_format_object "1,2,3.0", [1,2,3.0], "4,5,6.0"
296
+ assert_value_and_type_format_object "1,2,", [1,2,], "4,5,"
297
+ end
298
+
299
+ def test_global_format_csv_with_string_containing_commas
300
+ array = [1,'test,comma',5.0]
301
+ e = "1,'test,comma',5.0"
302
+ f = "4,'format,virgule',2.5"
303
+ assert_value_and_type_format_object e, array, f
304
+
305
+ array = [1,"test,comma",5.0]
306
+ e = "1,\"test,comma\",5.0"
307
+ f = "4,\"format,virgule\",2.5"
308
+ assert_value_and_type_format_object e, array, f
309
+
310
+ array = [1,"test,comma",5.0,]
311
+ e = "1,\"test,comma\",5.0,"
312
+ f = "4,\"format,virgule\",2.5,"
313
+ assert_value_and_type_format_object e, array, f
314
+ end
315
+
316
+ def test_global_format_csv_with_all_types
317
+ array = [1,5.0,true,"",nil,DateTime.parse("2009-03-04 03:32Z"),
318
+ "test,comma",]
319
+ formatter = "2,10.20,No,blank,nothing,2008-02-05 07:33Z,\""
320
+ formatter += "message,virgule\""
321
+ expected = "1,5.0,Yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\""
322
+ assert_value_and_type_format_object expected, array, formatter
323
+
324
+ array = [1,5.0,true]
325
+ r = TypeConverter.instance.format_object(
326
+ "2,10.20,type boolean existant pas,", array)
327
+ assert_not_equal "1,5.0,type boolean existant pas,", r
328
+ assert_equal "1,5.0," + true.to_s + ",", r
329
+ end
330
+
331
+ def test_global_format_empty_array
332
+ assert_value_and_type_format_object "empty", [], "empty"
333
+ end
334
+
335
+ def test_global_format_explicit_string_declaration
336
+ assert_value_and_type_format_object "\"allo\"", "allo", "\"value\""
337
+ assert_value_and_type_format_object "'allo'", 'allo', "'value'"
338
+ end
339
+
340
+ def test_global_format_inexistent_type
341
+ s = "type inexistant"
342
+ assert_value_and_type_format_object s.to_s, s, s
343
+ end
344
+
345
+ def test_global_parse_convert_spaces_to_nil
346
+ assert_value_and_type_convert_string nil, ' '
347
+ end
348
+
349
+ def test_global_parse_float_beginning_by_a_point
350
+ assert_value_and_type_convert_string 0.8, '.8'
351
+ end
352
+
353
+ private
354
+ def assert_value_and_type_convert_string expected_value, string_to_convert
355
+ value = TypeConverter.instance.convert_string string_to_convert
356
+ assert_equal expected_value.class, value.class
357
+ assert_equal expected_value, value
358
+ end
359
+
360
+ def assert_value_and_type_format_object(expected_value, string_to_format,
361
+ formater)
362
+ value = TypeConverter.instance.format_object formater, string_to_format
363
+ assert_equal expected_value.class, value.class
364
+ assert_equal expected_value, value
365
+ end
366
+
367
+ def assert_value_format_object expected_value, string_to_format, formater
368
+ value = TypeConverter.instance.format_object formater, string_to_format
369
+ assert_equal expected_value, value
370
+ end
371
+ end
@@ -0,0 +1,159 @@
1
+ =begin
2
+ Basic test to see if the integration server works.
3
+ Author: Simon Mathieu (simon.math@gmail.com)
4
+ =end
5
+
6
+ require '../common/test/helper/assertion'
7
+ require 'greenpepper/core'
8
+ require 'test/fixtures/fixture'
9
+ require 'test/fixtures/setupfixture'
10
+ require 'test/fixtures/dowithfixture'
11
+ require 'stringio'
12
+
13
+ include GreenPepper
14
+
15
+ class GreenPepperCoreTest < Test::Unit::TestCase
16
+ def setup
17
+ #Disable console output
18
+ @old_stdout, $stdout = $stdout, StringIO.new
19
+ @core = GreenPepperCore.new(Logger.new($stdout))
20
+ end
21
+
22
+ def teardown
23
+ $stdout = @old_stdout
24
+ end
25
+
26
+ def test_no_file_name_into_arg
27
+ assert_raise(GreenPepperFileNotFoundError) {
28
+ @core.run ['a', 'b', 'c']
29
+ }
30
+ end
31
+
32
+ def test_no_results_in_html
33
+ args = ["--no-html-results",
34
+ "test/seeds/calculator_n_in_n_out.html",
35
+ "test/results/calculator_add_n_in_n_out_output_no_result_in_html.html"]
36
+
37
+ expected = "test/expected/" +
38
+ "calculator_add_n_in_n_out_output_no_result_in_html.html"
39
+
40
+ @core.run args
41
+
42
+ assert_file_equal expected, args[2]
43
+ end
44
+
45
+ def test_command_line_results
46
+ file_output = "test/seeds/console_output.html"
47
+
48
+ args = ["test/seeds/calculator_n_in_n_out.html", file_output]
49
+
50
+ expected = "6 tests: 5 right, 1 wrong, 0 ignored, 0 exception(s)\n"
51
+ res = $stdout.string
52
+
53
+ @core.run args
54
+ File.delete file_output
55
+
56
+ assert_equal expected, res
57
+ end
58
+
59
+ def test_command_line_results_with_load_path
60
+ file_output = "test/seeds/console_output.html"
61
+ path1, path2 = "test/fixtures", "test/seeds"
62
+ args = ["test/seeds/calculator_n_in_n_out.html", file_output, "--loadpath",
63
+ path1, path2]
64
+
65
+ init_load_path = $LOAD_PATH.dup
66
+ begin
67
+ @core.run args
68
+ ensure
69
+ File.delete file_output if File.exists? file_output
70
+ end
71
+
72
+ paths = $LOAD_PATH - init_load_path
73
+ assert_equal 2, paths.size
74
+ assert_equal path1, paths[0]
75
+ assert_equal path2, paths[1]
76
+ end
77
+
78
+ def test_freetext_in_seed
79
+ args = ["test/seeds/calculator_freetext.html",
80
+ "test/results/calculator_freetext_output.html"]
81
+
82
+ expected = "test/expected/calculator_freetext_output.html"
83
+
84
+ @core.run args
85
+
86
+ assert_file_equal expected, args[1]
87
+ end
88
+
89
+ def test_xml_output_with_specified_output_file
90
+ args = ["test/seeds/calculator_no_expected_results.html",
91
+ "test/results/calculator_no_expected_results_1.xml",
92
+ "--xml"]
93
+
94
+ expected = "test/expected/calculator_no_expected_results_output.xml"
95
+
96
+ @core.run args
97
+
98
+ assert_file_equal expected, args[1]
99
+ end
100
+
101
+ def test_xml_output_with_specified_output_file_in_xml_param
102
+ args = ["test/seeds/calculator_no_expected_results.html",
103
+ "test/results/calculator_no_expected_results_3.xml",
104
+ "--xml",
105
+ "test/results/calculator_no_expected_results_param.xml"]
106
+
107
+ expected = "test/expected/calculator_no_expected_results_output.xml"
108
+
109
+ @core.run args
110
+
111
+ assert_file_equal expected, args[3]
112
+ end
113
+
114
+ def test_xml_output_with_specified_output_file_in_xml_param_output_after_xml
115
+ args = ["test/seeds/calculator_no_expected_results.html",
116
+ "--xml",
117
+ "test/results/calculator_no_expected_results_param_no_output.xml",
118
+ "test/results/calculator_no_expected_results.xml"]
119
+
120
+ expected = "test/expected/calculator_no_expected_results_output.xml"
121
+
122
+ @core.run args
123
+
124
+ assert_file_equal expected, args[2]
125
+ end
126
+
127
+ def test_multiple_formalisms_in_seed
128
+ args = ["test/seeds/multiple_formalisms_integration.html",
129
+ "test/results/multiple_formalisms_integration.html"]
130
+
131
+ expected = "test/expected/multiple_formalisms_integration.html"
132
+
133
+ @core.run args
134
+
135
+ assert_file_equal expected, args[1]
136
+ end
137
+
138
+ def test_found_bug_with_multiple_do_with_in_table
139
+ args = ["test/seeds/multiple_table_do_with_bug.html",
140
+ "test/results/multiple_table_do_with_bug.html"]
141
+
142
+ expected = "test/expected/multiple_table_do_with_bug.html"
143
+
144
+ @core.run args
145
+
146
+ assert_file_equal expected, args[1]
147
+ end
148
+
149
+ def test_core_should_return_empty_result_if_input_document_is_empty
150
+ empty_input_file = "test/seeds/empty_file.html"
151
+ empty_output_file = "test/results/empty_file.html"
152
+
153
+ args = [empty_input_file, empty_output_file]
154
+ @core.run args
155
+
156
+ output = File.read empty_output_file
157
+ assert_equal "", output
158
+ end
159
+ end