kappa-maki 0.0.2
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.
- checksums.yaml +7 -0
- data/lib/kappa-maki.rb +80 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1a3ce22d3ef8e5072b53567abe382e6cb770199a
|
4
|
+
data.tar.gz: ad838f6ce317d6f98bc6c45e225fbc59c4b336ab
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 76b0ddbb53c3dfe6a3b5b5af2adec537e9ef193bea191a7b9eec6d06d5e89d9c64042dcf1249ea826f8d77d44ff3e324df9d4b0ac1cbe491b8dad958eed8cdd4
|
7
|
+
data.tar.gz: 7e6f6a8c8193c7a5f5694dc3f10f587063e13ce04b7370642a88fb161c2cca661b92876bbb7f6ac81e693b32e8abea751aacc1b7c6fd4f6bcf79338625ca889d
|
data/lib/kappa-maki.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Features
|
5
|
+
# This is the module where users will add their features.
|
6
|
+
end
|
7
|
+
|
8
|
+
class FeatureSteps
|
9
|
+
include RSpec::Matchers
|
10
|
+
def self.namespace
|
11
|
+
self.name.split('::').last
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.underscore_step_name(step_string)
|
15
|
+
step_string.gsub(/[^a-zA-Z0-9!?]/, '_').downcase.to_sym
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.camelize_feature_name(feature_name)
|
19
|
+
feature_name.gsub(/[^a-zA-Z0-9!?]/, '')
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.namespace_step(step_string)
|
23
|
+
"[#{self.namespace}] #{step_string}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.step(step_string, &block)
|
27
|
+
if step_string.class == Regexp
|
28
|
+
raise "Feature-scoped step definitions do not allow regular expressions. Use simple strings instead."
|
29
|
+
end
|
30
|
+
|
31
|
+
method_name = self.underscore_step_name(step_string)
|
32
|
+
|
33
|
+
if method_name.length < 3
|
34
|
+
raise "Step definition must be at least 3 characters long. Step: '#{step_string}'"
|
35
|
+
end
|
36
|
+
|
37
|
+
define_method(method_name, &block)
|
38
|
+
|
39
|
+
namespaced_step = self.namespace_step(step_string)
|
40
|
+
|
41
|
+
feature_class = self
|
42
|
+
|
43
|
+
delegate_block = Proc.new do
|
44
|
+
@instance ||= feature_class.new
|
45
|
+
@instance.send method_name
|
46
|
+
end
|
47
|
+
|
48
|
+
Cucumber::RbSupport::RbDsl.register_rb_step_definition(namespaced_step, delegate_block)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
module SupportCode_NamespacedSteps
|
54
|
+
def find_match(test_step)
|
55
|
+
feature_name = test_step.source.first.short_name
|
56
|
+
|
57
|
+
feature_namespace = Cucumber::FeatureSteps.camelize_feature_name(feature_name)
|
58
|
+
underscored_step = Cucumber::FeatureSteps.underscore_step_name(test_step.name)
|
59
|
+
|
60
|
+
# Instantiate the feature steps class for the duration of the scenario, if not already.
|
61
|
+
# Instance variables will be scoped therein, and only usable for the life of the scenario.
|
62
|
+
feature_class = Cucumber::Features.const_get(feature_namespace)
|
63
|
+
@feature ||= feature_class.new
|
64
|
+
|
65
|
+
begin
|
66
|
+
# Local (namespaced) step definitions override global ones, if both are defined.
|
67
|
+
step_match(feature_class.namespace_step(test_step.name))
|
68
|
+
rescue Cucumber::Undefined
|
69
|
+
super
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
module Cucumber
|
75
|
+
class Runtime
|
76
|
+
class SupportCode
|
77
|
+
prepend SupportCode_NamespacedSteps
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kappa-maki
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Allan Tokuda
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cucumber-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.1'
|
41
|
+
description: Provide Cucumber users the ability to create locally scoped step definitions
|
42
|
+
and methods such that they are only usable from within one feature. In the style
|
43
|
+
of Spinach.
|
44
|
+
email: praetis@gmail.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- lib/kappa-maki.rb
|
50
|
+
homepage: http://rubygems.org/gems/kappa-maki
|
51
|
+
licenses:
|
52
|
+
- MIT
|
53
|
+
metadata: {}
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
requirements: []
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 2.2.2
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: Kappa Maki
|
74
|
+
test_files: []
|