producer-core 0.3.9 → 0.3.10

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.
@@ -1,15 +1,29 @@
1
1
  Feature: `compose_macro' recipe keyword
2
2
 
3
- Scenario: allows macro composition
4
- Given a recipe with:
3
+ Background:
4
+ Given a recipe named "composed_macro.rb" with:
5
5
  """
6
6
  macro :hello do |prefix, *args|
7
7
  echo 'hello %s %s' % [prefix, args.join(', ')]
8
8
  end
9
9
 
10
10
  compose_macro :hello_composed, :hello, 'composed'
11
+ """
11
12
 
13
+ Scenario: declares a composed macro as recipe keyword
14
+ Given a recipe with:
15
+ """
16
+ source 'composed_macro'
12
17
  hello_composed :foo, :bar
13
18
  """
14
19
  When I successfully execute the recipe
15
20
  Then the output must contain "hello composed foo, bar"
21
+
22
+ Scenario: declares a composed macro as task keyword
23
+ Given a recipe with:
24
+ """
25
+ source 'composed_macro'
26
+ task(:some_task) { hello_composed :foo, :bar }
27
+ """
28
+ When I successfully execute the recipe
29
+ Then the output must contain "hello composed foo, bar"
@@ -2,6 +2,10 @@ Given /^a recipe with:$/ do |recipe_body|
2
2
  write_file 'recipe.rb', recipe_body
3
3
  end
4
4
 
5
+ Given /^a recipe named "([^"]+)" with:$/ do |recipe_path, recipe_body|
6
+ write_file recipe_path, recipe_body
7
+ end
8
+
5
9
  When /^I execute the recipe$/ do
6
10
  run_simple 'producer recipe.rb', false
7
11
  end
@@ -11,7 +11,11 @@ module Producer
11
11
  end
12
12
 
13
13
  def compose_macro(name, macro, *base_args)
14
- define_method(name) { |*args| send macro, *(base_args + args) }
14
+ [self, Task].each do |klass|
15
+ klass.class_eval do
16
+ define_method(name) { |*args| send macro, *(base_args + args) }
17
+ end
18
+ end
15
19
  end
16
20
  end
17
21
 
@@ -31,7 +35,7 @@ module Producer
31
35
  end
32
36
 
33
37
  def task(name, *args, &block)
34
- @tasks << Task.evaluate(env, name, *args, &block)
38
+ Task.evaluate(env, name, *args, &block).tap { |o| @tasks << o }
35
39
  end
36
40
 
37
41
  def macro(name, &block)
@@ -1,5 +1,5 @@
1
1
  module Producer
2
2
  module Core
3
- VERSION = '0.3.9'.freeze
3
+ VERSION = '0.3.10'.freeze
4
4
  end
5
5
  end
@@ -52,6 +52,10 @@ module Producer::Core
52
52
  expect { recipe.task(:some_task) { :some_task_code } }
53
53
  .to change { recipe.tasks.count }.by 1
54
54
  end
55
+
56
+ it 'returns the task' do
57
+ expect(recipe.task(:some_task) { }).to be_a Task
58
+ end
55
59
  end
56
60
 
57
61
  describe '#macro' do
@@ -83,6 +87,21 @@ module Producer::Core
83
87
  end
84
88
  end
85
89
 
90
+ describe '#compose_macro' do
91
+ before do
92
+ recipe.macro(:hello) { }
93
+ recipe.compose_macro :hello_composed, :some_arg
94
+ end
95
+
96
+ it 'defines the new recipe keyword' do
97
+ expect(recipe).to respond_to(:hello_composed)
98
+ end
99
+
100
+ it 'defines the new task keyword' do
101
+ expect(recipe.task(:some_task) { }).to respond_to(:hello_composed)
102
+ end
103
+ end
104
+
86
105
  describe '#test_macro' do
87
106
  it 'defines the new test' do
88
107
  recipe.test_macro(:some_test) { }
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: producer-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Thibault Jouan
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-28 00:00:00.000000000 Z
12
+ date: 2014-10-02 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: net-ssh
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - "~>"
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: net-sftp
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - "~>"
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - "~>"
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - "~>"
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: cucumber
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - "~>"
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - "~>"
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: aruba
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - "~>"
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - "~>"
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: cucumber-sshd
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - "~>"
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - "~>"
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: rake
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - "~>"
109
124
  - !ruby/object:Gem::Version
@@ -242,26 +257,27 @@ files:
242
257
  - spec/support/test_env_helpers.rb
243
258
  homepage: https://rubygems.org/gems/producer-core
244
259
  licenses: []
245
- metadata: {}
246
260
  post_install_message:
247
261
  rdoc_options: []
248
262
  require_paths:
249
263
  - lib
250
264
  required_ruby_version: !ruby/object:Gem::Requirement
265
+ none: false
251
266
  requirements:
252
267
  - - ">="
253
268
  - !ruby/object:Gem::Version
254
269
  version: '0'
255
270
  required_rubygems_version: !ruby/object:Gem::Requirement
271
+ none: false
256
272
  requirements:
257
273
  - - ">="
258
274
  - !ruby/object:Gem::Version
259
275
  version: '0'
260
276
  requirements: []
261
277
  rubyforge_project:
262
- rubygems_version: 2.2.2
278
+ rubygems_version: 1.8.29
263
279
  signing_key:
264
- specification_version: 4
280
+ specification_version: 3
265
281
  summary: Provisioning tool
266
282
  test_files:
267
283
  - features/action_echo.feature
@@ -347,4 +363,3 @@ test_files:
347
363
  - spec/support/shared_action.rb
348
364
  - spec/support/shared_test.rb
349
365
  - spec/support/test_env_helpers.rb
350
- has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: fba0f36e7a80a2897a17831da23ae1e9a7510ab3
4
- data.tar.gz: 53ec1accae1569022521804498ea3eb379e6d6d8
5
- SHA512:
6
- metadata.gz: 024a23110ed45ca7ed46d78a4ca77e403de5283482aedc549b34f63b3aa14ab38d70f9defbab90e8b8ed935e28e1a116a0307cfc35d4b577dee77934a2364a3a
7
- data.tar.gz: 8a5c854adfa2ae0d8bec10abe38995d9aaf7ce312013081a7b4b226c0a58519419457f33be3cd52142864e0be0317fc1e0527f09881a73308cd843a81b5fbd89