producer-core 0.3.0 → 0.3.1

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,140 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Producer::Core
4
- class Recipe
5
- describe DSL do
6
- include FixturesHelpers
7
-
8
- let(:code) { proc { :some_recipe_code } }
9
- let(:env) { Env.new }
10
- subject(:dsl) { DSL.new(env, &code) }
11
-
12
- describe '#initialize' do
13
- it 'assigns the given env' do
14
- expect(dsl.env).to be env
15
- end
16
-
17
- it 'assigns no task' do
18
- expect(dsl.tasks).to be_empty
19
- end
20
-
21
- context 'when a string of code is given as argument' do
22
- let(:code) { 'some_code' }
23
- subject(:dsl) { described_class.new(env, code) }
24
-
25
- it 'assigns the string of code' do
26
- expect(dsl.code).to eq code
27
- end
28
- end
29
-
30
- context 'when a code block is given as argument' do
31
- it 'assigns the code block' do
32
- expect(dsl.block).to be code
33
- end
34
- end
35
- end
36
-
37
- describe '#tasks' do
38
- let(:code) { proc { task(:some_task) {} } }
39
-
40
- it 'returns registered tasks' do
41
- dsl.evaluate
42
- expect(dsl.tasks[0].name).to eq :some_task
43
- end
44
- end
45
-
46
- describe '#evaluate' do
47
- it 'evaluates its code' do
48
- dsl = described_class.new(env) { throw :recipe_code }
49
- expect { dsl.evaluate }.to throw_symbol :recipe_code
50
- end
51
-
52
- it 'returns itself' do
53
- expect(dsl.evaluate).to eq dsl
54
- end
55
- end
56
-
57
- describe '#source' do
58
- let(:filepath) { fixture_path_for 'recipes/throw' }
59
-
60
- it 'sources the recipe given as argument' do
61
- expect { dsl.source filepath }.to throw_symbol :recipe_code
62
- end
63
- end
64
-
65
- describe '#target' do
66
- let(:host) { 'some_host.example' }
67
-
68
- context 'when env has no assigned target' do
69
- it 'registers the target host in the env' do
70
- dsl.target host
71
- expect(env.target).to eq host
72
- end
73
- end
74
-
75
- context 'when env has an assigned target' do
76
- before { env.target = 'already_assigned_host.example' }
77
-
78
- it 'does not change env target' do
79
- expect { dsl.target host }.not_to change { env.target }
80
- end
81
- end
82
- end
83
-
84
- describe '#task' do
85
- it 'registers a new evaluated task' do
86
- expect { dsl.task(:some_task) { :some_task_code } }
87
- .to change { dsl.tasks.count }.by 1
88
- end
89
- end
90
-
91
- describe '#macro' do
92
- it 'defines the new recipe keyword' do
93
- dsl.macro :hello
94
- expect(dsl).to respond_to(:hello)
95
- end
96
-
97
- context 'when a defined macro is called' do
98
- before { dsl.macro(:hello) { :some_macro_code } }
99
-
100
- it 'registers the new task' do
101
- expect { dsl.hello }.to change { dsl.tasks.count }.by 1
102
- end
103
- end
104
-
105
- context 'when a defined macro is called with arguments' do
106
- before { dsl.macro(:hello) { |a, b| echo a, b } }
107
-
108
- it 'evaluates task code with arguments' do
109
- dsl.hello :some, :args
110
- expect(dsl.tasks.first.actions.first.arguments).to eq [:some, :args]
111
- end
112
- end
113
- end
114
-
115
- describe '#test_macro' do
116
- it 'defines the new test' do
117
- condition_dsl = double 'condition dsl'
118
- test_block = proc {}
119
- expect(condition_dsl)
120
- .to receive(:define_test).with(:some_test, test_block)
121
- dsl.test_macro(:some_test, dsl: condition_dsl, &test_block)
122
- end
123
- end
124
-
125
- describe '#set' do
126
- it 'registers a key/value pair in env registry' do
127
- dsl.set :some_key, :some_value
128
- expect(env[:some_key]).to eq :some_value
129
- end
130
- end
131
-
132
- describe '#get' do
133
- it 'fetches a value from the registry at given index' do
134
- dsl.set :some_key, :some_value
135
- expect(dsl.get :some_key).to eq :some_value
136
- end
137
- end
138
- end
139
- end
140
- end
@@ -1,123 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Producer::Core
4
- class Task
5
- describe DSL do
6
- let(:block) { proc {} }
7
- let(:env) { Env.new }
8
- subject(:dsl) { DSL.new(env, &block) }
9
-
10
- %w[
11
- echo
12
- sh
13
- mkdir
14
- file_append
15
- file_replace_content
16
- file_write
17
- ].each do |action|
18
- it "has `#{action}' action defined" do
19
- expect(dsl).to respond_to action.to_sym
20
- end
21
- end
22
-
23
- describe '.define_action' do
24
- let(:some_action_class) { Class.new(Action) }
25
-
26
- before { described_class.define_action(:some_action, some_action_class) }
27
-
28
- it 'defines a new action keyword' do
29
- expect(dsl).to respond_to :some_action
30
- end
31
-
32
- context 'when an action keyword is called' do
33
- it 'registers the action' do
34
- expect { dsl.some_action }.to change { dsl.actions.count }.by 1
35
- end
36
-
37
- it 'registers the action with current env' do
38
- dsl.some_action
39
- expect(dsl.actions.first.env).to be env
40
- end
41
-
42
- it 'registers the action with given arguments' do
43
- dsl.some_action :some, :args
44
- expect(dsl.actions.first.arguments).to eq [:some, :args]
45
- end
46
- end
47
- end
48
-
49
- describe '#initialize' do
50
- it 'assigns the given env' do
51
- expect(dsl.env).to be env
52
- end
53
-
54
- it 'assigns the given block' do
55
- expect(dsl.block).to be block
56
- end
57
-
58
- it 'assigns no action' do
59
- expect(dsl.actions).to be_empty
60
- end
61
-
62
- it 'assigns true as the condition' do
63
- expect(dsl.condition).to be true
64
- end
65
- end
66
-
67
- describe '#evaluate' do
68
- let(:block) { proc { throw :task_code } }
69
-
70
- it 'evaluates its code' do
71
- expect { dsl.evaluate }
72
- .to throw_symbol :task_code
73
- end
74
-
75
- context 'when arguments are given' do
76
- let(:block) { proc { |e| throw e } }
77
-
78
- it 'passes arguments as block parameters' do
79
- expect { dsl.evaluate :some_argument }
80
- .to throw_symbol :some_argument
81
- end
82
- end
83
- end
84
-
85
- describe '#condition' do
86
- context 'when a block is given' do
87
- it 'assigns a new evaluated condition' do
88
- dsl.condition { :some_return_value }
89
- expect(dsl.condition.return_value).to eq :some_return_value
90
- end
91
- end
92
- end
93
-
94
- describe '#ask' do
95
- let(:question) { 'Which letter?' }
96
- let(:choices) { [[:a, ?A], [:b, ?B]] }
97
- let(:prompter_class) { double('prompter class').as_null_object }
98
- subject(:ask) { dsl.ask question, choices,
99
- prompter: prompter_class }
100
-
101
- it 'builds a prompter' do
102
- expect(prompter_class).to receive(:new).with(env.input, env.output)
103
- ask
104
- end
105
-
106
- it 'prompts and returns the choice' do
107
- prompter = double 'prompter'
108
- allow(prompter_class).to receive(:new) { prompter }
109
- allow(prompter).to receive(:prompt) { :choice }
110
- expect(ask).to eq :choice
111
- end
112
- end
113
-
114
- describe '#get' do
115
- let(:env) { Env.new(registry: { some_key: :some_value }) }
116
-
117
- it 'fetches a value from the registry at given index' do
118
- expect(dsl.get :some_key).to eq :some_value
119
- end
120
- end
121
- end
122
- end
123
- end