akephalos 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/.gitignore +2 -0
- data/Rakefile +37 -0
- data/VERSION +1 -0
- data/akephalos.gemspec +83 -0
- data/bin/akephalos +11 -0
- data/lib/akephalos.rb +10 -0
- data/lib/akephalos/capybara.rb +203 -0
- data/lib/akephalos/cucumber.rb +6 -0
- data/lib/akephalos/htmlunit.rb +37 -0
- data/lib/akephalos/htmlunit/html_element.rb +11 -0
- data/lib/akephalos/htmlunit/html_page.rb +28 -0
- data/lib/akephalos/htmlunit/html_select.rb +19 -0
- data/lib/akephalos/htmlunit/web_client.rb +16 -0
- data/lib/akephalos/server.rb +52 -0
- data/spec/driver/akephalos_driver_spec.rb +12 -0
- data/spec/session/akephalos_session_spec.rb +26 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +12 -0
- data/src/commons-codec-1.4.jar +0 -0
- data/src/commons-collections-3.2.1.jar +0 -0
- data/src/commons-httpclient-3.1.jar +0 -0
- data/src/commons-io-1.4.jar +0 -0
- data/src/commons-lang-2.4.jar +0 -0
- data/src/commons-logging-1.1.1.jar +0 -0
- data/src/cssparser-0.9.5.jar +0 -0
- data/src/htmlunit-2.6.jar +0 -0
- data/src/htmlunit-core-js-2.6.jar +0 -0
- data/src/jruby-complete-1.4.0.jar +0 -0
- data/src/nekohtml-1.9.13.jar +0 -0
- data/src/sac-1.3.jar +0 -0
- data/src/serializer-2.7.1.jar +0 -0
- data/src/xalan-2.7.1.jar +0 -0
- data/src/xercesImpl-2.9.1.jar +0 -0
- data/src/xml-apis-1.3.04.jar +0 -0
- metadata +136 -0
data/.gitignore
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "akephalos"
|
8
|
+
gem.summary = ""
|
9
|
+
gem.description = ""
|
10
|
+
gem.email = "bj.schaefer@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/bernerdschaefer/akephalos"
|
12
|
+
gem.authors = ["Bernerd Schaefer"]
|
13
|
+
|
14
|
+
gem.add_dependency "capybara", '0.3.7'
|
15
|
+
|
16
|
+
gem.add_development_dependency "sinatra"
|
17
|
+
gem.add_development_dependency "rspec", '1.3.0'
|
18
|
+
end
|
19
|
+
rescue LoadError
|
20
|
+
puts "Jeweler not available. Install it with: gem install jeweler"
|
21
|
+
end
|
22
|
+
|
23
|
+
require 'spec/rake/spectask'
|
24
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
25
|
+
spec.libs << 'lib' << 'spec'
|
26
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
27
|
+
end
|
28
|
+
|
29
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
30
|
+
spec.libs << 'lib' << 'spec'
|
31
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
32
|
+
spec.rcov = true
|
33
|
+
end
|
34
|
+
|
35
|
+
task :spec => :check_dependencies
|
36
|
+
|
37
|
+
task :default => :spec
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/akephalos.gemspec
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{akephalos}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Bernerd Schaefer"]
|
12
|
+
s.date = %q{2010-05-05}
|
13
|
+
s.default_executable = %q{akephalos}
|
14
|
+
s.description = %q{}
|
15
|
+
s.email = %q{bj.schaefer@gmail.com}
|
16
|
+
s.executables = ["akephalos"]
|
17
|
+
s.files = [
|
18
|
+
".gitignore",
|
19
|
+
"Rakefile",
|
20
|
+
"VERSION",
|
21
|
+
"akephalos.gemspec",
|
22
|
+
"bin/akephalos",
|
23
|
+
"lib/akephalos.rb",
|
24
|
+
"lib/akephalos/capybara.rb",
|
25
|
+
"lib/akephalos/cucumber.rb",
|
26
|
+
"lib/akephalos/htmlunit.rb",
|
27
|
+
"lib/akephalos/htmlunit/html_element.rb",
|
28
|
+
"lib/akephalos/htmlunit/html_page.rb",
|
29
|
+
"lib/akephalos/htmlunit/html_select.rb",
|
30
|
+
"lib/akephalos/htmlunit/web_client.rb",
|
31
|
+
"lib/akephalos/server.rb",
|
32
|
+
"spec/driver/akephalos_driver_spec.rb",
|
33
|
+
"spec/session/akephalos_session_spec.rb",
|
34
|
+
"spec/spec.opts",
|
35
|
+
"spec/spec_helper.rb",
|
36
|
+
"src/commons-codec-1.4.jar",
|
37
|
+
"src/commons-collections-3.2.1.jar",
|
38
|
+
"src/commons-httpclient-3.1.jar",
|
39
|
+
"src/commons-io-1.4.jar",
|
40
|
+
"src/commons-lang-2.4.jar",
|
41
|
+
"src/commons-logging-1.1.1.jar",
|
42
|
+
"src/cssparser-0.9.5.jar",
|
43
|
+
"src/htmlunit-2.6.jar",
|
44
|
+
"src/htmlunit-core-js-2.6.jar",
|
45
|
+
"src/jruby-complete-1.4.0.jar",
|
46
|
+
"src/nekohtml-1.9.13.jar",
|
47
|
+
"src/sac-1.3.jar",
|
48
|
+
"src/serializer-2.7.1.jar",
|
49
|
+
"src/xalan-2.7.1.jar",
|
50
|
+
"src/xercesImpl-2.9.1.jar",
|
51
|
+
"src/xml-apis-1.3.04.jar"
|
52
|
+
]
|
53
|
+
s.homepage = %q{http://github.com/bernerdschaefer/akephalos}
|
54
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
55
|
+
s.require_paths = ["lib"]
|
56
|
+
s.rubygems_version = %q{1.3.6}
|
57
|
+
s.summary = %q{}
|
58
|
+
s.test_files = [
|
59
|
+
"spec/driver/akephalos_driver_spec.rb",
|
60
|
+
"spec/session/akephalos_session_spec.rb",
|
61
|
+
"spec/spec_helper.rb"
|
62
|
+
]
|
63
|
+
|
64
|
+
if s.respond_to? :specification_version then
|
65
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
66
|
+
s.specification_version = 3
|
67
|
+
|
68
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
69
|
+
s.add_runtime_dependency(%q<capybara>, ["= 0.3.7"])
|
70
|
+
s.add_development_dependency(%q<sinatra>, [">= 0"])
|
71
|
+
s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
|
72
|
+
else
|
73
|
+
s.add_dependency(%q<capybara>, ["= 0.3.7"])
|
74
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
75
|
+
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
76
|
+
end
|
77
|
+
else
|
78
|
+
s.add_dependency(%q<capybara>, ["= 0.3.7"])
|
79
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
80
|
+
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
data/bin/akephalos
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# vim:set filetype=ruby:
|
3
|
+
|
4
|
+
raise "Usage: akephalos socket_file" unless ARGV[0]
|
5
|
+
require 'pathname'
|
6
|
+
|
7
|
+
root = Pathname(__FILE__).expand_path.dirname.parent
|
8
|
+
jruby = root + "src/jruby-complete-1.4.0.jar"
|
9
|
+
server = root + "lib/akephalos/server"
|
10
|
+
|
11
|
+
exec "java -Xmx2048M -jar #{jruby} -r#{server} -e 'Akephalos::Server.start!(#{ARGV[0].inspect})'"
|
data/lib/akephalos.rb
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
class Capybara::Driver::Akephalos < Capybara::Driver::Base
|
2
|
+
|
3
|
+
class Node < Capybara::Node
|
4
|
+
|
5
|
+
def [](name)
|
6
|
+
name = name.to_s
|
7
|
+
case name
|
8
|
+
when 'checked'
|
9
|
+
node.isChecked
|
10
|
+
else
|
11
|
+
node[name.to_s]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def text
|
16
|
+
node.asText
|
17
|
+
end
|
18
|
+
|
19
|
+
def value
|
20
|
+
if tag_name == "select" && self[:multiple]
|
21
|
+
values = []
|
22
|
+
results = node.getSelectedOptions
|
23
|
+
while (i ||= 0) < results.size
|
24
|
+
values << results[i].asText
|
25
|
+
i += 1
|
26
|
+
end
|
27
|
+
values
|
28
|
+
elsif tag_name == "select"
|
29
|
+
node.getSelectedOptions.first.asText
|
30
|
+
else
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def set(value)
|
36
|
+
if tag_name == 'textarea'
|
37
|
+
node.setText(value.to_s)
|
38
|
+
elsif tag_name == 'input' and type == 'radio'
|
39
|
+
node.click
|
40
|
+
elsif tag_name == 'input' and type == 'checkbox'
|
41
|
+
node.click
|
42
|
+
elsif tag_name == 'input'
|
43
|
+
node.setValueAttribute(value.to_s)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def select(option)
|
48
|
+
result = node.select_option(option)
|
49
|
+
|
50
|
+
if result == nil
|
51
|
+
options = []
|
52
|
+
results = node.getOptions
|
53
|
+
while (i ||= 0) < results.size
|
54
|
+
options << results[i].asText
|
55
|
+
i += 1
|
56
|
+
end
|
57
|
+
options = options.join(", ")
|
58
|
+
raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}"
|
59
|
+
else
|
60
|
+
result
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def unselect(option)
|
65
|
+
unless self[:multiple]
|
66
|
+
raise Capybara::UnselectNotAllowed, "Cannot unselect option '#{option}' from single select box."
|
67
|
+
end
|
68
|
+
|
69
|
+
result = node.unselect_option(option)
|
70
|
+
|
71
|
+
if result == nil
|
72
|
+
options = []
|
73
|
+
results = node.getOptions
|
74
|
+
while (i ||= 0) < results.size
|
75
|
+
options << results[i].asText
|
76
|
+
i += 1
|
77
|
+
end
|
78
|
+
options = options.join(", ")
|
79
|
+
raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}"
|
80
|
+
else
|
81
|
+
result
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def trigger(event)
|
86
|
+
node.fire_event(event.to_s)
|
87
|
+
end
|
88
|
+
|
89
|
+
def tag_name
|
90
|
+
node.getNodeName
|
91
|
+
end
|
92
|
+
|
93
|
+
def visible?
|
94
|
+
node.isDisplayed
|
95
|
+
end
|
96
|
+
|
97
|
+
def drag_to(element)
|
98
|
+
node.fire_event('mousedown')
|
99
|
+
element.node.fire_event('mousemove')
|
100
|
+
element.node.fire_event('mouseup')
|
101
|
+
end
|
102
|
+
|
103
|
+
def click
|
104
|
+
node.click
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def all_unfiltered(selector)
|
110
|
+
nodes = []
|
111
|
+
results = node.getByXPath(selector)
|
112
|
+
while (i ||= 0) < results.size
|
113
|
+
nodes << Node.new(driver, results[i])
|
114
|
+
i += 1
|
115
|
+
end
|
116
|
+
nodes
|
117
|
+
end
|
118
|
+
|
119
|
+
def type
|
120
|
+
node[:type]
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
attr_reader :app, :rack_server
|
125
|
+
|
126
|
+
def self.driver
|
127
|
+
if RUBY_PLATFORM == "java"
|
128
|
+
require '/usr/local/projects/personal/htmlunit-ruby/jruby'
|
129
|
+
@driver ||= WebClient.new
|
130
|
+
else
|
131
|
+
@driver ||= begin
|
132
|
+
socket_file = "/tmp/akephalos.#{Process.pid}.sock"
|
133
|
+
uri = "drbunix://#{socket_file}"
|
134
|
+
|
135
|
+
server = fork do
|
136
|
+
exec("#{Pathname(__FILE__).dirname.parent.parent + 'bin/akephalos'} #{socket_file}")
|
137
|
+
end
|
138
|
+
|
139
|
+
DRb.start_service
|
140
|
+
|
141
|
+
sleep 1 until File.exists?(socket_file)
|
142
|
+
|
143
|
+
client_class = DRbObject.new_with_uri(uri)
|
144
|
+
|
145
|
+
at_exit { Process.kill(:INT, server); File.unlink(socket_file) }
|
146
|
+
client_class
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def initialize(app)
|
152
|
+
@app = app
|
153
|
+
@rack_server = Capybara::Server.new(@app)
|
154
|
+
@rack_server.boot if Capybara.run_server
|
155
|
+
end
|
156
|
+
|
157
|
+
def visit(path)
|
158
|
+
browser.visit(url(path))
|
159
|
+
end
|
160
|
+
|
161
|
+
def source
|
162
|
+
page.source
|
163
|
+
end
|
164
|
+
|
165
|
+
def body
|
166
|
+
page.modified_source
|
167
|
+
end
|
168
|
+
|
169
|
+
def current_url
|
170
|
+
page.current_url
|
171
|
+
end
|
172
|
+
|
173
|
+
def find(selector)
|
174
|
+
nodes = []
|
175
|
+
results = page.find(selector)
|
176
|
+
while (i ||= 0) < results.size
|
177
|
+
nodes << Node.new(self, results[i])
|
178
|
+
i += 1
|
179
|
+
end
|
180
|
+
nodes
|
181
|
+
end
|
182
|
+
|
183
|
+
def evaluate_script(script)
|
184
|
+
page.execute_script script
|
185
|
+
end
|
186
|
+
|
187
|
+
def page
|
188
|
+
browser.page
|
189
|
+
end
|
190
|
+
|
191
|
+
def browser
|
192
|
+
self.class.driver
|
193
|
+
end
|
194
|
+
|
195
|
+
def wait?; true end
|
196
|
+
|
197
|
+
private
|
198
|
+
|
199
|
+
def url(path)
|
200
|
+
rack_server.url(path)
|
201
|
+
end
|
202
|
+
|
203
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "java"
|
3
|
+
|
4
|
+
$:.unshift((Pathname(__FILE__).dirname + "../../src").expand_path)
|
5
|
+
require "commons-codec-1.4.jar"
|
6
|
+
require "commons-collections-3.2.1.jar"
|
7
|
+
require "commons-httpclient-3.1.jar"
|
8
|
+
require "commons-io-1.4.jar"
|
9
|
+
require "commons-lang-2.4.jar"
|
10
|
+
require "commons-logging-1.1.1.jar"
|
11
|
+
require "cssparser-0.9.5.jar"
|
12
|
+
require "htmlunit-2.6.jar"
|
13
|
+
require "htmlunit-core-js-2.6.jar"
|
14
|
+
require "nekohtml-1.9.13.jar"
|
15
|
+
require "sac-1.3.jar"
|
16
|
+
require "serializer-2.7.1.jar"
|
17
|
+
require "xalan-2.7.1.jar"
|
18
|
+
require "xercesImpl-2.9.1.jar"
|
19
|
+
require "xml-apis-1.3.04.jar"
|
20
|
+
|
21
|
+
logger = org.apache.commons.logging.LogFactory.getLog('com.gargoylesoftware.htmlunit')
|
22
|
+
logger.getLogger().setLevel(java.util.logging.Level::SEVERE)
|
23
|
+
|
24
|
+
java_import 'java.io.StringWriter'
|
25
|
+
java_import 'java.io.PrintWriter'
|
26
|
+
java_import "com.gargoylesoftware.htmlunit.WebClient"
|
27
|
+
java_import "com.gargoylesoftware.htmlunit.html.HtmlPage"
|
28
|
+
java_import "com.gargoylesoftware.htmlunit.html.HtmlSubmitInput"
|
29
|
+
|
30
|
+
com.gargoylesoftware.htmlunit.BrowserVersion.setDefault(
|
31
|
+
com.gargoylesoftware.htmlunit.BrowserVersion::FIREFOX_3
|
32
|
+
)
|
33
|
+
|
34
|
+
require Pathname(__FILE__).dirname + "htmlunit/html_element"
|
35
|
+
require Pathname(__FILE__).dirname + "htmlunit/html_page"
|
36
|
+
require Pathname(__FILE__).dirname + "htmlunit/html_select"
|
37
|
+
require Pathname(__FILE__).dirname + "htmlunit/web_client"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Akephalos
|
2
|
+
module Htmlunit
|
3
|
+
module HtmlPage
|
4
|
+
|
5
|
+
def modified_source
|
6
|
+
asXml
|
7
|
+
end
|
8
|
+
|
9
|
+
def source
|
10
|
+
getWebResponse.getContentAsString
|
11
|
+
end
|
12
|
+
|
13
|
+
def current_url
|
14
|
+
getWebResponse.getRequestSettings.getUrl.toString
|
15
|
+
end
|
16
|
+
|
17
|
+
def find(selector)
|
18
|
+
getByXPath(selector)
|
19
|
+
end
|
20
|
+
|
21
|
+
def execute_script(script)
|
22
|
+
executeJavaScript(script).getJavaScriptResult
|
23
|
+
end
|
24
|
+
|
25
|
+
com.gargoylesoftware.htmlunit.html.HtmlPage.send(:include, self)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Akephalos
|
2
|
+
module Htmlunit
|
3
|
+
module HtmlSelect
|
4
|
+
def select_option(option)
|
5
|
+
opt = getOptions.detect { |o| o.asText == option }
|
6
|
+
|
7
|
+
opt && opt.setSelected(true)
|
8
|
+
end
|
9
|
+
|
10
|
+
def unselect_option(option)
|
11
|
+
opt = getOptions.detect { |o| o.asText == option }
|
12
|
+
|
13
|
+
opt && opt.setSelected(false)
|
14
|
+
end
|
15
|
+
|
16
|
+
com.gargoylesoftware.htmlunit.html.HtmlSelect.send(:include, self)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "drb/drb"
|
3
|
+
require Pathname(__FILE__).expand_path.dirname + "htmlunit"
|
4
|
+
|
5
|
+
[
|
6
|
+
java.net.URL,
|
7
|
+
java.util.List,
|
8
|
+
com.gargoylesoftware.htmlunit.html.DomNode,
|
9
|
+
com.gargoylesoftware.htmlunit.html.DomElement,
|
10
|
+
com.gargoylesoftware.htmlunit.html.HtmlAnchor,
|
11
|
+
com.gargoylesoftware.htmlunit.html.HtmlElement,
|
12
|
+
com.gargoylesoftware.htmlunit.html.HtmlPage,
|
13
|
+
org.w3c.dom.Node,
|
14
|
+
org.w3c.dom.NamedNodeMap,
|
15
|
+
com.gargoylesoftware.htmlunit.WebClient,
|
16
|
+
com.gargoylesoftware.htmlunit.WebResponse,
|
17
|
+
com.gargoylesoftware.htmlunit.WebRequestSettings
|
18
|
+
].each { |klass| klass.send(:include, DRbUndumped) }
|
19
|
+
|
20
|
+
class WebClient
|
21
|
+
def page
|
22
|
+
@page = getCurrentWindow.getEnclosedPage
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class HtmlPage
|
27
|
+
def find(selector)
|
28
|
+
@present_nodes = getByXPath(selector).to_a
|
29
|
+
(@nodes ||= []).push(*@present_nodes)
|
30
|
+
@present_nodes
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class HtmlSubmitInput
|
35
|
+
def click
|
36
|
+
super
|
37
|
+
rescue => e
|
38
|
+
puts e
|
39
|
+
puts e.backtrace.join("\n")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module Akephalos
|
44
|
+
class Server
|
45
|
+
def self.start!(socket_file)
|
46
|
+
client = WebClient.new
|
47
|
+
client.setCssErrorHandler(com.gargoylesoftware.htmlunit.SilentCssErrorHandler.new)
|
48
|
+
DRb.start_service("drbunix://#{socket_file}", client)
|
49
|
+
DRb.thread.join
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Capybara::Session do
|
4
|
+
context 'with akephalos driver' do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@session = Capybara::Session.new(:akephalos, TestApp)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#driver' do
|
11
|
+
it "should be a headless driver" do
|
12
|
+
@session.driver.should be_an_instance_of(Capybara::Driver::Akephalos)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#mode' do
|
17
|
+
it "should remember the mode" do
|
18
|
+
@session.mode.should == :akephalos
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it_should_behave_like "session"
|
23
|
+
it_should_behave_like "session with javascript support"
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'akephalos'
|
3
|
+
|
4
|
+
spec_dir = nil
|
5
|
+
$:.detect do |dir|
|
6
|
+
if File.exists? File.join(dir, "capybara.rb")
|
7
|
+
spec_dir = File.expand_path(File.join(dir,"..","spec"))
|
8
|
+
$:.unshift( spec_dir )
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
require File.join(spec_dir,"spec_helper")
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/src/sac-1.3.jar
ADDED
Binary file
|
Binary file
|
data/src/xalan-2.7.1.jar
ADDED
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: akephalos
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Bernerd Schaefer
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-05-05 00:00:00 -05:00
|
18
|
+
default_executable: akephalos
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: capybara
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 3
|
30
|
+
- 7
|
31
|
+
version: 0.3.7
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: sinatra
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :development
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 1
|
55
|
+
- 3
|
56
|
+
- 0
|
57
|
+
version: 1.3.0
|
58
|
+
type: :development
|
59
|
+
version_requirements: *id003
|
60
|
+
description: ""
|
61
|
+
email: bj.schaefer@gmail.com
|
62
|
+
executables:
|
63
|
+
- akephalos
|
64
|
+
extensions: []
|
65
|
+
|
66
|
+
extra_rdoc_files: []
|
67
|
+
|
68
|
+
files:
|
69
|
+
- .gitignore
|
70
|
+
- Rakefile
|
71
|
+
- VERSION
|
72
|
+
- akephalos.gemspec
|
73
|
+
- bin/akephalos
|
74
|
+
- lib/akephalos.rb
|
75
|
+
- lib/akephalos/capybara.rb
|
76
|
+
- lib/akephalos/cucumber.rb
|
77
|
+
- lib/akephalos/htmlunit.rb
|
78
|
+
- lib/akephalos/htmlunit/html_element.rb
|
79
|
+
- lib/akephalos/htmlunit/html_page.rb
|
80
|
+
- lib/akephalos/htmlunit/html_select.rb
|
81
|
+
- lib/akephalos/htmlunit/web_client.rb
|
82
|
+
- lib/akephalos/server.rb
|
83
|
+
- spec/driver/akephalos_driver_spec.rb
|
84
|
+
- spec/session/akephalos_session_spec.rb
|
85
|
+
- spec/spec.opts
|
86
|
+
- spec/spec_helper.rb
|
87
|
+
- src/commons-codec-1.4.jar
|
88
|
+
- src/commons-collections-3.2.1.jar
|
89
|
+
- src/commons-httpclient-3.1.jar
|
90
|
+
- src/commons-io-1.4.jar
|
91
|
+
- src/commons-lang-2.4.jar
|
92
|
+
- src/commons-logging-1.1.1.jar
|
93
|
+
- src/cssparser-0.9.5.jar
|
94
|
+
- src/htmlunit-2.6.jar
|
95
|
+
- src/htmlunit-core-js-2.6.jar
|
96
|
+
- src/jruby-complete-1.4.0.jar
|
97
|
+
- src/nekohtml-1.9.13.jar
|
98
|
+
- src/sac-1.3.jar
|
99
|
+
- src/serializer-2.7.1.jar
|
100
|
+
- src/xalan-2.7.1.jar
|
101
|
+
- src/xercesImpl-2.9.1.jar
|
102
|
+
- src/xml-apis-1.3.04.jar
|
103
|
+
has_rdoc: true
|
104
|
+
homepage: http://github.com/bernerdschaefer/akephalos
|
105
|
+
licenses: []
|
106
|
+
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options:
|
109
|
+
- --charset=UTF-8
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
version: "0"
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
version: "0"
|
126
|
+
requirements: []
|
127
|
+
|
128
|
+
rubyforge_project:
|
129
|
+
rubygems_version: 1.3.6
|
130
|
+
signing_key:
|
131
|
+
specification_version: 3
|
132
|
+
summary: ""
|
133
|
+
test_files:
|
134
|
+
- spec/driver/akephalos_driver_spec.rb
|
135
|
+
- spec/session/akephalos_session_spec.rb
|
136
|
+
- spec/spec_helper.rb
|