drnic-celerity 0.0.6.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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