test-harness 0.4.7 → 0.4.9
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/.watchr +94 -0
- data/README.markdown +7 -3
- data/VERSION +1 -1
- data/lib/configuration.rb +4 -4
- data/lib/given.rb +13 -6
- data/lib/mental_model.rb +2 -0
- data/lib/test_harness.rb +17 -9
- data/lib/test_helper.rb +7 -1
- data/lib/ui_component_helper.rb +17 -0
- data/lib/ui_driver.rb +0 -1
- data/lib/ui_helper.rb +9 -6
- data/lib/ui_view.rb +0 -1
- data/lib/utilities.rb +21 -0
- data/spec/fake_harness/given/given_test.rb +9 -0
- data/spec/fake_harness/ui/ui_test.rb +15 -0
- data/spec/lib/given_spec.rb +10 -0
- data/spec/lib/test_harness_spec.rb +22 -0
- data/spec/lib/test_helper_spec.rb +22 -0
- data/spec/lib/ui_component_helper_spec.rb +16 -0
- data/spec/lib/utilities_spec.rb +18 -0
- data/spec/spec_helper.rb +5 -0
- data/test-harness.gemspec +11 -3
- metadata +101 -95
- data/spec/test_harness_spec.rb +0 -7
data/.watchr
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
puts "Run with: watchr #{__FILE__}. \n\nRequired gems: watchr rev"
|
3
|
+
exit 1
|
4
|
+
end
|
5
|
+
|
6
|
+
# --------------------------------------------------
|
7
|
+
# Convenience Methods
|
8
|
+
# --------------------------------------------------
|
9
|
+
def run(cmd)
|
10
|
+
sleep(2)
|
11
|
+
puts("%s %s [%s]" % ["|\n" * 5 , cmd , Time.now.to_s])
|
12
|
+
$last_test = cmd
|
13
|
+
system(cmd)
|
14
|
+
end
|
15
|
+
|
16
|
+
def run_all_specs
|
17
|
+
run "bundle exec rake -s spec SPEC_OPTS='--order rand'"
|
18
|
+
end
|
19
|
+
|
20
|
+
def run_last_test
|
21
|
+
run($last_test)
|
22
|
+
end
|
23
|
+
|
24
|
+
def run_single_spec *spec
|
25
|
+
spec = spec.join(' ')
|
26
|
+
run "bundle exec rspec #{spec} --order rand"
|
27
|
+
end
|
28
|
+
|
29
|
+
def run_specs_with_shared_examples(shared_example_filename, spec_path = 'spec')
|
30
|
+
|
31
|
+
# Returns the names of the shared examples in filename
|
32
|
+
def shared_examples(filename)
|
33
|
+
lines = File.readlines(filename)
|
34
|
+
lines.grep(/shared_examples_for[\s'"]+(.+)['"]\s*[do|\{]/) do |matching_line|
|
35
|
+
$1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns array with filenames of the specs using shared_example
|
40
|
+
def specs_with_shared_example(shared_example, path)
|
41
|
+
command = "grep -lrE 'it_should_behave_like .(#{shared_example}).' #{path}"
|
42
|
+
`#{command}`.split
|
43
|
+
end
|
44
|
+
|
45
|
+
shared_examples(shared_example_filename).each do |shared_example|
|
46
|
+
specs_to_run = specs_with_shared_example(shared_example, spec_path)
|
47
|
+
run_single_spec(specs_to_run) unless specs_to_run.empty?
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def run_cucumber_scenario scenario_path
|
53
|
+
if scenario_path !~ /.*\.feature$/
|
54
|
+
scenario_path = $last_scenario
|
55
|
+
end
|
56
|
+
$last_scenario = scenario_path
|
57
|
+
run "bundle exec cucumber #{scenario_path} --tags @dev"
|
58
|
+
end
|
59
|
+
|
60
|
+
# --------------------------------------------------
|
61
|
+
# Watchr Rules
|
62
|
+
# --------------------------------------------------
|
63
|
+
watch( '^spec/spec_helper\.rb' ) { run_all_specs }
|
64
|
+
watch( '^spec/shared_behaviors/.*\.rb' ) { |m| run_specs_with_shared_examples(m[0]) }
|
65
|
+
watch( '^spec/.*_spec\.rb' ) { |m| run_single_spec(m[0]) }
|
66
|
+
watch( '^app/lib/.*' ) { |m| run_last_test }
|
67
|
+
watch( '^spec/factories.*' ) { |m| run_last_test }
|
68
|
+
watch( '^test_harness/.*' ) { |m| run_last_test }
|
69
|
+
watch( '^app/(.*)\.rb' ) { |m| run_single_spec("spec/%s_spec.rb" % m[1]) }
|
70
|
+
watch( '^app/views/(.*)\.haml' ) { |m| run_single_spec("spec/views/%s.haml_spec.rb" % m[1]) }
|
71
|
+
watch( '^lib/(.*)\.rb' ) { |m| run_single_spec("spec/other/%s_spec.rb" % m[1] ) }
|
72
|
+
watch( '^features/*/.*' ) { |m| run_cucumber_scenario(m[0]) }
|
73
|
+
watch( '^test_harness/*/.*' ) { |m| run_cucumber_scenario(m[0]) }
|
74
|
+
|
75
|
+
|
76
|
+
# --------------------------------------------------
|
77
|
+
# Signal Handling
|
78
|
+
# --------------------------------------------------
|
79
|
+
# Ctrl-\
|
80
|
+
Signal.trap('QUIT') do
|
81
|
+
puts " --- Running all tests ---\n\n"
|
82
|
+
run_all_specs
|
83
|
+
end
|
84
|
+
|
85
|
+
# Ctrl-T
|
86
|
+
Signal.trap('TSTP') do
|
87
|
+
puts " --- Running last test --\n\n"
|
88
|
+
run_cucumber_scenario nil
|
89
|
+
end
|
90
|
+
|
91
|
+
# Ctrl-C
|
92
|
+
Signal.trap('INT') { abort("\n") }
|
93
|
+
|
94
|
+
puts "Watching.."
|
data/README.markdown
CHANGED
@@ -13,7 +13,7 @@ Or add to your Gemfile:
|
|
13
13
|
end
|
14
14
|
|
15
15
|
## Structure
|
16
|
-
|
16
|
+
/
|
17
17
|
test_harness/
|
18
18
|
/given
|
19
19
|
/ui
|
@@ -157,13 +157,17 @@ In the **feature/support/setup_test_harness.rb**
|
|
157
157
|
require 'test_harness'
|
158
158
|
require 'spec/factories' # if you use factories
|
159
159
|
|
160
|
-
**
|
160
|
+
**autoload_path**: Allows you to set the path where test_harness files are found. Putting them in the
|
161
161
|
Rails.root/app folder proves problematic as they get autoloaded in production. However, depending on how
|
162
|
-
you setup you Gemfile, the test-harness gem might be excluded, and the server will fail to load.
|
162
|
+
you setup you Gemfile, the test-harness gem might be excluded, and the server will fail to load. Defaults to 'test_harness'.
|
163
|
+
|
164
|
+
**namespace**: Sets the class namespace for your test_harness files. Specify
|
165
|
+
this as a string, not a constant. Defaults to 'TestHarness'.
|
163
166
|
|
164
167
|
TestHarness.configure do |c|
|
165
168
|
c.browser = Capybara
|
166
169
|
c.autoload_path = Rails.root.join('test_harness')
|
170
|
+
c.namespace = 'MyHarness'
|
167
171
|
end
|
168
172
|
|
169
173
|
World(TestHarness::TestHelper)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.9
|
data/lib/configuration.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
class TestHarness
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :browser, :server_host, :autoload_path
|
3
|
+
attr_accessor :browser, :server_host, :autoload_path, :namespace
|
4
4
|
|
5
5
|
def setup_cucumber_hooks(scope)
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
scope.Before do
|
7
|
+
TestHarness.reset
|
8
|
+
end
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/given.rb
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
class TestHarness
|
3
3
|
class Given
|
4
|
-
|
4
|
+
def mm
|
5
|
+
TestHarness.mm
|
6
|
+
end
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
def self.autoload
|
9
|
+
Dir.glob(File.join(TestHarness.autoload_path, 'given/*.rb')).each do |file|
|
10
|
+
component = File.basename(file, '.rb')
|
11
|
+
require File.join(TestHarness.autoload_path, 'given', component)
|
12
|
+
klass = TestHarness::Utilities.constantize("%s::Given::%s" % [
|
13
|
+
TestHarness.namespace,
|
14
|
+
TestHarness::Utilities.camelize(File.basename(file, '.rb'))
|
15
|
+
])
|
16
|
+
include klass
|
17
|
+
end
|
11
18
|
end
|
12
19
|
end
|
13
20
|
end
|
data/lib/mental_model.rb
CHANGED
data/lib/test_harness.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
require 'configuration'
|
2
|
+
require 'utilities'
|
2
3
|
|
3
4
|
class TestHarness
|
4
5
|
class << self
|
5
6
|
def configuration
|
6
|
-
@
|
7
|
+
@configuration ||= Configuration.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def autoload
|
11
|
+
TestHarness::Given.autoload
|
12
|
+
TestHarness::UIView.autoload
|
13
|
+
TestHarness::UIDriver.autoload
|
7
14
|
end
|
8
15
|
|
9
16
|
def configure(&block)
|
@@ -35,18 +42,19 @@ class TestHarness
|
|
35
42
|
@path ||= configuration.autoload_path || 'test_harness'
|
36
43
|
end
|
37
44
|
|
45
|
+
def namespace
|
46
|
+
@namespace ||= configuration.namespace || 'TestHarness'
|
47
|
+
end
|
48
|
+
|
38
49
|
def registered_components
|
39
50
|
@components ||= []
|
40
51
|
end
|
41
52
|
|
42
|
-
def register_instance_option(scope, option_name,
|
43
|
-
registered_components
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
else
|
48
|
-
instance_variable_get("@#{option_name}_registered") || default_value || yield
|
49
|
-
end
|
53
|
+
def register_instance_option(scope, option_name, instance)
|
54
|
+
return if registered_components.any? { |c| c.is_a? instance.class }
|
55
|
+
registered_components << instance
|
56
|
+
scope.send(:define_method, option_name) do
|
57
|
+
instance
|
50
58
|
end
|
51
59
|
end
|
52
60
|
end
|
data/lib/test_helper.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
class TestHarness
|
2
2
|
module TestHelper
|
3
|
-
|
3
|
+
def method_missing(method, *args)
|
4
|
+
if [:configuration, :given, :uiv, :uid, :mm, :to].include?(method)
|
5
|
+
TestHarness.send(method)
|
6
|
+
else
|
7
|
+
super
|
8
|
+
end
|
9
|
+
end
|
4
10
|
|
5
11
|
def browser
|
6
12
|
configuration.browser
|
data/lib/ui_component_helper.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
+
class MissingConfiguration < Exception; end
|
2
|
+
|
1
3
|
class TestHarness
|
2
4
|
module UIComponentHelper
|
5
|
+
def mm
|
6
|
+
TestHarness.mm
|
7
|
+
end
|
8
|
+
|
3
9
|
def component
|
4
10
|
self.class.parent.component
|
5
11
|
end
|
@@ -8,6 +14,17 @@ class TestHarness
|
|
8
14
|
@form = nil
|
9
15
|
end
|
10
16
|
|
17
|
+
def configuration
|
18
|
+
TestHarness.configuration
|
19
|
+
end
|
20
|
+
|
21
|
+
def browser
|
22
|
+
@browser ||= begin
|
23
|
+
raise MissingConfiguration.new('TestHarness.browser must be defined') if configuration.browser.nil?
|
24
|
+
configuration.browser
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
11
28
|
# If the UIComponent is sent a message it does not understand, it will
|
12
29
|
# forward that message on to its {#browser} but wrap the call in a block
|
13
30
|
# provided to the the browser's `#within` method. This provides convenient
|
data/lib/ui_driver.rb
CHANGED
data/lib/ui_helper.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
class TestHarness
|
2
2
|
class UIHelper
|
3
|
-
def self.
|
4
|
-
Dir.glob(
|
3
|
+
def self.autoload
|
4
|
+
Dir.glob(File.join(TestHarness.autoload_path, 'ui/*.rb')).each do |file|
|
5
5
|
component = File.basename(file, '.rb')
|
6
|
-
require
|
7
|
-
klass = ("
|
6
|
+
require File.join(TestHarness.autoload_path, 'ui', component)
|
7
|
+
klass = TestHarness::Utilities.constantize("%s::%s::%s" % [
|
8
|
+
TestHarness.namespace,
|
9
|
+
TestHarness::Utilities.camelize(component),
|
10
|
+
self.name.split('::').last
|
11
|
+
])
|
8
12
|
TestHarness.register_instance_option(self, component, klass.new)
|
9
13
|
klass.send(:include, TestHarness::UIComponentHelper)
|
10
|
-
klass.send(:include, TestHarness::TestHelper)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
14
|
-
end
|
17
|
+
end
|
data/lib/ui_view.rb
CHANGED
data/lib/utilities.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
class TestHarness
|
2
|
+
module Utilities
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def camelize(string)
|
6
|
+
string = string.sub(/^[a-z\d]*/) { $&.capitalize }
|
7
|
+
string = string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub('/', '::')
|
8
|
+
end
|
9
|
+
|
10
|
+
def constantize(camel_cased_word)
|
11
|
+
names = camel_cased_word.split('::')
|
12
|
+
names.shift if names.empty? || names.first.empty?
|
13
|
+
|
14
|
+
constant = Object
|
15
|
+
names.each do |name|
|
16
|
+
constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
17
|
+
end
|
18
|
+
constant
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe TestHarness::Given do
|
4
|
+
describe "#mm" do
|
5
|
+
it "delegates to TestHarness" do
|
6
|
+
TestHarness.should_receive(:mm).and_return('no_rainforests_in_iowa')
|
7
|
+
TestHarness::Given.new.mm.should == 'no_rainforests_in_iowa'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe TestHarness do
|
4
|
+
describe ".autoload" do
|
5
|
+
it "delegates autoload to all three concerns" do
|
6
|
+
TestHarness::UIView.should_receive(:autoload)
|
7
|
+
TestHarness::UIDriver.should_receive(:autoload)
|
8
|
+
TestHarness::Given.should_receive(:autoload)
|
9
|
+
|
10
|
+
TestHarness.autoload
|
11
|
+
end
|
12
|
+
|
13
|
+
it "actually loads all givens and registers all UI components" do
|
14
|
+
TestHarness.autoload
|
15
|
+
|
16
|
+
defined?(FakeHarness::Given::GivenTest).should be_true
|
17
|
+
[FakeHarness::UiTest::UIView, FakeHarness::UiTest::UIDriver].each do |kl|
|
18
|
+
TestHarness.registered_components.map(&:class).should include(kl)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class TestHelperWrapper
|
4
|
+
extend TestHarness::TestHelper
|
5
|
+
end
|
6
|
+
|
7
|
+
describe TestHarness::TestHelper do
|
8
|
+
[:configuration, :given, :uiv, :uid, :mm, :to].each do |method|
|
9
|
+
it "delegates #{method} to TestHarness" do
|
10
|
+
TestHarness.should_receive(method).and_return('sleepy_monkeys')
|
11
|
+
TestHelperWrapper.send(method).should == 'sleepy_monkeys'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "adds methods to access given & ui components" do
|
16
|
+
TestHarness.autoload
|
17
|
+
TestHelperWrapper.given.a_boring_test.should ==
|
18
|
+
:a_fancy_and_inspiring_result
|
19
|
+
TestHelperWrapper.uiv.ui_test.lookies.should == :lovely_landscapes
|
20
|
+
TestHelperWrapper.uid.ui_test.dainty_gloves.should == :handy_holders
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "UIComponentHelper" do
|
4
|
+
describe "#browser" do
|
5
|
+
it "raises error for missing browser" do
|
6
|
+
TestHarness.autoload
|
7
|
+
expect {FakeHarness::UiTest::UIView.new.browser}.to raise_error(MissingConfiguration, 'TestHarness.browser must be defined')
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'returns browser defined in TestHarness.configuration' do
|
11
|
+
TestHarness.configuration.browser = :whatever
|
12
|
+
TestHarness.autoload
|
13
|
+
FakeHarness::UiTest::UIView.new.browser.should == :whatever
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'utilities'
|
3
|
+
|
4
|
+
describe TestHarness::Utilities do
|
5
|
+
describe ".camelize" do
|
6
|
+
it "camelizes underscored word" do
|
7
|
+
TestHarness::Utilities.camelize('furby_catchment_vice').should ==
|
8
|
+
'FurbyCatchmentVice'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".constantize" do
|
13
|
+
it "constantizes camel-cased word" do
|
14
|
+
TestHarness::Utilities.constantize('TestHarness::Utilities').should ==
|
15
|
+
TestHarness::Utilities
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,6 +7,11 @@ require 'test_harness'
|
|
7
7
|
# in ./support/ and its subdirectories.
|
8
8
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
9
|
|
10
|
+
TestHarness.configure do |c|
|
11
|
+
c.namespace = 'FakeHarness'
|
12
|
+
c.autoload_path = File.expand_path('../fake_harness', __FILE__)
|
13
|
+
end
|
14
|
+
|
10
15
|
RSpec.configure do |config|
|
11
16
|
|
12
17
|
end
|
data/test-harness.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "test-harness"
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Maher Hawash"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-01-19"
|
13
13
|
s.description = "A test harness for rspec and cucumber which allows for separating responsibility between setting up the context and interacting with the browser, and cleaning up the step definition files."
|
14
14
|
s.email = "gmhawash@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
|
+
".watchr",
|
22
23
|
"Gemfile",
|
23
24
|
"Gemfile.lock",
|
24
25
|
"LICENSE.txt",
|
@@ -35,8 +36,15 @@ Gem::Specification.new do |s|
|
|
35
36
|
"lib/ui_driver.rb",
|
36
37
|
"lib/ui_helper.rb",
|
37
38
|
"lib/ui_view.rb",
|
39
|
+
"lib/utilities.rb",
|
40
|
+
"spec/fake_harness/given/given_test.rb",
|
41
|
+
"spec/fake_harness/ui/ui_test.rb",
|
42
|
+
"spec/lib/given_spec.rb",
|
43
|
+
"spec/lib/test_harness_spec.rb",
|
44
|
+
"spec/lib/test_helper_spec.rb",
|
45
|
+
"spec/lib/ui_component_helper_spec.rb",
|
46
|
+
"spec/lib/utilities_spec.rb",
|
38
47
|
"spec/spec_helper.rb",
|
39
|
-
"spec/test_harness_spec.rb",
|
40
48
|
"test-harness.gemspec"
|
41
49
|
]
|
42
50
|
s.homepage = "http://github.com/gmhawash/test_harness"
|
metadata
CHANGED
@@ -1,104 +1,109 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-harness
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.9
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 7
|
10
|
-
version: 0.4.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Maher Hawash
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
-
none: false
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 3
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
version: "0"
|
30
|
-
prerelease: false
|
31
|
-
type: :development
|
12
|
+
date: 2013-01-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
32
15
|
name: rspec
|
33
|
-
requirement:
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
36
17
|
none: false
|
37
|
-
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
|
41
|
-
segments:
|
42
|
-
- 0
|
43
|
-
version: "0"
|
44
|
-
prerelease: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
45
22
|
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
46
31
|
name: rdoc
|
47
|
-
requirement:
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
50
33
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
segments:
|
56
|
-
- 0
|
57
|
-
version: "0"
|
58
|
-
prerelease: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
59
38
|
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
60
47
|
name: bundler
|
61
|
-
requirement:
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
64
49
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
|
69
|
-
segments:
|
70
|
-
- 0
|
71
|
-
version: "0"
|
72
|
-
prerelease: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
73
54
|
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
74
63
|
name: jeweler
|
75
|
-
requirement:
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
78
65
|
none: false
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
83
|
-
segments:
|
84
|
-
- 0
|
85
|
-
version: "0"
|
86
|
-
prerelease: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
87
70
|
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
88
79
|
name: gemcutter
|
89
|
-
requirement:
|
90
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: A test harness for rspec and cucumber which allows for separating responsibility
|
95
|
+
between setting up the context and interacting with the browser, and cleaning up
|
96
|
+
the step definition files.
|
91
97
|
email: gmhawash@gmail.com
|
92
98
|
executables: []
|
93
|
-
|
94
99
|
extensions: []
|
95
|
-
|
96
|
-
extra_rdoc_files:
|
100
|
+
extra_rdoc_files:
|
97
101
|
- LICENSE.txt
|
98
102
|
- README.markdown
|
99
|
-
files:
|
103
|
+
files:
|
100
104
|
- .document
|
101
105
|
- .rspec
|
106
|
+
- .watchr
|
102
107
|
- Gemfile
|
103
108
|
- Gemfile.lock
|
104
109
|
- LICENSE.txt
|
@@ -115,41 +120,42 @@ files:
|
|
115
120
|
- lib/ui_driver.rb
|
116
121
|
- lib/ui_helper.rb
|
117
122
|
- lib/ui_view.rb
|
123
|
+
- lib/utilities.rb
|
124
|
+
- spec/fake_harness/given/given_test.rb
|
125
|
+
- spec/fake_harness/ui/ui_test.rb
|
126
|
+
- spec/lib/given_spec.rb
|
127
|
+
- spec/lib/test_harness_spec.rb
|
128
|
+
- spec/lib/test_helper_spec.rb
|
129
|
+
- spec/lib/ui_component_helper_spec.rb
|
130
|
+
- spec/lib/utilities_spec.rb
|
118
131
|
- spec/spec_helper.rb
|
119
|
-
- spec/test_harness_spec.rb
|
120
132
|
- test-harness.gemspec
|
121
133
|
homepage: http://github.com/gmhawash/test_harness
|
122
|
-
licenses:
|
134
|
+
licenses:
|
123
135
|
- MIT
|
124
136
|
post_install_message:
|
125
137
|
rdoc_options: []
|
126
|
-
|
127
|
-
require_paths:
|
138
|
+
require_paths:
|
128
139
|
- lib
|
129
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
141
|
none: false
|
131
|
-
requirements:
|
132
|
-
- -
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
|
135
|
-
segments:
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
segments:
|
136
147
|
- 0
|
137
|
-
|
138
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
hash: -1093059498372964529
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
150
|
none: false
|
140
|
-
requirements:
|
141
|
-
- -
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
|
144
|
-
segments:
|
145
|
-
- 0
|
146
|
-
version: "0"
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
147
155
|
requirements: []
|
148
|
-
|
149
156
|
rubyforge_project:
|
150
157
|
rubygems_version: 1.8.24
|
151
158
|
signing_key:
|
152
159
|
specification_version: 3
|
153
160
|
summary: Mini test harness for rspec and cucumber
|
154
161
|
test_files: []
|
155
|
-
|