akephalos 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ pkg
2
+ tags
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,10 @@
1
+ require 'capybara'
2
+
3
+ module Akephalos
4
+ end
5
+
6
+ require 'akephalos/capybara'
7
+
8
+ if Object.const_defined? :Cucumber
9
+ require 'akephalos/cucumber'
10
+ end
@@ -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,6 @@
1
+ require 'capybara/cucumber'
2
+
3
+ Before('@akephalos') do
4
+ Capybara.current_driver = :akephalos
5
+ end
6
+
@@ -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,11 @@
1
+ module Akephalos
2
+ module Htmlunit
3
+ module HtmlElement
4
+ def [](name)
5
+ hasAttribute(name.to_s) ? getAttribute(name.to_s) : nil
6
+ end
7
+
8
+ com.gargoylesoftware.htmlunit.html.HtmlElement.send(:include, self)
9
+ end
10
+ end
11
+ end
@@ -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,16 @@
1
+ module Akephalos
2
+ module Htmlunit
3
+ module WebClient
4
+
5
+ def visit(url)
6
+ getPage(url)
7
+ end
8
+
9
+ def page
10
+ getCurrentWindow.getEnclosedPage
11
+ end
12
+
13
+ com.gargoylesoftware.htmlunit.WebClient.send(:include, self)
14
+ end
15
+ end
16
+ 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,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Capybara::Driver::Akephalos do
4
+
5
+ before do
6
+ @driver = Capybara::Driver::Akephalos.new(TestApp)
7
+ end
8
+
9
+ it_should_behave_like "driver"
10
+ it_should_behave_like "driver with javascript support"
11
+
12
+ 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
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format nested
@@ -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
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