drnic-celerity 0.0.6.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. data/History.txt +75 -0
  2. data/License.txt +621 -0
  3. data/Manifest.txt +229 -0
  4. data/README.rdoc +78 -0
  5. data/Rakefile +25 -0
  6. data/benchmark/bm_2000_spans.rb +48 -0
  7. data/benchmark/bm_digg.rb +26 -0
  8. data/benchmark/bm_google_images.rb +36 -0
  9. data/benchmark/bm_input_locator.rb +69 -0
  10. data/benchmark/bm_text_input.rb +19 -0
  11. data/benchmark/loader.rb +14 -0
  12. data/celerity.gemspec +40 -0
  13. data/lib/celerity.rb +77 -0
  14. data/lib/celerity/browser.rb +888 -0
  15. data/lib/celerity/clickable_element.rb +73 -0
  16. data/lib/celerity/collections.rb +156 -0
  17. data/lib/celerity/container.rb +779 -0
  18. data/lib/celerity/default_viewer.rb +14 -0
  19. data/lib/celerity/disabled_element.rb +40 -0
  20. data/lib/celerity/element.rb +314 -0
  21. data/lib/celerity/element_collection.rb +107 -0
  22. data/lib/celerity/element_locator.rb +177 -0
  23. data/lib/celerity/elements/button.rb +45 -0
  24. data/lib/celerity/elements/file_field.rb +29 -0
  25. data/lib/celerity/elements/form.rb +23 -0
  26. data/lib/celerity/elements/frame.rb +77 -0
  27. data/lib/celerity/elements/image.rb +76 -0
  28. data/lib/celerity/elements/label.rb +11 -0
  29. data/lib/celerity/elements/link.rb +30 -0
  30. data/lib/celerity/elements/meta.rb +7 -0
  31. data/lib/celerity/elements/non_control_elements.rb +106 -0
  32. data/lib/celerity/elements/option.rb +32 -0
  33. data/lib/celerity/elements/radio_check.rb +115 -0
  34. data/lib/celerity/elements/select_list.rb +142 -0
  35. data/lib/celerity/elements/table.rb +144 -0
  36. data/lib/celerity/elements/table_cell.rb +29 -0
  37. data/lib/celerity/elements/table_elements.rb +42 -0
  38. data/lib/celerity/elements/table_row.rb +48 -0
  39. data/lib/celerity/elements/text_field.rb +169 -0
  40. data/lib/celerity/exception.rb +83 -0
  41. data/lib/celerity/htmlunit.rb +65 -0
  42. data/lib/celerity/htmlunit/commons-codec-1.4.jar +0 -0
  43. data/lib/celerity/htmlunit/commons-collections-3.2.1.jar +0 -0
  44. data/lib/celerity/htmlunit/commons-httpclient-3.1.jar +0 -0
  45. data/lib/celerity/htmlunit/commons-io-1.4.jar +0 -0
  46. data/lib/celerity/htmlunit/commons-lang-2.4.jar +0 -0
  47. data/lib/celerity/htmlunit/commons-logging-1.1.1.jar +0 -0
  48. data/lib/celerity/htmlunit/cssparser-0.9.5.jar +0 -0
  49. data/lib/celerity/htmlunit/htmlunit-2.6-SNAPSHOT.jar +0 -0
  50. data/lib/celerity/htmlunit/htmlunit-core-js-2.6-SNAPSHOT.jar +0 -0
  51. data/lib/celerity/htmlunit/nekohtml-1.9.13-20090820.100833-15.jar +0 -0
  52. data/lib/celerity/htmlunit/sac-1.3.jar +0 -0
  53. data/lib/celerity/htmlunit/serializer-2.7.1.jar +0 -0
  54. data/lib/celerity/htmlunit/xalan-2.7.1.jar +0 -0
  55. data/lib/celerity/htmlunit/xercesImpl-2.9.1.jar +0 -0
  56. data/lib/celerity/htmlunit/xml-apis-1.3.04.jar +0 -0
  57. data/lib/celerity/identifier.rb +11 -0
  58. data/lib/celerity/ignoring_web_connection.rb +15 -0
  59. data/lib/celerity/input_element.rb +25 -0
  60. data/lib/celerity/listener.rb +141 -0
  61. data/lib/celerity/resources/no_viewer.png +0 -0
  62. data/lib/celerity/short_inspect.rb +20 -0
  63. data/lib/celerity/util.rb +91 -0
  64. data/lib/celerity/viewer_connection.rb +89 -0
  65. data/lib/celerity/watir_compatibility.rb +83 -0
  66. data/lib/celerity/xpath_support.rb +48 -0
  67. data/spec/browser_authentication_spec.rb +16 -0
  68. data/spec/browser_spec.rb +300 -0
  69. data/spec/clickable_element_spec.rb +39 -0
  70. data/spec/default_viewer_spec.rb +23 -0
  71. data/spec/element_spec.rb +51 -0
  72. data/spec/filefield_spec.rb +18 -0
  73. data/spec/htmlunit_spec.rb +56 -0
  74. data/spec/index_offset_spec.rb +24 -0
  75. data/spec/listener_spec.rb +142 -0
  76. data/spec/spec_helper.rb +8 -0
  77. data/tasks/benchmark.rake +4 -0
  78. data/tasks/deployment.rake +43 -0
  79. data/tasks/environment.rake +7 -0
  80. data/tasks/fix.rake +25 -0
  81. data/tasks/jar.rake +57 -0
  82. data/tasks/rdoc.rake +4 -0
  83. data/tasks/rspec.rake +43 -0
  84. data/tasks/simple_ci.rake +94 -0
  85. data/tasks/snapshot.rake +22 -0
  86. data/tasks/website.rake +17 -0
  87. data/tasks/yard.rake +9 -0
  88. data/website/benchmarks.html +237 -0
  89. data/website/css/color.css +153 -0
  90. data/website/css/hacks.css +3 -0
  91. data/website/css/layout.css +179 -0
  92. data/website/css/screen.css +5 -0
  93. data/website/css/textmate.css +226 -0
  94. data/website/css/typography.css +72 -0
  95. data/website/gfx/body_bg.gif +0 -0
  96. data/website/gfx/button_bg.jpg +0 -0
  97. data/website/gfx/header_bg.jpg +0 -0
  98. data/website/gfx/header_left.jpg +0 -0
  99. data/website/gfx/header_right.jpg +0 -0
  100. data/website/gfx/nav_bg.jpg +0 -0
  101. data/website/index.html +133 -0
  102. data/website/yard/Celerity.html +50 -0
  103. data/website/yard/Celerity/Area.html +212 -0
  104. data/website/yard/Celerity/Areas.html +103 -0
  105. data/website/yard/Celerity/Browser.html +5594 -0
  106. data/website/yard/Celerity/Button.html +312 -0
  107. data/website/yard/Celerity/Buttons.html +103 -0
  108. data/website/yard/Celerity/CheckBox.html +347 -0
  109. data/website/yard/Celerity/CheckBoxes.html +103 -0
  110. data/website/yard/Celerity/ClickableElement.html +448 -0
  111. data/website/yard/Celerity/Container.html +7676 -0
  112. data/website/yard/Celerity/Dd.html +198 -0
  113. data/website/yard/Celerity/Dds.html +103 -0
  114. data/website/yard/Celerity/DefaultViewer.html +101 -0
  115. data/website/yard/Celerity/DisabledElement.html +252 -0
  116. data/website/yard/Celerity/Div.html +198 -0
  117. data/website/yard/Celerity/Divs.html +103 -0
  118. data/website/yard/Celerity/Dl.html +198 -0
  119. data/website/yard/Celerity/Dls.html +103 -0
  120. data/website/yard/Celerity/Dt.html +198 -0
  121. data/website/yard/Celerity/Dts.html +103 -0
  122. data/website/yard/Celerity/Element.html +1703 -0
  123. data/website/yard/Celerity/ElementCollection.html +725 -0
  124. data/website/yard/Celerity/ElementLocator.html +589 -0
  125. data/website/yard/Celerity/Em.html +198 -0
  126. data/website/yard/Celerity/Ems.html +103 -0
  127. data/website/yard/Celerity/Exception.html +23 -0
  128. data/website/yard/Celerity/Exception/CelerityException.html +32 -0
  129. data/website/yard/Celerity/Exception/MissingWayOfFindingObjectException.html +32 -0
  130. data/website/yard/Celerity/Exception/NavigationException.html +33 -0
  131. data/website/yard/Celerity/Exception/NoValueFoundException.html +33 -0
  132. data/website/yard/Celerity/Exception/ObjectDisabledException.html +33 -0
  133. data/website/yard/Celerity/Exception/ObjectReadOnlyException.html +33 -0
  134. data/website/yard/Celerity/Exception/UnexpectedPageException.html +33 -0
  135. data/website/yard/Celerity/Exception/UnknownCellException.html +33 -0
  136. data/website/yard/Celerity/Exception/UnknownFormException.html +33 -0
  137. data/website/yard/Celerity/Exception/UnknownFrameException.html +33 -0
  138. data/website/yard/Celerity/Exception/UnknownObjectException.html +33 -0
  139. data/website/yard/Celerity/Exception/UnknownRowException.html +33 -0
  140. data/website/yard/Celerity/FileField.html +289 -0
  141. data/website/yard/Celerity/FileFields.html +103 -0
  142. data/website/yard/Celerity/Form.html +284 -0
  143. data/website/yard/Celerity/Forms.html +103 -0
  144. data/website/yard/Celerity/Frame.html +527 -0
  145. data/website/yard/Celerity/Frames.html +103 -0
  146. data/website/yard/Celerity/H1.html +198 -0
  147. data/website/yard/Celerity/H1s.html +103 -0
  148. data/website/yard/Celerity/H2.html +198 -0
  149. data/website/yard/Celerity/H2s.html +103 -0
  150. data/website/yard/Celerity/H3.html +198 -0
  151. data/website/yard/Celerity/H3s.html +103 -0
  152. data/website/yard/Celerity/H4.html +198 -0
  153. data/website/yard/Celerity/H4s.html +103 -0
  154. data/website/yard/Celerity/H5.html +198 -0
  155. data/website/yard/Celerity/H5s.html +103 -0
  156. data/website/yard/Celerity/H6.html +198 -0
  157. data/website/yard/Celerity/H6s.html +103 -0
  158. data/website/yard/Celerity/Hidden.html +285 -0
  159. data/website/yard/Celerity/Hiddens.html +103 -0
  160. data/website/yard/Celerity/Image.html +645 -0
  161. data/website/yard/Celerity/Images.html +103 -0
  162. data/website/yard/Celerity/InputElement.html +271 -0
  163. data/website/yard/Celerity/Label.html +210 -0
  164. data/website/yard/Celerity/Labels.html +103 -0
  165. data/website/yard/Celerity/Li.html +198 -0
  166. data/website/yard/Celerity/Link.html +295 -0
  167. data/website/yard/Celerity/Links.html +103 -0
  168. data/website/yard/Celerity/Lis.html +103 -0
  169. data/website/yard/Celerity/Listener.html +821 -0
  170. data/website/yard/Celerity/Map.html +198 -0
  171. data/website/yard/Celerity/Maps.html +103 -0
  172. data/website/yard/Celerity/Meta.html +196 -0
  173. data/website/yard/Celerity/Metas.html +103 -0
  174. data/website/yard/Celerity/MethodGenerator.html +195 -0
  175. data/website/yard/Celerity/NonControlElement.html +212 -0
  176. data/website/yard/Celerity/Ol.html +198 -0
  177. data/website/yard/Celerity/Ols.html +103 -0
  178. data/website/yard/Celerity/Option.html +348 -0
  179. data/website/yard/Celerity/Options.html +103 -0
  180. data/website/yard/Celerity/P.html +198 -0
  181. data/website/yard/Celerity/Pre.html +198 -0
  182. data/website/yard/Celerity/Pres.html +103 -0
  183. data/website/yard/Celerity/Ps.html +103 -0
  184. data/website/yard/Celerity/Radio.html +339 -0
  185. data/website/yard/Celerity/RadioCheckCommon.html +453 -0
  186. data/website/yard/Celerity/Radios.html +103 -0
  187. data/website/yard/Celerity/SelectList.html +1122 -0
  188. data/website/yard/Celerity/SelectLists.html +103 -0
  189. data/website/yard/Celerity/ShortInspect.html +108 -0
  190. data/website/yard/Celerity/Span.html +198 -0
  191. data/website/yard/Celerity/Spans.html +103 -0
  192. data/website/yard/Celerity/Strong.html +198 -0
  193. data/website/yard/Celerity/Strongs.html +103 -0
  194. data/website/yard/Celerity/Table.html +1287 -0
  195. data/website/yard/Celerity/TableBodies.html +103 -0
  196. data/website/yard/Celerity/TableBody.html +203 -0
  197. data/website/yard/Celerity/TableCell.html +279 -0
  198. data/website/yard/Celerity/TableCells.html +103 -0
  199. data/website/yard/Celerity/TableElement.html +437 -0
  200. data/website/yard/Celerity/TableFooter.html +203 -0
  201. data/website/yard/Celerity/TableFooters.html +103 -0
  202. data/website/yard/Celerity/TableHeader.html +203 -0
  203. data/website/yard/Celerity/TableHeaders.html +103 -0
  204. data/website/yard/Celerity/TableRow.html +478 -0
  205. data/website/yard/Celerity/TableRows.html +103 -0
  206. data/website/yard/Celerity/Tables.html +103 -0
  207. data/website/yard/Celerity/TextField.html +938 -0
  208. data/website/yard/Celerity/TextFields.html +103 -0
  209. data/website/yard/Celerity/Th.html +208 -0
  210. data/website/yard/Celerity/Ul.html +209 -0
  211. data/website/yard/Celerity/Uls.html +103 -0
  212. data/website/yard/Celerity/Util.html +264 -0
  213. data/website/yard/Celerity/VERSION.html +44 -0
  214. data/website/yard/HtmlUnit.html +23 -0
  215. data/website/yard/HtmlUnit/Html.html +23 -0
  216. data/website/yard/HtmlUnit/Util.html +23 -0
  217. data/website/yard/Java/ComGargoylesoftwareHtmlunitHtml/HtmlPage.html +90 -0
  218. data/website/yard/Java/JavaLang/Iterable.html +103 -0
  219. data/website/yard/Java/OrgW3cDom/NamedNodeMap.html +97 -0
  220. data/website/yard/README.txt.html +116 -0
  221. data/website/yard/String.html +103 -0
  222. data/website/yard/all-files.html +22 -0
  223. data/website/yard/all-methods.html +3276 -0
  224. data/website/yard/all-namespaces.html +258 -0
  225. data/website/yard/app.js +18 -0
  226. data/website/yard/index.html +19 -0
  227. data/website/yard/jquery.js +11 -0
  228. data/website/yard/style.css +68 -0
  229. data/website/yard/syntax_highlight.css +21 -0
  230. metadata +307 -0
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/watirspec/spec_helper'
3
+
4
+ describe "FileField" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#set" do
11
+ it "sends content as correct content type for common file types" do
12
+ browser.file_field(:name, "new_user_portrait").set("foo.doc")
13
+ obj = browser.file_field(:name, "new_user_portrait").locate
14
+ obj.getContentType.should == "application/msword"
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,56 @@
1
+ require File.dirname(__FILE__) + '/watirspec/spec_helper'
2
+
3
+ describe "HtmlUnit bugs" do
4
+ describe "HtmlUnit bug 1968686: https://sourceforge.net/tracker/index.php?func=detail&aid=1968686&group_id=47038&atid=448266" do
5
+ it "does not raise NativeException: java.lang.StackOverflowError when going to a page where Javascripts prints a <body> tag inside another <body> tag" do
6
+ lambda { browser.goto(WatirSpec.files + "/bug_javascript_001.html") }.should_not raise_error(NativeException)
7
+ end
8
+ end
9
+
10
+ describe "HtmlUnit bug 1968708: https://sourceforge.net/tracker/index.php?func=detail&aid=1968708&group_id=47038&atid=448266" do
11
+ it "only considers the first attribute if there are duplicate attributes" do
12
+ browser.goto(WatirSpec.files + "/bug_duplicate_attributes.html")
13
+ browser.text_field(:index, 1).id.should == "org_id"
14
+ end
15
+ end
16
+
17
+ describe "NekoHtml parser bug: https://sourceforge.net/tracker/?func=detail&aid=2824922&group_id=47038&atid=448266" do
18
+ it "does not run out of java heap space" do
19
+ lambda { browser.goto(WatirSpec.files + "/parser_bug_001.html") }.should_not raise_error
20
+ end
21
+ end
22
+
23
+ # disabled for CI - need fix from HtmlUnit
24
+ # describe "HtmlUnit bug XXXXXX" do
25
+ # it "returns strings as UTF-8 when there's a charset mismatch between HTTP response header and <meta> tag" do
26
+ # browser.goto(WatirSpec.host + "/charset_mismatch")
27
+ # browser.h1(:index, 1).text.should == "\303\270"
28
+ # end
29
+ # end
30
+
31
+ it "evaluates <script> tags injected in the DOM through JQuery's replaceWith() - fixed in rev. 3598" do
32
+ browser.goto(WatirSpec.files + "/jquery.html")
33
+ browser.link(:class, 'editLink').click
34
+ browser.div(:id, 'content').text.should == "typeof update: function"
35
+ end
36
+
37
+ it "doesn't return the TinyMCE DOM when executing javascript functions" do
38
+ b = WatirSpec.new_browser
39
+
40
+ b.goto(WatirSpec.files + "/tiny_mce.html")
41
+ b.text.should include("Beskrivelse")
42
+ b.checkbox(:id, "exemption").set
43
+ b.text.should include("Beskrivelse")
44
+
45
+ b.close
46
+ end
47
+
48
+ describe "HtmlUnit bug 2811607: https://sourceforge.net/tracker/?func=detail&aid=2811607&group_id=47038&atid=448266" do
49
+ it "correctly prevents default on <form>#submit()" do
50
+ browser.goto(WatirSpec.files + "/prevent_form_submit.html")
51
+ browser.button(:id, "next").click
52
+ browser.title.should == "preventDefault() on form submission"
53
+ end
54
+ end
55
+
56
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/watirspec/spec_helper'
2
+
3
+ describe "Celerity.index_offset" do
4
+
5
+ before :all do
6
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
7
+
8
+ Celerity.index_offset = 0
9
+ end
10
+
11
+ it "returns the correct divs" do
12
+ divs = browser.divs.to_a
13
+
14
+ divs.each_with_index do |div, idx|
15
+ browser.div(:index, idx).id.should == div.id
16
+ end
17
+ end
18
+
19
+ after :all do
20
+ Celerity.index_offset = 1
21
+ end
22
+
23
+ end
24
+
@@ -0,0 +1,142 @@
1
+ require File.dirname(__FILE__) + '/watirspec/spec_helper'
2
+
3
+ describe "Listener" do
4
+ before(:each) do
5
+ @web_client = mock("WebClient", :null_object => true)
6
+ @listener = Celerity::Listener.new(@web_client)
7
+ end
8
+
9
+ it "implements the StatusHandler interface" do
10
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.StatusHandler)
11
+
12
+ @listener.should respond_to(:statusMessageChanged)
13
+ lambda { @listener.statusMessageChanged('page', 'message') }.should_not raise_error
14
+ end
15
+
16
+ it "implements the ConfirmHandler interface" do
17
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.ConfirmHandler)
18
+
19
+ @listener.should respond_to(:handleConfirm)
20
+ lambda { @listener.handleConfirm('page', 'message') }.should_not raise_error
21
+ end
22
+
23
+ it "implements the AttachmentHandler interface" do
24
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.attachment.AttachmentHandler)
25
+
26
+ @listener.should respond_to(:handleAttachment)
27
+ lambda { @listener.handleAttachment('page') }.should_not raise_error
28
+ end
29
+
30
+ it "implements the AlertHandler interface" do
31
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.AlertHandler)
32
+
33
+ @listener.should respond_to(:handleAlert)
34
+ lambda { @listener.handleAlert('page', 'message') }.should_not raise_error
35
+ end
36
+
37
+ it "implements the HTMLParserListener interface" do
38
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.html.HTMLParserListener)
39
+
40
+ @listener.should respond_to(:error)
41
+ @listener.should respond_to(:warning)
42
+
43
+ lambda { @listener.error('message', 'url', 1, 2, "key") }.should_not raise_error
44
+ lambda { @listener.warning('message', 'url', 1, 2, "key") }.should_not raise_error
45
+ end
46
+
47
+ it "implements the WebWindowListener interface" do
48
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.WebWindowListener)
49
+
50
+ @listener.should respond_to(:webWindowClosed)
51
+ @listener.should respond_to(:webWindowContentChanged)
52
+ @listener.should respond_to(:webWindowOpened)
53
+
54
+ lambda { @listener.webWindowClosed('event') }.should_not raise_error
55
+ lambda { @listener.webWindowContentChanged('event') }.should_not raise_error
56
+ lambda { @listener.webWindowOpened('event') }.should_not raise_error
57
+ end
58
+
59
+ it "implements the IncorrectnessListener interface" do
60
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.IncorrectnessListener)
61
+
62
+ @listener.should respond_to(:notify)
63
+ lambda { @listener.notify('message', 'origin') }.should_not raise_error
64
+ end
65
+
66
+ it "implements the PromptHandler interface" do
67
+ @listener.should be_a_kind_of(com.gargoylesoftware.htmlunit.PromptHandler)
68
+
69
+ @listener.should respond_to(:handlePrompt)
70
+ lambda { @listener.handlePrompt('page', 'message') }.should_not raise_error
71
+ end
72
+
73
+
74
+ describe "#add_listener" do
75
+ it "adds itself as a listener for the :status type" do
76
+ @web_client.should_receive('setStatusHandler').with(@listener)
77
+ @listener.add_listener(:status) {}
78
+ end
79
+
80
+ it "adds itself as a listener for the :alert type" do
81
+ @web_client.should_receive('setAlertHandler').with(@listener)
82
+ @listener.add_listener(:alert) {}
83
+ end
84
+
85
+ it "adds itself as a listener for the :confirm type" do
86
+ @web_client.should_receive('setConfirmHandler').with(@listener)
87
+ @listener.add_listener(:confirm) {}
88
+ end
89
+
90
+ it "adds itself as a listener for the :prompt type" do
91
+ @web_client.should_receive('setPromptHandler').with(@listener)
92
+ @listener.add_listener(:prompt) {}
93
+ end
94
+
95
+ it "adds itself as a listener for the :web_window_event type" do
96
+ @web_client.should_receive('addWebWindowListener').with(@listener)
97
+ @listener.add_listener(:web_window_event) {}
98
+ end
99
+
100
+ it "adds itself as a listener for the :html_parser type" do
101
+ @web_client.should_receive('setHTMLParserListener').with(@listener)
102
+ @listener.add_listener(:html_parser) {}
103
+ end
104
+
105
+ it "adds itself as a listener for the :incorrectness type" do
106
+ @web_client.should_receive('setIncorrectnessListener').with(@listener)
107
+ @listener.add_listener(:incorrectness) {}
108
+ end
109
+
110
+ it "adds itself as a listener for the :attachment type" do
111
+ @web_client.should_receive('setAttachmentHandler').with(@listener)
112
+ @listener.add_listener(:attachment) {}
113
+ end
114
+ end
115
+
116
+ describe "#remove_listener" do
117
+ it "removes the listener at the given index" do
118
+ updates = []
119
+ first, second = lambda { updates << :first }, lambda { updates << :second }
120
+
121
+ @listener.add_listener(:prompt, &first)
122
+ @listener.add_listener(:prompt, &second)
123
+
124
+ @listener.remove_listener(:prompt, 0)
125
+ @listener.handlePrompt('foo', 'bar')
126
+ updates.should == [:second]
127
+ end
128
+ end
129
+
130
+ it "handles several invocations of all registered listeners" do
131
+ updates = []
132
+ @listener.add_listener(:alert) { updates << :first }
133
+ @listener.add_listener(:alert) { updates << :second }
134
+
135
+ @listener.handleAlert('foo', 'bar')
136
+ updates.should == [:first, :second]
137
+
138
+ @listener.handleAlert('foo', 'bar')
139
+ updates.should == [:first, :second, :first, :second]
140
+ end
141
+
142
+ end
@@ -0,0 +1,8 @@
1
+ $:.unshift File.expand_path("#{File.dirname(__FILE__)}/../lib")
2
+ require 'celerity'
3
+
4
+ include Celerity
5
+ include Celerity::Exception
6
+ java.lang.System.setProperty("java.awt.headless", "true")
7
+
8
+ WatirSpec.browser_args = [{ :log_level => $DEBUG ? :all : :off }]
@@ -0,0 +1,4 @@
1
+ desc "Run benchmark scripts"
2
+ task :benchmark do
3
+ Dir[File.dirname(__FILE__) + "/../benchmark/*.rb"].each { |f| load f }
4
+ end
@@ -0,0 +1,43 @@
1
+ #desc 'Release the website and new gem version'
2
+ #task :deploy => [:check_version, :website, :release] do
3
+ # puts "Remember to create SVN tag:"
4
+ # puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ # "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ # puts "Suggested comment:"
7
+ # puts "Tagging release #{CHANGES}"
8
+ #end
9
+
10
+ desc 'Builds and installs gem locally'
11
+ task :local_deploy => [:install_gem]
12
+
13
+ #task :check_version do
14
+ # unless ENV['VERSION']
15
+ # puts 'Must pass a VERSION=x.y.z release version'
16
+ # exit
17
+ # end
18
+ # unless ENV['VERSION'] == VERS
19
+ # puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ # exit
21
+ # end
22
+ #end
23
+
24
+ #desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ #task :install_gem_no_doc => [:clean, :package] do
26
+ # sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ #end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ desc 'Create new Manifest.txt in diff format'
35
+ task :new do
36
+ manifest = File.new('Manifest.txt', 'w+')
37
+ Dir.glob(File.join("**", "*")).each do |f|
38
+ manifest.puts f
39
+ end
40
+ manifest.flush
41
+ puts "####\n# Remember to edit Manifest.txt and remove unwanted file entries!\n####"
42
+ end
43
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
data/tasks/fix.rake ADDED
@@ -0,0 +1,25 @@
1
+ namespace :fix do
2
+
3
+ desc 'Make all ruby files use LF line endings'
4
+ task :crlf do
5
+ files = FileList['**/*.rb']
6
+ files.each do |f|
7
+ next if File.directory?(f)
8
+ s = IO.read(f)
9
+ s.gsub!(/\r?\n/, "\n")
10
+ File.open(f, "w") { |io| io.write(s) }
11
+ end
12
+ end
13
+
14
+ desc 'Remove trailing whitespace from all ruby files'
15
+ task :trailing_whitespace do
16
+ files = FileList['**/*.rb']
17
+ files.each do |f|
18
+ next if File.directory?(f)
19
+ s = IO.read(f)
20
+ s.gsub!(/\s*?($)/, '\1')
21
+ File.open(f, "w") { |io| io.write(s) }
22
+ end
23
+ end
24
+
25
+ end
data/tasks/jar.rake ADDED
@@ -0,0 +1,57 @@
1
+ require 'celerity/version'
2
+
3
+ namespace :jar do
4
+ target_dir = "classes"
5
+
6
+ desc "Compile and create celerity-complete-#{Celerity::VERSION::STRING}.jar (includes HtmlUnit)"
7
+ task :fat do
8
+ file_name = "pkg/celerity-complete-#{Celerity::VERSION::STRING}.jar"
9
+
10
+ ruby_files = Dir['lib/**/*.rb']
11
+ jar_files = Dir['lib/**/*.jar']
12
+ resources = Dir['lib/celerity/resources/*']
13
+
14
+ rm_rf target_dir if File.exist? target_dir
15
+ mkdir target_dir
16
+ mkdir_p resource_dir = "#{target_dir}/celerity/resources"
17
+
18
+ sh "jrubyc", "-d", "lib", "-t", target_dir, *ruby_files
19
+ resources.each { |extra| cp extra, resource_dir }
20
+
21
+ jar_files.each do |f|
22
+ cp f, target_dir
23
+ end
24
+
25
+ top_dir = Dir.pwd
26
+ chdir target_dir, :verbose => true
27
+ Dir['*.jar'].each do |file|
28
+ sh "jar", "xf", file
29
+ rm_f file
30
+ end
31
+ chdir top_dir, :verbose => true
32
+
33
+ mkdir_p "pkg"
34
+ sh "jar", "cvf", file_name, '-C', target_dir, '.'
35
+ end
36
+
37
+ desc "Compile and create celerity-#{Celerity::VERSION::STRING}.jar"
38
+ task :tiny do
39
+ file_name = "pkg/celerity-#{Celerity::VERSION::STRING}.jar"
40
+
41
+ ruby_files = Dir['lib/**/*.rb']
42
+ resources = Dir['lib/celerity/resources/*']
43
+
44
+ rm_rf target_dir if File.exist? target_dir
45
+ mkdir target_dir
46
+ mkdir_p resource_dir = "#{target_dir}/celerity/resources"
47
+
48
+ sh "jrubyc", "-d", "lib", "-t", target_dir, *ruby_files
49
+ resources.each { |extra| cp extra, resource_dir }
50
+
51
+ mkdir_p "pkg"
52
+ sh "jar", "cvf", file_name, '-C', target_dir, '.'
53
+ end
54
+ end
55
+
56
+ desc 'Alias for jar:tiny'
57
+ task :jar => %w[jar:tiny]
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,4 @@
1
+ desc 'Generate RDoc'
2
+ task :rdoc do
3
+ puts `rdoc --inline-source --line-numbers --title 'Celerity Documentation' --opname index.html --main README.txt lib History.txt License.txt README.txt`
4
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,43 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+
8
+ begin
9
+ require 'spec/rake/spectask'
10
+ rescue LoadError
11
+ puts <<-EOS
12
+ To use rspec for testing you must install rspec gem:
13
+ gem install rspec
14
+ EOS
15
+ exit(0)
16
+ end
17
+
18
+
19
+ if File.exist?(path = "spec/watirspec/watirspec.rake")
20
+ load path
21
+ end
22
+
23
+ namespace :watirspec do
24
+ desc 'Initialize and fetch the watirspec submodule'
25
+ task :init do
26
+ sh "git submodule init"
27
+ sh "git submodule update"
28
+ end
29
+ end
30
+
31
+ desc "Run the specs under spec/"
32
+ Spec::Rake::SpecTask.new do |t|
33
+ t.spec_files = FileList['spec/**/*_spec.rb']
34
+ # t.ruby_opts = %w[--headless] if RUBY_PLATFORM =~ /java/
35
+
36
+ begin
37
+ require 'rcov'
38
+ t.rcov = true
39
+ t.rcov_opts = ['--exclude', 'spec,fcntl,path_helper,yaml', '--no-rcovrt']
40
+ rescue LoadError
41
+ end
42
+
43
+ end