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.
- data/bin/greenpepperize +71 -0
- data/bin/greenpepperrails +33 -0
- data/bin/greenpepperruby +15 -0
- data/data/greenpepper.rake +37 -0
- data/data/helper.rb +32 -0
- data/data/tags +6 -0
- data/lib/greenpepper/argumentparser.rb +161 -0
- data/lib/greenpepper/common/loadpath.rb +7 -0
- data/lib/greenpepper/context/htmlcontext.rb +26 -0
- data/lib/greenpepper/converter.rb +347 -0
- data/lib/greenpepper/core.rb +152 -0
- data/lib/greenpepper/example/collectionexample.rb +305 -0
- data/lib/greenpepper/example/dowithexample.rb +192 -0
- data/lib/greenpepper/example/exampleheader.rb +41 -0
- data/lib/greenpepper/example/examplewithfixture.rb +73 -0
- data/lib/greenpepper/example/executionresults.rb +160 -0
- data/lib/greenpepper/example/fieldaccessor.rb +36 -0
- data/lib/greenpepper/example/freetextexample.rb +51 -0
- data/lib/greenpepper/example/importexample.rb +39 -0
- data/lib/greenpepper/example/nameresolver.rb +69 -0
- data/lib/greenpepper/example/ruleforexample.rb +117 -0
- data/lib/greenpepper/example/setupexample.rb +79 -0
- data/lib/greenpepper/example/silentexample.rb +14 -0
- data/lib/greenpepper/example/unknownexample.rb +17 -0
- data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
- data/lib/greenpepper/executionunit.rb +39 -0
- data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
- data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
- data/lib/greenpepper/factory/examplefactory.rb +14 -0
- data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
- data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
- data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
- data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
- data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
- data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
- data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
- data/lib/greenpepper/freetext.rb +164 -0
- data/lib/greenpepper/grammar/array.treetop +51 -0
- data/lib/greenpepper/grammar/arrayparser.rb +14 -0
- data/lib/greenpepper/greenpepperconfig.rb +19 -0
- data/lib/greenpepper/greenpeppertask.rb +60 -0
- data/lib/greenpepper/logger.rb +45 -0
- data/lib/greenpepper/parser/freetextparser.rb +96 -0
- data/lib/greenpepper/parser/htmlparser.rb +70 -0
- data/lib/greenpepper/parser/scenario.rb +25 -0
- data/lib/greenpepper/parser/table.rb +37 -0
- data/lib/greenpepper/parser/wikiparser.rb +26 -0
- data/lib/greenpepper/pass/freetextpass.rb +24 -0
- data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
- data/lib/greenpepper/pass/tablepass.rb +38 -0
- data/lib/greenpepper/railsargumentparser.rb +46 -0
- data/lib/greenpepper/redpeppertask.rb +89 -0
- data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
- data/lib/greenpepper/writer/consolewriter.rb +21 -0
- data/lib/greenpepper/writer/freetextresult.rb +233 -0
- data/lib/greenpepper/writer/freetextwriter.rb +44 -0
- data/lib/greenpepper/writer/html.rb +14 -0
- data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
- data/lib/greenpepper/writer/htmlresult.rb +192 -0
- data/lib/greenpepper/writer/htmlwriter.rb +112 -0
- data/lib/greenpepper/writer/output.rb +26 -0
- data/lib/greenpepper/writer/result.rb +35 -0
- data/lib/greenpepper/writer/xmlwriter.rb +32 -0
- data/test/coreseedstest.rb +39 -0
- data/test/greenpepper/argumentparsertest.rb +162 -0
- data/test/greenpepper/common/loadpathtest.rb +24 -0
- data/test/greenpepper/common/stattest.rb +186 -0
- data/test/greenpepper/convertertest.rb +371 -0
- data/test/greenpepper/coretest.rb +159 -0
- data/test/greenpepper/example/collectionexampletest.rb +484 -0
- data/test/greenpepper/example/dowithexampletest.rb +148 -0
- data/test/greenpepper/example/exampletest.rb +28 -0
- data/test/greenpepper/example/freetextexampletest.rb +151 -0
- data/test/greenpepper/example/importexampletest.rb +79 -0
- data/test/greenpepper/example/nameresolvertest.rb +56 -0
- data/test/greenpepper/example/ruleforexampletest.rb +225 -0
- data/test/greenpepper/example/setupexampletest.rb +140 -0
- data/test/greenpepper/example/silentexampletest.rb +17 -0
- data/test/greenpepper/example/unknownexampletest.rb +17 -0
- data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
- data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
- data/test/greenpepper/factory/examplefactorytest.rb +88 -0
- data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
- data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
- data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
- data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
- data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
- data/test/greenpepper/freetexttest.rb +222 -0
- data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
- data/test/greenpepper/loggertest.rb +26 -0
- data/test/greenpepper/parser/freetextparsertest.rb +124 -0
- data/test/greenpepper/parser/htmlparsertest.rb +77 -0
- data/test/greenpepper/parser/wikiparsertest.rb +21 -0
- data/test/greenpepper/pass/freetextpasstest.rb +54 -0
- data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
- data/test/greenpepper/pass/tablepasstest.rb +23 -0
- data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
- data/test/greenpepper/writer/freetextwritertest.rb +301 -0
- data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
- data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
- data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
- data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
- data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
- data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
- data/test/greenpepper/writer/writertest.rb +33 -0
- data/test/greenpepper/writer/xmlwritertest.rb +34 -0
- data/test/integration/collectionexampleintegrationtest.rb +64 -0
- data/test/integration/errorhandlingintegrationtest.rb +68 -0
- data/test/integration/freetextexampleintegrationtest.rb +75 -0
- data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
- data/test/integration/importexampleintegrationtest.rb +41 -0
- data/test/integration/interpretationordertest.rb +48 -0
- data/test/integration/ruleforexampleintegrationtest.rb +102 -0
- data/test/integration/securityintegrationtest.rb +30 -0
- data/test/integration/setupexampleintegrationtest.rb +31 -0
- data/test/integration/silentexampleintegrationtest.rb +29 -0
- data/test/task/greenpeppertasktest.rb +96 -0
- data/test/task/redpeppertasktest.rb +120 -0
- data/vendor/accents.rb +85 -0
- metadata +234 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Edouard Murat (edouardmurat1@gmail.com)
|
|
3
|
+
date: March 23, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/converter'
|
|
8
|
+
require 'greenpepper/example/ruleforexample'
|
|
9
|
+
require 'date'
|
|
10
|
+
require 'test/fixtures/fixture'
|
|
11
|
+
|
|
12
|
+
include GreenPepper
|
|
13
|
+
|
|
14
|
+
class ArrayParserTest < Test::Unit::TestCase
|
|
15
|
+
|
|
16
|
+
def setup
|
|
17
|
+
@parser = ArrayGrammarParser.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_array_treetop_parser
|
|
21
|
+
assert_parse_array [], "[]"
|
|
22
|
+
|
|
23
|
+
assert_parse_array ["1"], "[1]"
|
|
24
|
+
assert_parse_array ["'1'"], "['1']"
|
|
25
|
+
assert_parse_array ['"1"'], '["1"]'
|
|
26
|
+
|
|
27
|
+
assert_parse_array ["'1'", "'2'"], "['1','2']"
|
|
28
|
+
assert_parse_array ["'1'", "a"], "['1',a]"
|
|
29
|
+
assert_parse_array ["1", "2"], "[1,2,]"
|
|
30
|
+
assert_parse_array ["1", "2", "'test'"], "[1, 2, 'test']"
|
|
31
|
+
assert_parse_array ["'1,00$'", "a", "\"texte,virgule\""], "['1,00$',a,\"texte,virgule\"]"
|
|
32
|
+
assert_parse_array ["'1,00$'", "a", "\"texte,virgule\""], "'1,00$',a,\"texte,virgule\""
|
|
33
|
+
assert_parse_array ["1", "5.0", "yes","blank","nothing","2009-03-04 03:32Z","\"test,comma\""], "[1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
|
|
34
|
+
|
|
35
|
+
assert_parse_array ["1", "2", "'test'"], "[1, 2, 'test']\t"
|
|
36
|
+
assert_parse_array ["1", "2", "'test'"], "1, 2, 'test'\t"
|
|
37
|
+
|
|
38
|
+
assert_parse_array ["','", "','"], "[',',',']"
|
|
39
|
+
assert_parse_array ['","', '","'], '[",",","]'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def assert_parse_array expected, input_array
|
|
43
|
+
assert_equal expected, @parser.parse(input_array).text
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
Date: April 2, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/logger'
|
|
8
|
+
|
|
9
|
+
include GreenPepper
|
|
10
|
+
|
|
11
|
+
class LoggerTest < Test::Unit::TestCase
|
|
12
|
+
def setup
|
|
13
|
+
@logger = Logger.new(STDOUT)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_logger_message
|
|
17
|
+
@logger.log 'test'
|
|
18
|
+
@logger.close
|
|
19
|
+
|
|
20
|
+
s = ""
|
|
21
|
+
log_file = @logger.get_log_path
|
|
22
|
+
File.open(log_file, 'r'){|f| s = f.read}
|
|
23
|
+
|
|
24
|
+
assert_equal "test\n", s[-5..-1]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
date: October 3, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
|
|
8
|
+
require 'greenpepper/parser/freetextparser'
|
|
9
|
+
require 'greenpepper/exception/greenpepperexception'
|
|
10
|
+
|
|
11
|
+
include GreenPepper
|
|
12
|
+
|
|
13
|
+
class FreeTextParserTest < Test::Unit::TestCase
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
@parser = FreeTextParser.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_can_extract_scenario_from_pre
|
|
20
|
+
scenario =
|
|
21
|
+
<<EOF
|
|
22
|
+
<pre class="greenpepper-freetext">
|
|
23
|
+
Scenario: TestScenario1
|
|
24
|
+
Line 1.
|
|
25
|
+
Line 2.
|
|
26
|
+
</pre>
|
|
27
|
+
EOF
|
|
28
|
+
|
|
29
|
+
scenarios = @parser.extract_content scenario
|
|
30
|
+
|
|
31
|
+
assert_scenario1(scenarios)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_can_extract_scenario_from_pre_with_junk_around_pre_tag
|
|
35
|
+
scenario =
|
|
36
|
+
<<EOF
|
|
37
|
+
Some unrelated text <br/>
|
|
38
|
+
|
|
39
|
+
<pre class="greenpepper-freetext">
|
|
40
|
+
Scenario: TestScenario1
|
|
41
|
+
Line 1.
|
|
42
|
+
Line 2.
|
|
43
|
+
</pre>
|
|
44
|
+
Some unrelated text <br/>
|
|
45
|
+
Some unrelated text <br/>
|
|
46
|
+
EOF
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
scenarios = @parser.extract_content scenario
|
|
50
|
+
assert_scenario1(scenarios)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_scenario_outside_of_pre_arent_detected
|
|
54
|
+
scenario =
|
|
55
|
+
<<EOF
|
|
56
|
+
Scenario: TestScenario1
|
|
57
|
+
Line 1.
|
|
58
|
+
Line 2.
|
|
59
|
+
EOF
|
|
60
|
+
|
|
61
|
+
scenarios = @parser.extract_content scenario
|
|
62
|
+
assert_equal 0, scenarios.size
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_can_extract_multiple_scenarios
|
|
66
|
+
scenario =
|
|
67
|
+
<<EOF
|
|
68
|
+
Some unrelated text <br/>
|
|
69
|
+
|
|
70
|
+
<pre class="greenpepper-freetext">
|
|
71
|
+
Scenario: TestScenario1
|
|
72
|
+
Line 1.
|
|
73
|
+
Line 2.
|
|
74
|
+
</pre>
|
|
75
|
+
|
|
76
|
+
Some unrelated text <br/>
|
|
77
|
+
|
|
78
|
+
<pre class="greenpepper-freetext">
|
|
79
|
+
Scenario: TestScenario2
|
|
80
|
+
Line 3.
|
|
81
|
+
Line 4.
|
|
82
|
+
</pre>
|
|
83
|
+
Some unrelated text <br/>
|
|
84
|
+
EOF
|
|
85
|
+
|
|
86
|
+
scenarios = @parser.extract_content scenario
|
|
87
|
+
|
|
88
|
+
assert_equal 2, scenarios.size
|
|
89
|
+
|
|
90
|
+
assert_scenario1(scenarios)
|
|
91
|
+
assert_scenario2(scenarios)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def test_pre_with_freetext_class_raises_an_exception_if_no_scenario_is_found
|
|
95
|
+
scenario =
|
|
96
|
+
<<EOF
|
|
97
|
+
<pre class="greenpepper-freetext">
|
|
98
|
+
Text random
|
|
99
|
+
</pre>
|
|
100
|
+
EOF
|
|
101
|
+
assert_raise(GreenPepperNoScenarioInTag) {
|
|
102
|
+
@parser.extract_content scenario
|
|
103
|
+
}
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
private
|
|
107
|
+
def assert_scenario1(scenarios)
|
|
108
|
+
assert scenarios.is_a?(Array)
|
|
109
|
+
scenario = scenarios[0].content
|
|
110
|
+
assert scenario.is_a?(Scenario)
|
|
111
|
+
assert_equal "TestScenario1", scenario.fixture_name
|
|
112
|
+
assert_equal "Line 1.", scenario.lines[0]
|
|
113
|
+
assert_equal "Line 2.", scenario.lines[1]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def assert_scenario2(scenarios)
|
|
117
|
+
assert scenarios.is_a?(Array)
|
|
118
|
+
scenario = scenarios[1].content
|
|
119
|
+
assert scenario.is_a?(Scenario)
|
|
120
|
+
assert_equal "TestScenario2", scenario.fixture_name
|
|
121
|
+
assert_equal "Line 3.", scenario.lines[0]
|
|
122
|
+
assert_equal "Line 4.", scenario.lines[1]
|
|
123
|
+
end
|
|
124
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Pascal Ouellet (pas.ouellet@gmail.com)
|
|
3
|
+
date : March 6, 09
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'rubygems'
|
|
7
|
+
require 'libxml'
|
|
8
|
+
require 'test/unit'
|
|
9
|
+
require 'greenpepper/parser/htmlparser'
|
|
10
|
+
require 'greenpepper/factory/ruleforexamplefactory'
|
|
11
|
+
require 'greenpepper/factory/importexamplefactory'
|
|
12
|
+
require 'greenpepper/factory/dowithexamplefactory'
|
|
13
|
+
require 'greenpepper/exception/greenpepperexception'
|
|
14
|
+
require 'test/fixtures/fixture'
|
|
15
|
+
|
|
16
|
+
include GreenPepper
|
|
17
|
+
|
|
18
|
+
class HtmlParserTest < Test::Unit::TestCase
|
|
19
|
+
|
|
20
|
+
def setup
|
|
21
|
+
@parser = HtmlParser.new
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_html_table_parser_returns_table_with_right_values
|
|
25
|
+
base_html = "<table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
|
26
|
+
node = (LibXML::XML::Parser.string base_html).parse
|
|
27
|
+
table_parser = HtmlTableParser.new
|
|
28
|
+
table = table_parser.parse node
|
|
29
|
+
|
|
30
|
+
table.each_row{|row|
|
|
31
|
+
assert_equal "1", row[0]
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_extract_tables_returns_the_right_numbers_of_tables
|
|
36
|
+
base_html = "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
|
37
|
+
base_html += "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
|
38
|
+
base_html += "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
|
39
|
+
node = (LibXML::XML::Parser.string base_html).parse
|
|
40
|
+
|
|
41
|
+
tables = @parser.extract_tables node
|
|
42
|
+
|
|
43
|
+
assert_equal 3, tables.size
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_parse_text_returns_exception_when_text_not_standard
|
|
47
|
+
base_html = "<BadTag>"
|
|
48
|
+
|
|
49
|
+
assert_raise GreenPepperLibXmlError do
|
|
50
|
+
@parser.extract_content base_html
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_parse_text_returns_array_of_tables_in_text
|
|
55
|
+
base_html = "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
|
56
|
+
base_html += "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
|
57
|
+
base_html += "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
|
58
|
+
|
|
59
|
+
tables = @parser.extract_content base_html
|
|
60
|
+
|
|
61
|
+
assert_equal 3, tables.size
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_parse_file_returns_array_of_tables_in_file
|
|
65
|
+
File.open("anything", "w") { |f|
|
|
66
|
+
f.write "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
|
67
|
+
f.write "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
|
68
|
+
f.write "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
tables = @parser.parse_file "anything"
|
|
72
|
+
File.delete "anything"
|
|
73
|
+
|
|
74
|
+
assert_equal 3, tables.size
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
Date: April 12, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/parser/wikiparser'
|
|
8
|
+
|
|
9
|
+
include GreenPepper
|
|
10
|
+
|
|
11
|
+
class WikiMarkupParserTest < Test::Unit::TestCase
|
|
12
|
+
def test_wiki_markup_table_parsing
|
|
13
|
+
expected = Table.new
|
|
14
|
+
expected.push_row ["1", "2"]
|
|
15
|
+
expected.push_row ["3", "4"]
|
|
16
|
+
|
|
17
|
+
parser = WikiTableParser.new
|
|
18
|
+
res = parser.parse("|1|2|\n|3|4|")
|
|
19
|
+
assert_equal expected, res
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
Date: October 5, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'test/helper/assert'
|
|
8
|
+
require 'greenpepper/freetext'
|
|
9
|
+
require 'greenpepper/pass/freetextpass'
|
|
10
|
+
|
|
11
|
+
include GreenPepper
|
|
12
|
+
|
|
13
|
+
class FreeTextPassTest < Test::Unit::TestCase
|
|
14
|
+
def test_free_text_pass_should_generate_correct_result
|
|
15
|
+
input = File.open('test/seeds/freetextpass.html') { |f| f.read }
|
|
16
|
+
expected = File.open('test/expected/freetextpass.html') { |f| f.read }
|
|
17
|
+
pass = FreeTextPass.new
|
|
18
|
+
GreenPepperPass.passes = [pass]
|
|
19
|
+
stats, output = GreenPepperPass.interpret input
|
|
20
|
+
assert_html_equal expected, output
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class FreeTextPassTestFixture
|
|
25
|
+
include FreeText
|
|
26
|
+
|
|
27
|
+
Given /This is the first line./ do
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
Check /This is the second line./ do
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Check /This is the third line./ do
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
Check /This is the fourth line./ do
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class FreeTextPassTest2Fixture
|
|
41
|
+
include FreeText
|
|
42
|
+
|
|
43
|
+
Given /This is the first line./ do
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
Check /This is the second line./ do
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Check /This is the third line./ do
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
Check /This is the fourth line./ do
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'greenpepper/pass/greenpepperpass'
|
|
3
|
+
require 'greenpepper/executionunit'
|
|
4
|
+
require 'greenpepper/writer/htmlwriter'
|
|
5
|
+
require 'greenpepper/factory/htmlexamplefactory'
|
|
6
|
+
require 'greenpepper/parser/htmlparser'
|
|
7
|
+
require 'test/helper/assertion'
|
|
8
|
+
require 'mocha'
|
|
9
|
+
|
|
10
|
+
include GreenPepper
|
|
11
|
+
|
|
12
|
+
class GreenPepperPassTest < Test::Unit::TestCase
|
|
13
|
+
|
|
14
|
+
def test_if_generic_pass_is_executed_in_the_right_order
|
|
15
|
+
document = "document"
|
|
16
|
+
|
|
17
|
+
context1 = ExampleContext.new 1
|
|
18
|
+
context2 = ExampleContext.new 2
|
|
19
|
+
execution_units = [];
|
|
20
|
+
execution_units << ExecutionMock.new("content1", context1)
|
|
21
|
+
execution_units << ExecutionMock.new("content2", context2)
|
|
22
|
+
parser = mock()
|
|
23
|
+
parser.expects(:extract_content).with(document, 'UNKNOWN').returns(execution_units)
|
|
24
|
+
|
|
25
|
+
factory = mock()
|
|
26
|
+
factory.expects(:push_content).with("content1")
|
|
27
|
+
factory.expects(:push_content).with("content2")
|
|
28
|
+
factory.expects(:need_more_content?).returns(false).twice
|
|
29
|
+
factory.expects(:build_example).returns("example").twice
|
|
30
|
+
|
|
31
|
+
writer = mock()
|
|
32
|
+
writer.expects(:support?).with(execution_units[0]).returns(true)
|
|
33
|
+
writer.expects(:support?).with(execution_units[1]).returns(true)
|
|
34
|
+
writer.expects(:write).with(document, execution_units, {}).returns("new result")
|
|
35
|
+
|
|
36
|
+
pass = GreenPepperPass.new parser, factory, writer
|
|
37
|
+
GreenPepperPass.passes = [pass]
|
|
38
|
+
execution_unit, result = GreenPepperPass.interpret(document)
|
|
39
|
+
assert_equal "new result", result
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class ExecutionMock < ExecutionUnit
|
|
44
|
+
def execute
|
|
45
|
+
@result = "result"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
Date: October 5, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/pass/tablepass'
|
|
8
|
+
require 'test/helper/assertion'
|
|
9
|
+
|
|
10
|
+
include GreenPepper
|
|
11
|
+
|
|
12
|
+
class TablePassTest < Test::Unit::TestCase
|
|
13
|
+
def test_table_formalism_pass_should_generate_correct_result
|
|
14
|
+
input = File.open('test/seeds/all_features.html') { |f| f.read }
|
|
15
|
+
expected = File.open('test/expected/all_features.html') { |f| f.read }
|
|
16
|
+
pass = TablePass.new
|
|
17
|
+
GreenPepperPass.passes = [pass]
|
|
18
|
+
results, output = GreenPepperPass.interpret input
|
|
19
|
+
assert_equal expected, output
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Basic test to see if the integration server works.
|
|
3
|
+
Author: Eloise Dube (eloise.dube@gmail.com) - Martin Provencher (martin.provencher@usherbrooke.ca)
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/helper/assertion'
|
|
7
|
+
require 'greenpepper/repository/atlassianrepository'
|
|
8
|
+
|
|
9
|
+
include GreenPepper
|
|
10
|
+
|
|
11
|
+
class ServerIntegrationTest < Test::Unit::TestCase
|
|
12
|
+
class ServerMock
|
|
13
|
+
def initialize(data)
|
|
14
|
+
@data = data
|
|
15
|
+
end
|
|
16
|
+
def method_missing(method_name, *args)
|
|
17
|
+
@data
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_load_document_on_confluence
|
|
22
|
+
expected = "some text"
|
|
23
|
+
|
|
24
|
+
input_filename = "RuleFor?implemented=false"
|
|
25
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?handler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
|
26
|
+
|
|
27
|
+
server = ServerMock.new expected
|
|
28
|
+
repo = AtlassianRepository.new s, server
|
|
29
|
+
html_result = repo.load_document input_filename
|
|
30
|
+
|
|
31
|
+
assert_equal expected, html_result
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_uri_correctly_parsed
|
|
35
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?handler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
|
36
|
+
uri = AtlassianURI.new(s)
|
|
37
|
+
assert_equal s, uri.uri
|
|
38
|
+
assert_equal "http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc",
|
|
39
|
+
uri.url
|
|
40
|
+
assert_equal "test", uri.space
|
|
41
|
+
assert_equal "someuser", uri.username
|
|
42
|
+
assert_equal "somepass", uri.password
|
|
43
|
+
assert_equal "greenpepper1", uri.handler
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_incorect_uri_should_raise
|
|
47
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?hadler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
|
48
|
+
assert_raise(GreenPepperRepositoryError) {
|
|
49
|
+
AtlassianURI.new(s)
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_unsupported_repository_name
|
|
54
|
+
assert_raise(GreenPepperRepositoryError){repo = AtlassianRepository.new("")}
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class ServerFactoryMock
|
|
58
|
+
def create_server(server_url)
|
|
59
|
+
raise "Wrong url" if server_url != "url/rpc/xmlrpc"
|
|
60
|
+
XmlRpcClientMock.new
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class XmlRpcClientMock
|
|
65
|
+
def proxy(arg)
|
|
66
|
+
raise "wrong handler" if arg != "handler"
|
|
67
|
+
XmlRpcProxyMock.new
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
class XmlRpcProxyMock
|
|
72
|
+
def send(method, *args)
|
|
73
|
+
raise "incorect method" if method != :some_method
|
|
74
|
+
raise "wrong args" if args[0] != "a" && args.size != 1
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_confluence_server
|
|
79
|
+
assert_nothing_raised(RuntimeError) {
|
|
80
|
+
server = Confluence::Server.new("url", "handler",
|
|
81
|
+
ServerFactoryMock.new)
|
|
82
|
+
server.some_method('a')
|
|
83
|
+
}
|
|
84
|
+
end
|
|
85
|
+
end
|