blazing 0.2.10 → 0.2.11
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/.rvmrc +26 -20
- data/CHANGELOG.md +28 -8
- data/Gemfile +0 -1
- data/Guardfile +10 -2
- data/README.md +3 -3
- data/blazing.gemspec +8 -5
- data/lib/blazing/cli.rb +6 -7
- data/lib/blazing/commands.rb +72 -0
- data/lib/blazing/config.rb +5 -0
- data/lib/blazing/hook.rb +85 -0
- data/lib/blazing/logger.rb +1 -0
- data/lib/blazing/recipe.rb +5 -0
- data/lib/blazing/repository.rb +53 -0
- data/lib/blazing/target.rb +35 -91
- data/lib/blazing/templates/config.erb +1 -1
- data/lib/blazing/templates/hook/base.erb +7 -0
- data/lib/blazing/templates/hook/bundler.erb +3 -0
- data/lib/blazing/templates/hook/git-reset.erb +10 -0
- data/lib/blazing/templates/hook/rake.erb +5 -0
- data/lib/blazing/templates/hook/recipes.erb +5 -0
- data/lib/blazing/templates/{hook.erb → hook/rvm.erb} +0 -29
- data/lib/blazing/templates/hook/setup.erb +9 -0
- data/lib/blazing.rb +3 -2
- data/spec/blazing/cli_spec.rb +33 -0
- data/spec/blazing/commands_spec.rb +134 -0
- data/spec/blazing/dsl_setter_spec.rb +29 -0
- data/spec/blazing/hook_spec.rb +148 -0
- data/spec/blazing/integration/deployment_spec.rb +32 -0
- data/spec/blazing/integration/init_spec.rb +3 -4
- data/spec/blazing/integration/list_spec.rb +4 -3
- data/spec/blazing/integration/recipes_spec.rb +2 -2
- data/spec/blazing/integration/setup_spec.rb +2 -2
- data/spec/blazing/integration/update_spec.rb +1 -3
- data/spec/blazing/logger_spec.rb +34 -0
- data/spec/blazing/recipe_spec.rb +1 -1
- data/spec/blazing/repository_spec.rb +41 -0
- data/spec/blazing/shell_spec.rb +19 -0
- data/spec/blazing/target_spec.rb +0 -25
- metadata +66 -35
- data/.rspec +0 -2
- data/lib/blazing/runner.rb +0 -79
- data/lib/blazing/version.rb +0 -7
- data/spec/blazing/runner_spec.rb +0 -24
@@ -0,0 +1,10 @@
|
|
1
|
+
while read oldrev newrev refname
|
2
|
+
do
|
3
|
+
# Reset so we dont have unstaged changes... and then checkout the pushed ref
|
4
|
+
echo "------> [blazing] Doing a hard reset and checking out $refname since thats what you pushed"
|
5
|
+
git reset --hard HEAD
|
6
|
+
git checkout $refname
|
7
|
+
done
|
8
|
+
|
9
|
+
unset GIT_DIR
|
10
|
+
unset GIT_WORK_TREE
|
@@ -1,20 +1,3 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
echo "------"
|
4
|
-
echo "------ [blazing] ENTERING POST RECEIVE HOOK FOR: <%= name %>"
|
5
|
-
echo "------"
|
6
|
-
|
7
|
-
cd ..
|
8
|
-
GIT_DIR='.git'
|
9
|
-
|
10
|
-
while read oldrev newrev refname
|
11
|
-
do
|
12
|
-
# Reset so we dont have unstaged changes... and then checkout the pushed ref
|
13
|
-
echo "------> [blazing] Doing a hard reset and checking out $refname since thats what you pushed"
|
14
|
-
git reset --hard HEAD
|
15
|
-
git checkout $refname
|
16
|
-
done
|
17
|
-
|
18
1
|
<% if @config.rvm %>
|
19
2
|
|
20
3
|
#
|
@@ -58,15 +41,3 @@ done
|
|
58
41
|
|
59
42
|
<% end %>
|
60
43
|
|
61
|
-
echo "------> [blazing] Bundling gems"
|
62
|
-
bundle --deployment --quiet --without development test
|
63
|
-
|
64
|
-
<% unless @config.recipes.empty? %>
|
65
|
-
echo "------> [blazing] Running recipes for <%= name.to_s %>"
|
66
|
-
bundle exec blazing recipes <%= name.to_s %>
|
67
|
-
<% end %>
|
68
|
-
|
69
|
-
<% if @target.rake_command %>
|
70
|
-
echo "------> [blazing] running <%= @target.rake_command %>"
|
71
|
-
<%= @target.rake_command %>
|
72
|
-
<% end %>
|
data/lib/blazing.rb
CHANGED
@@ -4,12 +4,13 @@ module Blazing
|
|
4
4
|
|
5
5
|
autoload :CLI, 'blazing/cli'
|
6
6
|
autoload :Config, 'blazing/config'
|
7
|
-
autoload :Version, 'blazing/version'
|
8
7
|
autoload :DSLSetter, 'blazing/dsl_setter'
|
9
8
|
autoload :Recipe, 'blazing/recipe'
|
10
|
-
autoload :
|
9
|
+
autoload :COmmands, 'blazing/commands'
|
11
10
|
autoload :Shell, 'blazing/shell'
|
12
11
|
autoload :Target, 'blazing/target'
|
12
|
+
autoload :Hook, 'blazing/hook'
|
13
|
+
autoload :Repository, 'blazing/repository'
|
13
14
|
|
14
15
|
TEMPLATE_ROOT = File.expand_path(File.dirname(__FILE__) + File.join('/', 'blazing', 'templates'))
|
15
16
|
DEFAULT_CONFIG_LOCATION = 'config/blazing.rb'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
describe CLI do
|
6
|
+
|
7
|
+
let(:cli) { CLI.new }
|
8
|
+
it 'has an init method' do
|
9
|
+
cli.respond_to? :init
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has a setup method' do
|
13
|
+
cli.respond_to? :setup
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has an update method' do
|
17
|
+
cli.respond_to? :update
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'has a recipes method' do
|
21
|
+
cli.respond_to? :recipes
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'has a list method' do
|
25
|
+
cli.respond_to? :list
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'has a help method' do
|
29
|
+
cli.respond_to? :help
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'blazing/commands'
|
3
|
+
|
4
|
+
module Blazing
|
5
|
+
|
6
|
+
describe Commands do
|
7
|
+
|
8
|
+
let(:config_instance) { Blazing::Config.new }
|
9
|
+
|
10
|
+
let(:target_a) { double('target_a', :name => 'target_a', :update => nil, :setup => nil) }
|
11
|
+
let(:target_b) { double('target_b', :name => 'target_b', :update => nil, :setup => nil) }
|
12
|
+
let(:targets) { [target_a, target_b] }
|
13
|
+
|
14
|
+
let(:recipe_a) { double('recipe_a', :name => 'recipe_a', :run => nil) }
|
15
|
+
let(:recipe_b) { double('recipe_b', :name => 'recipe_b', :run => nil) }
|
16
|
+
let(:recipes) { [recipe_a, recipe_b] }
|
17
|
+
|
18
|
+
let(:config) do
|
19
|
+
config = config_instance
|
20
|
+
config.targets = targets
|
21
|
+
config.recipes = recipes
|
22
|
+
|
23
|
+
config
|
24
|
+
end
|
25
|
+
|
26
|
+
let(:commands) { Commands }
|
27
|
+
let(:commands_instance) { commands.new }
|
28
|
+
|
29
|
+
before :each do
|
30
|
+
Config.stub(:parse).and_return(config)
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '.new' do
|
34
|
+
it 'reads to config file' do
|
35
|
+
Config.should_receive(:parse).and_return(config)
|
36
|
+
commands.new
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#run' do
|
41
|
+
it 'creates an instance of itself' do
|
42
|
+
commands_instance.stub!(:dummy_command)
|
43
|
+
commands.should_receive(:new).with({}).and_return(commands_instance)
|
44
|
+
commands.run(:dummy_command)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'runs the specified command' do
|
48
|
+
commands_instance.should_receive(:dummy_command)
|
49
|
+
commands.stub(:new).with({}).and_return(commands_instance)
|
50
|
+
commands.run(:dummy_command)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'raises an exception if the command does not exist' do
|
54
|
+
pending 'Implement after reading exceptional Ruby ;-)'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#init' do
|
59
|
+
it 'creates a config directory if it does not exist' do
|
60
|
+
Dir.should_receive(:mkdir).with('config')
|
61
|
+
File.stub(:exists?).and_return(false)
|
62
|
+
File.stub(:open)
|
63
|
+
commands.run(:init)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'creates a config file' do
|
67
|
+
file = double('file').as_null_object
|
68
|
+
File.should_receive(:open).with("config/blazing.rb", "wb").and_yield(file)
|
69
|
+
commands.run(:init)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#setup' do
|
74
|
+
it 'runs the setup method on the specified target' do
|
75
|
+
target_a.should_receive(:setup)
|
76
|
+
target_b.should_not_receive(:setup)
|
77
|
+
commands.run(:setup, :target_name => target_a.name)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'does nothing when no target is specified' do
|
81
|
+
target_a.should_not_receive(:setup)
|
82
|
+
target_b.should_not_receive(:setup)
|
83
|
+
commands.run(:setup)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'runs setup on all targets if "all" is specified' do
|
87
|
+
target_a.should_receive(:setup)
|
88
|
+
target_b.should_receive(:setup)
|
89
|
+
commands.run(:setup, :target_name => 'all')
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'runs the update command' do
|
93
|
+
commands_instance.should_receive(:update)
|
94
|
+
commands.stub(:new).with({}).and_return(commands_instance)
|
95
|
+
commands.run(:setup)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe '#update' do
|
100
|
+
it 'runs the update method on the specified target' do
|
101
|
+
target_a.should_receive(:update)
|
102
|
+
target_b.should_not_receive(:update)
|
103
|
+
commands.run(:update, :target_name => target_a.name)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'does nothing when no target is specified' do
|
107
|
+
target_a.should_not_receive(:update)
|
108
|
+
target_b.should_not_receive(:update)
|
109
|
+
commands.run(:update)
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'runs update on all targets if "all" is specified' do
|
113
|
+
target_a.should_receive(:update)
|
114
|
+
target_b.should_receive(:update)
|
115
|
+
commands.run(:update, :target_name => 'all')
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#recipes' do
|
120
|
+
it 'runs each recipe' do
|
121
|
+
recipes.each { |r| r.should_receive(:run) }
|
122
|
+
commands.run(:recipes)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#list' do
|
127
|
+
it 'lists each recipe' do
|
128
|
+
Blazing::Recipe.should_receive(:pretty_list)
|
129
|
+
commands.run(:list)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
describe DSLSetter do
|
6
|
+
|
7
|
+
let(:dummy) { class Dummy; extend DSLSetter; end }
|
8
|
+
let(:dummy_instance) { Dummy.new }
|
9
|
+
|
10
|
+
it 'it defines a dsl method named after each argument provided' do
|
11
|
+
dummy.dsl_setter(:foo, :bar)
|
12
|
+
dummy_instance.should respond_to :foo
|
13
|
+
dummy_instance.should respond_to :bar
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'the generated dsl method' do
|
17
|
+
it 'sets an instance variable when provided with an argumnent' do
|
18
|
+
dummy_instance.foo('something')
|
19
|
+
dummy_instance.instance_variable_get(:@foo).should == 'something'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns the value of the istance variable when no argument is provided' do
|
23
|
+
dummy_instance.instance_variable_set(:@foo, 'something')
|
24
|
+
dummy_instance.foo.should == 'something'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
class Recipe::Dummy < Blazing::Recipe
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Hook do
|
9
|
+
|
10
|
+
let(:config) { Config.new }
|
11
|
+
|
12
|
+
describe '#rake_command' do
|
13
|
+
it 'prepends the environment variables specified in the rake call' do
|
14
|
+
config.rake :deploy, 'SOMEFUNKYVARIABLE=foobar'
|
15
|
+
target = Blazing::Target.new(:sometarget, '/path', config)
|
16
|
+
hook = Hook.new(target)
|
17
|
+
hook.rake_command.should == 'SOMEFUNKYVARIABLE=foobar bundle exec rake deploy'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'appends the RAILS_ENV specified as :rails_env option to the target call' do
|
21
|
+
config.rake :deploy
|
22
|
+
target = Blazing::Target.new(:sometarget, '/path', config, :rails_env => 'production')
|
23
|
+
hook = Hook.new(target)
|
24
|
+
hook.rake_command.should == ' RAILS_ENV=production bundle exec rake deploy'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns nil when no rake task was specified in config' do
|
28
|
+
target = Blazing::Target.new(:sometarget, '/path', config, :rails_env => 'production')
|
29
|
+
hook = Hook.new(target)
|
30
|
+
hook.rake_command.should be nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'Generated Hook' do
|
35
|
+
|
36
|
+
let(:target) { Blazing::Target.new(:sometarget, '/path', config, :rails_env => 'production') }
|
37
|
+
let(:hook_file) { Hook.new(target).send(:generate_hook) }
|
38
|
+
|
39
|
+
context 'Always' do
|
40
|
+
it 'logs the header with the target name' do
|
41
|
+
hook_file.should include("ENTERING POST RECEIVE HOOK FOR: sometarget")
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'goes one directory up' do
|
45
|
+
hook_file.should include('cd ..')
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'sets the GIT_DIR variable to .git' do
|
49
|
+
hook_file.should include("GIT_DIR='.git'")
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'does a hard reset' do
|
53
|
+
hook_file.should include("git reset --hard HEAD")
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'checks out the pushed branch' do
|
57
|
+
hook_file.should include("git checkout $refname")
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'resets the GIT_DIR variable' do
|
61
|
+
hook_file.should include("unset GIT_DIR")
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'resets the GIT_WORK_TREE variable' do
|
65
|
+
hook_file.should include("unset GIT_WORK_TREE")
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'runs bundler with the correct options' do
|
69
|
+
hook_file.should include("bundle --deployment --quiet --without development test")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'RVM Setup' do
|
74
|
+
context 'when rvm is enabled' do
|
75
|
+
context 'loading rvm' do
|
76
|
+
it 'uses the load mechanism suggested by rvm' do
|
77
|
+
config.rvm 'someruby@somegemset'
|
78
|
+
hook_file.should include("source \"$HOME/.rvm/scripts/rvm\"")
|
79
|
+
hook_file.should include("source \"/usr/local/rvm/scripts/rvm\"")
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'sources the rvm_scripts directory when rvm_scripts is specified' do
|
83
|
+
config.rvm 'someruby@somegemset'
|
84
|
+
config.rvm_scripts '/location/of/rvm/scripts'
|
85
|
+
hook_file.should include("source /location/of/rvm/scripts")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'loading the rvm ruby and gemset' do
|
90
|
+
it 'sources the rvmrc to load the env' do
|
91
|
+
config.rvm 'someruby@somegemset'
|
92
|
+
hook_file.should include("rvm use someruby@somegemset")
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'uses rvm use to load the env when an rvm string was specified' do
|
96
|
+
config.rvm :rvmrc
|
97
|
+
hook_file.should include("source .rvmrc")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'when rvm is disabled' do
|
103
|
+
it 'does not include any rvm handling' do
|
104
|
+
hook_file.should_not include("Loading rvm")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'Recipes Handling' do
|
110
|
+
|
111
|
+
context 'when there are no recipes configured' do
|
112
|
+
it 'does not run blazing recipes' do
|
113
|
+
hook_file.should_not include("bundle exec blazing recipes")
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'when there are recipes configured' do
|
118
|
+
before :each do
|
119
|
+
config.recipe :dummy
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'runs the blazing recipes command with the correct target name' do
|
123
|
+
hook_file.should include("bundle exec blazing recipes sometarget")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'Rake Command Handling' do
|
129
|
+
context 'when the rake_command is specified' do
|
130
|
+
before :each do
|
131
|
+
config.rake :deploy
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'runs the rake command' do
|
135
|
+
hook_file.should include(' RAILS_ENV=production bundle exec rake deploy')
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'when no rake_command is specified' do
|
140
|
+
it 'does not run the rake_command' do
|
141
|
+
hook_file.should_not include(" RAILS_ENV=production bundle exec rake")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'deployment with git push' do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
setup_sandbox
|
7
|
+
#@config = Blazing::Config.new
|
8
|
+
#@config.target :production, "#{@sandbox_directory}/target"
|
9
|
+
#@config.target :staging, "#{@sandbox_directory}/staging"
|
10
|
+
#@cli = Blazing::CLI.new
|
11
|
+
#Blazing::Config.stub(:parse).and_return @config
|
12
|
+
end
|
13
|
+
|
14
|
+
after :each do
|
15
|
+
teardown_sandbox
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'git push <remote> <ref>' do
|
19
|
+
it 'deploys the pushed ref'
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'git push <remote>' do
|
23
|
+
context 'when one ref is pushed' do
|
24
|
+
it 'deploys the pushed ref'
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when multiple refs are pushed' do
|
28
|
+
it 'deploys the currently checked out ref'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'blazing/config'
|
3
|
-
require 'blazing/runner'
|
4
3
|
|
5
|
-
describe 'blazing init' do
|
4
|
+
describe '$ blazing init' do
|
6
5
|
|
7
6
|
before :each do
|
8
7
|
setup_sandbox
|
9
|
-
Blazing::
|
8
|
+
Blazing::Commands.new(:file => File.join(File.dirname(__FILE__), '../../support/empty_config.rb')).init
|
10
9
|
end
|
11
10
|
|
12
11
|
after :each do
|
@@ -20,5 +19,5 @@ describe 'blazing init' do
|
|
20
19
|
it 'creates a config file in config/blazing.rb' do
|
21
20
|
File.exists?('config/blazing.rb').should be true
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
23
|
+
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'blazing list' do
|
3
|
+
describe '$ blazing list' do
|
4
|
+
|
4
5
|
|
5
6
|
before :each do
|
6
7
|
setup_sandbox
|
@@ -13,7 +14,7 @@ describe 'blazing list' do
|
|
13
14
|
it 'prints a list of the available recipes' do
|
14
15
|
class Blazing::Recipe::Dummy < Blazing::Recipe
|
15
16
|
end
|
16
|
-
capture(:stdout) { Blazing::
|
17
|
+
capture(:stdout) { Blazing::Commands.new(:file => File.join(File.dirname(__FILE__), '../../support/empty_config.rb')).list }.should == "dummy\n"
|
17
18
|
end
|
18
|
-
|
19
19
|
end
|
20
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'blazing recipes' do
|
3
|
+
describe '$ blazing recipes' do
|
4
4
|
|
5
5
|
before :each do
|
6
6
|
setup_sandbox
|
@@ -25,5 +25,5 @@ describe 'blazing recipes' do
|
|
25
25
|
output = capture(:stdout) { @cli.recipes(:production) }
|
26
26
|
output.should == "dummy recipe was run\n"
|
27
27
|
end
|
28
|
-
|
29
28
|
end
|
29
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
describe '$ blazing setup' do
|
4
4
|
|
5
5
|
before :each do
|
6
6
|
setup_sandbox
|
@@ -37,5 +37,5 @@ require 'spec_helper'
|
|
37
37
|
File.exists?("#{@sandbox_directory}/staging/.git/hooks/post-receive").should be true
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
41
40
|
end
|
41
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
describe '$ blazing update' do
|
4
4
|
|
5
5
|
before :each do
|
6
6
|
setup_sandbox
|
@@ -15,7 +15,6 @@ require 'spec_helper'
|
|
15
15
|
teardown_sandbox
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
18
|
context 'when a target is specified' do
|
20
19
|
|
21
20
|
before :each do
|
@@ -40,6 +39,5 @@ require 'spec_helper'
|
|
40
39
|
File.exists?("#{@sandbox_directory}/staging/.git/hooks/post-receive").should be true
|
41
40
|
end
|
42
41
|
end
|
43
|
-
|
44
42
|
end
|
45
43
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
describe Logger do
|
6
|
+
|
7
|
+
let(:logger) { Logger.new }
|
8
|
+
let(:dummy) { class Dummy; include Logger; end }
|
9
|
+
|
10
|
+
context 'defines convenience methods' do
|
11
|
+
it 'for debug messages' do
|
12
|
+
dummy.respond_to? :debug
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'for info messages' do
|
16
|
+
dummy.respond_to? :info
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'for warn messages' do
|
20
|
+
dummy.respond_to? :warn
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'for error messages' do
|
24
|
+
dummy.respond_to? :error
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'for fatal messages' do
|
28
|
+
dummy.respond_to? :fatal
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
data/spec/blazing/recipe_spec.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
describe Repository do
|
6
|
+
|
7
|
+
let(:shell_probe) { double(:shell, :run => nil) }
|
8
|
+
|
9
|
+
describe '#setup' do
|
10
|
+
it 'initializes and sets up the repository over ssh' do
|
11
|
+
target = double(:target, :host => 'host', :user => 'user', :path => '/some/where')
|
12
|
+
repository = Repository.new(target)
|
13
|
+
repository.instance_variable_set(:@shell, shell_probe)
|
14
|
+
|
15
|
+
shell_probe.should_receive(:run).with("ssh user@host 'mkdir /some/where; cd /some/where && git init && cd /some/where && git config receive.denyCurrentBranch ignore'")
|
16
|
+
repository.setup
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'initializes and sets up the repository locally when no host provided' do
|
20
|
+
target = double(:target, :host => nil, :user => 'user', :path => '/some/where')
|
21
|
+
repository = Repository.new(target)
|
22
|
+
repository.instance_variable_set(:@shell, shell_probe)
|
23
|
+
|
24
|
+
shell_probe.should_receive(:run).with("mkdir /some/where; cd /some/where && git init && cd /some/where && git config receive.denyCurrentBranch ignore")
|
25
|
+
repository.setup
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#add_git_remote' do
|
30
|
+
|
31
|
+
let(:target) { double(:target, :host => 'host', :user => 'user', :path => '/some/where', :name => :foo, :location => '/url/for/git/remote') }
|
32
|
+
let(:repository) { Repository.new(target) }
|
33
|
+
let(:grit_object) { repository.instance_variable_get(:@grit_object) }
|
34
|
+
|
35
|
+
it 'adds a git remote for the target' do
|
36
|
+
repository.add_git_remote
|
37
|
+
grit_object.config["remote.#{target.name}.url"].should == target.location
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Blazing
|
4
|
+
|
5
|
+
describe Shell do
|
6
|
+
|
7
|
+
let(:shell) { Shell.new }
|
8
|
+
|
9
|
+
describe '#run' do
|
10
|
+
it 'runs the provided command' do
|
11
|
+
shell.should_receive(:`)
|
12
|
+
shell.run('command')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'raises an exception when the command fails'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|