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,34 @@
1
+ =begin
2
+ author: Alexandre Mathieu (alex.mathieu@gmail.com)
3
+ date: March 19th 2009
4
+ =end
5
+
6
+ require 'greenpepper/example/ruleforexample'
7
+ require 'greenpepper/writer/htmlwriter'
8
+ require 'greenpepper/writer/xmlwriter'
9
+ require 'test/fixtures/fixture'
10
+ require 'test/helper/assertion'
11
+ require 'test/helper/html'
12
+
13
+ include GreenPepper
14
+
15
+ class XmlWriterTest < Test::Unit::TestCase
16
+ def test_basic_xml_output
17
+ base_html = "<table><tr><td>Rule for</td><td>RuleForExampleEqualityPlusOneFixture</td></tr>"
18
+ base_html += "<tr><td>value</td><td>equality</td></tr>"
19
+ base_html += "<tr><td>3</td><td>4</td></tr></table>"
20
+
21
+ ex_header = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><documents><document><statistics><success>1</success><failure>0</failure><error>0</error><ignored>0</ignored></statistics><results><![CDATA["
22
+ ex_end = "]]></results></document></documents>"
23
+ expected = ex_header + base_html + ex_end
24
+
25
+ results = HtmlTableExecutionResults.new
26
+ results.add 0, 0, SuccessExampleResult.new
27
+
28
+ xml_writer = XmlWriter.new base_html
29
+ xml_writer.write_results [results]
30
+
31
+ assert_equal HtmlHelper.remove_indent(expected),
32
+ HtmlHelper.remove_indent(xml_writer.output)
33
+ end
34
+ end
@@ -0,0 +1,64 @@
1
+ require 'test/helper/assertion'
2
+ require 'greenpepper/core'
3
+ require 'test/fixtures/collectionfixture'
4
+ require 'stringio'
5
+
6
+ include GreenPepper
7
+
8
+ class CollectionExampleIntegrationTest < Test::Unit::TestCase
9
+
10
+ def setup
11
+ @core = GreenPepperCore.new
12
+ #Disable console output
13
+ @old_stdout, $stdout = $stdout, StringIO.new
14
+ end
15
+
16
+ def tear_down
17
+ $stdout = @old_stdout
18
+ end
19
+
20
+ def test_list_of_surplus_missing_expected
21
+
22
+ args = ["test/seeds/collection/list_of_example_integration.html",
23
+ "test/results/collection/list_of_example_integration_output.html"]
24
+ @core.run args
25
+
26
+ assert_file_equal 'test/expected/collection/list_of_example_integration_output.html',args[1]
27
+ end
28
+
29
+ def test_set_of_missing_surplus_order
30
+
31
+ args = ["test/seeds/collection/set_of_example_integration.html",
32
+ "test/results/collection/set_of_example_integration_output.html"]
33
+ @core.run args
34
+
35
+ assert_file_equal 'test/expected/collection/set_of_example_integration_output.html',args[1]
36
+ end
37
+
38
+ def test_subset_of_missing_order
39
+
40
+ args = ["test/seeds/collection/subset_of_example_integration.html",
41
+ "test/results/collection/subset_of_example_integration_output.html"]
42
+ @core.run args
43
+
44
+ assert_file_equal 'test/expected/collection/subset_of_example_integration_output.html',args[1]
45
+ end
46
+
47
+ def test_superset_of_surplus_order
48
+
49
+ args = ["test/seeds/collection/superset_of_example_integration.html",
50
+ "test/results/collection/superset_of_example_integration_output.html"]
51
+ @core.run args
52
+
53
+ assert_file_equal 'test/expected/collection/superset_of_example_integration_output.html',args[1]
54
+ end
55
+
56
+ def test_listof_fixture_without_query
57
+ args = ["test/seeds/collection/listof_noquery.html",
58
+ "test/results/collection/listof_noquery.html"]
59
+ @core.run args
60
+
61
+ assert_file_equal 'test/expected/collection/listof_noquery.html',
62
+ args[1]
63
+ end
64
+ end
@@ -0,0 +1,68 @@
1
+ =begin
2
+ Author: Simon Mathieu (simon.math@gmail.com)
3
+ Date: March 30, 2009
4
+ =end
5
+
6
+ require 'test/helper/assertion'
7
+ require 'greenpepper/core'
8
+
9
+ include GreenPepper
10
+
11
+ class ErrorHandlingIntegrationTest < Test::Unit::TestCase
12
+ def setup
13
+ #Disable console output
14
+ @old_stdout, $stdout = $stdout, StringIO.new
15
+
16
+ @errs = StringIO.new
17
+ @log = Logger.new @errs
18
+ @core = GreenPepperCore.new @log
19
+ end
20
+
21
+ def teardown
22
+ $stdout = @old_stdout
23
+ end
24
+
25
+ def test_pushing_malformed_html_input_file
26
+ args = ['test/seeds/malformed_input.html',
27
+ 'test/results/malformed_output.html']
28
+
29
+ expected = "Missing at least one cell on line 1: Header has 3 cells while current row has 2\n"
30
+
31
+ res = @core.run args
32
+ @errs.rewind
33
+
34
+ assert_equal expected, @errs.gets
35
+ end
36
+
37
+ def test_no_fixture_provided
38
+ args = ['test/seeds/malformed_no_fixture_provided.html',
39
+ 'test/results/malformed_no_fixture_provided_output.html']
40
+
41
+ expected = "No fixture name provided\n"
42
+
43
+ res = @core.run args
44
+ @errs.rewind
45
+
46
+ assert_equal expected, @errs.gets
47
+ end
48
+
49
+ def test_pushing_junk_tests
50
+ args = ['test/seeds/junk.html']
51
+
52
+ expected = "An error occured while using LibXML : Invalid element at " +
53
+ "test/seeds/junk.html:28\n"
54
+
55
+ res = @core.run args
56
+ @errs.rewind
57
+
58
+ assert_equal expected, @errs.gets
59
+ end
60
+
61
+ def test_empty_seed_should_still_work
62
+ args = ['test/seeds/empty_seed.html',
63
+ 'test/results/empty_seed.html']
64
+ res = @core.run args
65
+ assert_file_equal 'test/expected/empty_seed.html',
66
+ args[1]
67
+ end
68
+ end
@@ -0,0 +1,75 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 13, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'test/helper/assertion'
8
+ require 'greenpepper/core'
9
+ require 'greenpepper/freetext'
10
+ require 'greenpepper/example/freetextexample'
11
+ require 'test/fixtures/fixture'
12
+
13
+ include GreenPepper
14
+
15
+ class FreeTextIntegrationTest < Test::Unit::TestCase
16
+ def setup
17
+ @core = GreenPepperCore.new
18
+ #Disable console output
19
+ @old_stdout, $stdout = $stdout, StringIO.new
20
+ end
21
+
22
+ def teardown
23
+ $stdout = @old_stdout
24
+ end
25
+
26
+ def test_freetext_integration
27
+ args = ["test/seeds/freetext_integration.html",
28
+ "test/results/freetext_integration.html"]
29
+ @core.run args
30
+
31
+ assert_file_equal 'test/expected/freetext_integration.html',
32
+ args[1]
33
+ end
34
+
35
+ def test_freetext_with_all_keywords
36
+ args = ["test/seeds/freetext_all_keywords.html",
37
+ "test/results/freetext_all_keywords.html"]
38
+ @core.run args
39
+
40
+ assert_file_equal 'test/expected/freetext_all_keywords.html', args[1]
41
+ end
42
+ end
43
+
44
+ class FreeTextKeywordsTestFixture
45
+ include FreeText
46
+ attr_accessor :value1, :value2
47
+
48
+ def initialize
49
+ @value1 = 0
50
+ @value2 = 0
51
+ end
52
+
53
+ Given /given_integration value1 = (.*)./ do |arg1|
54
+ @value1 = arg1
55
+ end
56
+
57
+ When /when_integration value2 = (.*)./ do |arg1|
58
+ @value2 = arg1
59
+ end
60
+
61
+ Check /check_integration value1 = (.*)./ do |arg1|
62
+ @value1 == arg1
63
+ end
64
+
65
+ Ask /ask_integration for (.*)./ do |arg1|
66
+ self.instance_variable_get("@#{arg1}")
67
+ end
68
+
69
+ Then /then_integration value3 is (.*) and value4 is (.*)./ do |arg1, arg2|
70
+ @arg1 = arg1
71
+ @arg2 = arg2
72
+ arg1.received = 3
73
+ arg2.received = 5
74
+ end
75
+ end
@@ -0,0 +1,22 @@
1
+ =begin
2
+ Basic test to see if the integration server works.
3
+ Author: Simon Mathieu (simon.math@gmail.com)
4
+ =end
5
+
6
+
7
+ require 'test/unit'
8
+ require 'test/helper/assertion'
9
+ require 'stringio'
10
+
11
+ class GreenPepperExecutableIntegrationTest < Test::Unit::TestCase
12
+ def test_greenpepper_executable_with_all_supported_features
13
+ args = ["test/seeds/all_features.html",
14
+ "test/results/all_features.xml",
15
+ "--xml"]
16
+
17
+ `ruby bin/greenpepperruby #{args.join(" ")}`
18
+
19
+ assert_file_equal 'test/expected/all_features.xml',
20
+ args[1]
21
+ end
22
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 8, 2009
4
+ =end
5
+
6
+ require 'test/helper/assertion'
7
+ require 'greenpepper/core'
8
+ require 'stringio'
9
+
10
+ include GreenPepper
11
+
12
+ class ImportExampleIntegrationTest < Test::Unit::TestCase
13
+
14
+ def setup
15
+ @core = GreenPepperCore.new
16
+ #Disable console output
17
+ @old_stdout, $stdout = $stdout, StringIO.new
18
+ end
19
+
20
+ def teardown
21
+ $stdout = @old_stdout
22
+ end
23
+
24
+ def test_import_integration_with_td
25
+ args = ["test/seeds/import_and_two_rule_for.html",
26
+ "test/results/import_integration_with_td.html"]
27
+
28
+ @core.run args
29
+
30
+ assert_file_equal 'test/expected/import_integration_with_td.html', args[1]
31
+ end
32
+
33
+ def test_import_integration_with_th
34
+ args = ["test/seeds/import_and_two_rule_for_th.html",
35
+ "test/results/import_integration_with_th.html"]
36
+
37
+ @core.run args
38
+
39
+ assert_file_equal 'test/expected/import_integration_with_th.html', args[1]
40
+ end
41
+ end
@@ -0,0 +1,48 @@
1
+ require 'test/helper/assertion'
2
+ require 'stringio'
3
+ require 'test/unit'
4
+ require 'greenpepper/core'
5
+ require 'greenpepper/freetext'
6
+ require 'greenpepper/example/freetextexample'
7
+
8
+
9
+
10
+ include GreenPepper
11
+
12
+ class InterpretationOrderFixture
13
+ include FreeText
14
+ attr_accessor :value
15
+
16
+ def enter_row
17
+ $global_order_interpretation_val = @value
18
+ true
19
+ end
20
+
21
+ Check /Value in the setup is ([\d])\./ do |arg1|
22
+ $global_order_interpretation_val == arg1
23
+ end
24
+ end
25
+
26
+ class OrderIntegrationTest < Test::Unit::TestCase
27
+ def setup
28
+ @core = GreenPepperCore.new
29
+ #Disable console output
30
+ @old_stdout, $stdout = $stdout, StringIO.new
31
+ end
32
+
33
+ def teardown
34
+ $stdout = @old_stdout
35
+ end
36
+
37
+ def test_order_integration
38
+
39
+ args = ["test/seeds/interpretation_order.html",
40
+ "test/results/interpretation_order.html",
41
+ "--no-exception-stack"]
42
+
43
+ @core.run args
44
+
45
+ assert_file_equal 'test/expected/interpretation_order.html', args[1]
46
+ end
47
+ end
48
+
@@ -0,0 +1,102 @@
1
+ require 'test/helper/assertion'
2
+ require 'greenpepper/core'
3
+ require 'test/fixtures/fixture'
4
+ require 'stringio'
5
+
6
+ include GreenPepper
7
+
8
+ class RuleForExampleIntegrationTest < Test::Unit::TestCase
9
+
10
+ def setup
11
+ @core = GreenPepperCore.new
12
+ #Disable console output
13
+ @old_stdout, $stdout = $stdout, StringIO.new
14
+ end
15
+
16
+ def teardown
17
+ $stdout = @old_stdout
18
+ end
19
+
20
+ def test_rule_for_input
21
+ args = ["test/seeds/calculator_add.html",
22
+ "test/results/calculator_add_output.html"]
23
+ @core.run args
24
+
25
+ assert_file_equal 'test/expected/calculator_add_output.html',
26
+ args[1]
27
+ end
28
+
29
+ def test_integration_rule_for_n_input_n_output_unordered_default_arguments
30
+ args = ["test/seeds/calculator_n_in_n_out.html",
31
+ "test/results/calculator_add_n_in_n_out_unordered_args_output.html"]
32
+
33
+ @core.run args
34
+
35
+ assert_file_equal 'test/expected/calculator_add_n_in_n_out_unordered_args_output.html',
36
+ args[1]
37
+ end
38
+
39
+ def test_rule_for_example_non_existing_fixture_and_fixture_cell_is_yellow_with_td
40
+ args = ["test/seeds/non_existing_fixture.html",
41
+ "test/results/non_existing_fixture_output_td.html"]
42
+
43
+ res = @core.run args
44
+
45
+ assert_file_equal 'test/expected/non_existing_fixture_output_td.html',
46
+ args[1]
47
+ end
48
+
49
+ def test_rule_for_example_non_existing_fixture_and_fixture_cell_is_yellow_with_th
50
+ args = ["test/seeds/non_existing_fixture_th.html",
51
+ "test/results/non_existing_fixture_output.html"]
52
+
53
+ res = @core.run args
54
+
55
+ assert_file_equal 'test/expected/non_existing_fixture_output.html',
56
+ args[1]
57
+ end
58
+
59
+ def test_rule_for_input_with_natural_language_fixture_name
60
+ args = ["test/seeds/natural_language.html",
61
+ "test/results/natural_language_output.html"]
62
+ @core.run args
63
+
64
+ assert_file_equal 'test/expected/natural_language_output.html',
65
+ args[1]
66
+ end
67
+
68
+
69
+ def test_rule_for_with_no_expected_results_specified
70
+ args = ["test/seeds/calculator_no_expected_results.html",
71
+ 'test/results/calculator_no_expected_results_output.html']
72
+ @core.run args
73
+
74
+ assert_file_equal 'test/expected/calculator_no_expected_results_output.html',
75
+ args[1]
76
+ end
77
+
78
+ def test_rule_for_with_arguments
79
+ args = ['test/seeds/rule_for_with_args.html',
80
+ 'test/results/rule_for_with_args_output.html']
81
+ @core.run args
82
+
83
+ assert_file_equal 'test/expected/rule_for_with_args_output.html',
84
+ args[1]
85
+ end
86
+
87
+ def test_rule_for_expected_result_is_error
88
+ args = ['test/seeds/rule_for_expected_error.html',
89
+ 'test/results/rule_for_expected_error_output.html']
90
+ @core.run args
91
+ assert_file_equal 'test/expected/rule_for_expected_error_output.html',
92
+ args[1]
93
+ end
94
+
95
+ def test_rule_for_no_expected_server_bug
96
+ args = ['test/seeds/rulefor_no_expected_server_bug.html',
97
+ 'test/results/rulefor_no_expected_server_bug.html']
98
+ @core.run args
99
+ assert_file_equal 'test/expected/rulefor_no_expected_server_bug.html',
100
+ args[1]
101
+ end
102
+ end