kappa-maki 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/kappa-maki.rb +80 -0
  3. metadata +74 -0
@@ -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
@@ -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: []