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.
- data/History.txt +75 -0
- data/License.txt +621 -0
- data/Manifest.txt +229 -0
- data/README.rdoc +78 -0
- data/Rakefile +25 -0
- data/benchmark/bm_2000_spans.rb +48 -0
- data/benchmark/bm_digg.rb +26 -0
- data/benchmark/bm_google_images.rb +36 -0
- data/benchmark/bm_input_locator.rb +69 -0
- data/benchmark/bm_text_input.rb +19 -0
- data/benchmark/loader.rb +14 -0
- data/celerity.gemspec +40 -0
- data/lib/celerity.rb +77 -0
- data/lib/celerity/browser.rb +888 -0
- data/lib/celerity/clickable_element.rb +73 -0
- data/lib/celerity/collections.rb +156 -0
- data/lib/celerity/container.rb +779 -0
- data/lib/celerity/default_viewer.rb +14 -0
- data/lib/celerity/disabled_element.rb +40 -0
- data/lib/celerity/element.rb +314 -0
- data/lib/celerity/element_collection.rb +107 -0
- data/lib/celerity/element_locator.rb +177 -0
- data/lib/celerity/elements/button.rb +45 -0
- data/lib/celerity/elements/file_field.rb +29 -0
- data/lib/celerity/elements/form.rb +23 -0
- data/lib/celerity/elements/frame.rb +77 -0
- data/lib/celerity/elements/image.rb +76 -0
- data/lib/celerity/elements/label.rb +11 -0
- data/lib/celerity/elements/link.rb +30 -0
- data/lib/celerity/elements/meta.rb +7 -0
- data/lib/celerity/elements/non_control_elements.rb +106 -0
- data/lib/celerity/elements/option.rb +32 -0
- data/lib/celerity/elements/radio_check.rb +115 -0
- data/lib/celerity/elements/select_list.rb +142 -0
- data/lib/celerity/elements/table.rb +144 -0
- data/lib/celerity/elements/table_cell.rb +29 -0
- data/lib/celerity/elements/table_elements.rb +42 -0
- data/lib/celerity/elements/table_row.rb +48 -0
- data/lib/celerity/elements/text_field.rb +169 -0
- data/lib/celerity/exception.rb +83 -0
- data/lib/celerity/htmlunit.rb +65 -0
- data/lib/celerity/htmlunit/commons-codec-1.4.jar +0 -0
- data/lib/celerity/htmlunit/commons-collections-3.2.1.jar +0 -0
- data/lib/celerity/htmlunit/commons-httpclient-3.1.jar +0 -0
- data/lib/celerity/htmlunit/commons-io-1.4.jar +0 -0
- data/lib/celerity/htmlunit/commons-lang-2.4.jar +0 -0
- data/lib/celerity/htmlunit/commons-logging-1.1.1.jar +0 -0
- data/lib/celerity/htmlunit/cssparser-0.9.5.jar +0 -0
- data/lib/celerity/htmlunit/htmlunit-2.6-SNAPSHOT.jar +0 -0
- data/lib/celerity/htmlunit/htmlunit-core-js-2.6-SNAPSHOT.jar +0 -0
- data/lib/celerity/htmlunit/nekohtml-1.9.13-20090820.100833-15.jar +0 -0
- data/lib/celerity/htmlunit/sac-1.3.jar +0 -0
- data/lib/celerity/htmlunit/serializer-2.7.1.jar +0 -0
- data/lib/celerity/htmlunit/xalan-2.7.1.jar +0 -0
- data/lib/celerity/htmlunit/xercesImpl-2.9.1.jar +0 -0
- data/lib/celerity/htmlunit/xml-apis-1.3.04.jar +0 -0
- data/lib/celerity/identifier.rb +11 -0
- data/lib/celerity/ignoring_web_connection.rb +15 -0
- data/lib/celerity/input_element.rb +25 -0
- data/lib/celerity/listener.rb +141 -0
- data/lib/celerity/resources/no_viewer.png +0 -0
- data/lib/celerity/short_inspect.rb +20 -0
- data/lib/celerity/util.rb +91 -0
- data/lib/celerity/viewer_connection.rb +89 -0
- data/lib/celerity/watir_compatibility.rb +83 -0
- data/lib/celerity/xpath_support.rb +48 -0
- data/spec/browser_authentication_spec.rb +16 -0
- data/spec/browser_spec.rb +300 -0
- data/spec/clickable_element_spec.rb +39 -0
- data/spec/default_viewer_spec.rb +23 -0
- data/spec/element_spec.rb +51 -0
- data/spec/filefield_spec.rb +18 -0
- data/spec/htmlunit_spec.rb +56 -0
- data/spec/index_offset_spec.rb +24 -0
- data/spec/listener_spec.rb +142 -0
- data/spec/spec_helper.rb +8 -0
- data/tasks/benchmark.rake +4 -0
- data/tasks/deployment.rake +43 -0
- data/tasks/environment.rake +7 -0
- data/tasks/fix.rake +25 -0
- data/tasks/jar.rake +57 -0
- data/tasks/rdoc.rake +4 -0
- data/tasks/rspec.rake +43 -0
- data/tasks/simple_ci.rake +94 -0
- data/tasks/snapshot.rake +22 -0
- data/tasks/website.rake +17 -0
- data/tasks/yard.rake +9 -0
- data/website/benchmarks.html +237 -0
- data/website/css/color.css +153 -0
- data/website/css/hacks.css +3 -0
- data/website/css/layout.css +179 -0
- data/website/css/screen.css +5 -0
- data/website/css/textmate.css +226 -0
- data/website/css/typography.css +72 -0
- data/website/gfx/body_bg.gif +0 -0
- data/website/gfx/button_bg.jpg +0 -0
- data/website/gfx/header_bg.jpg +0 -0
- data/website/gfx/header_left.jpg +0 -0
- data/website/gfx/header_right.jpg +0 -0
- data/website/gfx/nav_bg.jpg +0 -0
- data/website/index.html +133 -0
- data/website/yard/Celerity.html +50 -0
- data/website/yard/Celerity/Area.html +212 -0
- data/website/yard/Celerity/Areas.html +103 -0
- data/website/yard/Celerity/Browser.html +5594 -0
- data/website/yard/Celerity/Button.html +312 -0
- data/website/yard/Celerity/Buttons.html +103 -0
- data/website/yard/Celerity/CheckBox.html +347 -0
- data/website/yard/Celerity/CheckBoxes.html +103 -0
- data/website/yard/Celerity/ClickableElement.html +448 -0
- data/website/yard/Celerity/Container.html +7676 -0
- data/website/yard/Celerity/Dd.html +198 -0
- data/website/yard/Celerity/Dds.html +103 -0
- data/website/yard/Celerity/DefaultViewer.html +101 -0
- data/website/yard/Celerity/DisabledElement.html +252 -0
- data/website/yard/Celerity/Div.html +198 -0
- data/website/yard/Celerity/Divs.html +103 -0
- data/website/yard/Celerity/Dl.html +198 -0
- data/website/yard/Celerity/Dls.html +103 -0
- data/website/yard/Celerity/Dt.html +198 -0
- data/website/yard/Celerity/Dts.html +103 -0
- data/website/yard/Celerity/Element.html +1703 -0
- data/website/yard/Celerity/ElementCollection.html +725 -0
- data/website/yard/Celerity/ElementLocator.html +589 -0
- data/website/yard/Celerity/Em.html +198 -0
- data/website/yard/Celerity/Ems.html +103 -0
- data/website/yard/Celerity/Exception.html +23 -0
- data/website/yard/Celerity/Exception/CelerityException.html +32 -0
- data/website/yard/Celerity/Exception/MissingWayOfFindingObjectException.html +32 -0
- data/website/yard/Celerity/Exception/NavigationException.html +33 -0
- data/website/yard/Celerity/Exception/NoValueFoundException.html +33 -0
- data/website/yard/Celerity/Exception/ObjectDisabledException.html +33 -0
- data/website/yard/Celerity/Exception/ObjectReadOnlyException.html +33 -0
- data/website/yard/Celerity/Exception/UnexpectedPageException.html +33 -0
- data/website/yard/Celerity/Exception/UnknownCellException.html +33 -0
- data/website/yard/Celerity/Exception/UnknownFormException.html +33 -0
- data/website/yard/Celerity/Exception/UnknownFrameException.html +33 -0
- data/website/yard/Celerity/Exception/UnknownObjectException.html +33 -0
- data/website/yard/Celerity/Exception/UnknownRowException.html +33 -0
- data/website/yard/Celerity/FileField.html +289 -0
- data/website/yard/Celerity/FileFields.html +103 -0
- data/website/yard/Celerity/Form.html +284 -0
- data/website/yard/Celerity/Forms.html +103 -0
- data/website/yard/Celerity/Frame.html +527 -0
- data/website/yard/Celerity/Frames.html +103 -0
- data/website/yard/Celerity/H1.html +198 -0
- data/website/yard/Celerity/H1s.html +103 -0
- data/website/yard/Celerity/H2.html +198 -0
- data/website/yard/Celerity/H2s.html +103 -0
- data/website/yard/Celerity/H3.html +198 -0
- data/website/yard/Celerity/H3s.html +103 -0
- data/website/yard/Celerity/H4.html +198 -0
- data/website/yard/Celerity/H4s.html +103 -0
- data/website/yard/Celerity/H5.html +198 -0
- data/website/yard/Celerity/H5s.html +103 -0
- data/website/yard/Celerity/H6.html +198 -0
- data/website/yard/Celerity/H6s.html +103 -0
- data/website/yard/Celerity/Hidden.html +285 -0
- data/website/yard/Celerity/Hiddens.html +103 -0
- data/website/yard/Celerity/Image.html +645 -0
- data/website/yard/Celerity/Images.html +103 -0
- data/website/yard/Celerity/InputElement.html +271 -0
- data/website/yard/Celerity/Label.html +210 -0
- data/website/yard/Celerity/Labels.html +103 -0
- data/website/yard/Celerity/Li.html +198 -0
- data/website/yard/Celerity/Link.html +295 -0
- data/website/yard/Celerity/Links.html +103 -0
- data/website/yard/Celerity/Lis.html +103 -0
- data/website/yard/Celerity/Listener.html +821 -0
- data/website/yard/Celerity/Map.html +198 -0
- data/website/yard/Celerity/Maps.html +103 -0
- data/website/yard/Celerity/Meta.html +196 -0
- data/website/yard/Celerity/Metas.html +103 -0
- data/website/yard/Celerity/MethodGenerator.html +195 -0
- data/website/yard/Celerity/NonControlElement.html +212 -0
- data/website/yard/Celerity/Ol.html +198 -0
- data/website/yard/Celerity/Ols.html +103 -0
- data/website/yard/Celerity/Option.html +348 -0
- data/website/yard/Celerity/Options.html +103 -0
- data/website/yard/Celerity/P.html +198 -0
- data/website/yard/Celerity/Pre.html +198 -0
- data/website/yard/Celerity/Pres.html +103 -0
- data/website/yard/Celerity/Ps.html +103 -0
- data/website/yard/Celerity/Radio.html +339 -0
- data/website/yard/Celerity/RadioCheckCommon.html +453 -0
- data/website/yard/Celerity/Radios.html +103 -0
- data/website/yard/Celerity/SelectList.html +1122 -0
- data/website/yard/Celerity/SelectLists.html +103 -0
- data/website/yard/Celerity/ShortInspect.html +108 -0
- data/website/yard/Celerity/Span.html +198 -0
- data/website/yard/Celerity/Spans.html +103 -0
- data/website/yard/Celerity/Strong.html +198 -0
- data/website/yard/Celerity/Strongs.html +103 -0
- data/website/yard/Celerity/Table.html +1287 -0
- data/website/yard/Celerity/TableBodies.html +103 -0
- data/website/yard/Celerity/TableBody.html +203 -0
- data/website/yard/Celerity/TableCell.html +279 -0
- data/website/yard/Celerity/TableCells.html +103 -0
- data/website/yard/Celerity/TableElement.html +437 -0
- data/website/yard/Celerity/TableFooter.html +203 -0
- data/website/yard/Celerity/TableFooters.html +103 -0
- data/website/yard/Celerity/TableHeader.html +203 -0
- data/website/yard/Celerity/TableHeaders.html +103 -0
- data/website/yard/Celerity/TableRow.html +478 -0
- data/website/yard/Celerity/TableRows.html +103 -0
- data/website/yard/Celerity/Tables.html +103 -0
- data/website/yard/Celerity/TextField.html +938 -0
- data/website/yard/Celerity/TextFields.html +103 -0
- data/website/yard/Celerity/Th.html +208 -0
- data/website/yard/Celerity/Ul.html +209 -0
- data/website/yard/Celerity/Uls.html +103 -0
- data/website/yard/Celerity/Util.html +264 -0
- data/website/yard/Celerity/VERSION.html +44 -0
- data/website/yard/HtmlUnit.html +23 -0
- data/website/yard/HtmlUnit/Html.html +23 -0
- data/website/yard/HtmlUnit/Util.html +23 -0
- data/website/yard/Java/ComGargoylesoftwareHtmlunitHtml/HtmlPage.html +90 -0
- data/website/yard/Java/JavaLang/Iterable.html +103 -0
- data/website/yard/Java/OrgW3cDom/NamedNodeMap.html +97 -0
- data/website/yard/README.txt.html +116 -0
- data/website/yard/String.html +103 -0
- data/website/yard/all-files.html +22 -0
- data/website/yard/all-methods.html +3276 -0
- data/website/yard/all-namespaces.html +258 -0
- data/website/yard/app.js +18 -0
- data/website/yard/index.html +19 -0
- data/website/yard/jquery.js +11 -0
- data/website/yard/style.css +68 -0
- data/website/yard/syntax_highlight.css +21 -0
- 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
|
data/spec/spec_helper.rb
ADDED
|
@@ -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
|
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
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
|