greenpepper-ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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