propel 0.4.1 → 0.4.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.
@@ -20,6 +20,10 @@ module Propel
20
20
  local_last_commit != remote_last_commit
21
21
  end
22
22
 
23
+ def ensure_attached_head!
24
+ exit_with_error('You are operating with a detached HEAD, aborting.') if current_branch == '(no branch)'
25
+ end
26
+
23
27
  def pull(rebase)
24
28
  pull_cmd = 'pull'
25
29
  pull_cmd << ' --rebase' if rebase
@@ -76,8 +80,20 @@ module Propel
76
80
  end
77
81
 
78
82
  def git git_args
79
- output = `git #{git_args}`.strip
80
- Result.new(output, $?)
83
+ output, exitcode = run_command(git_args)
84
+
85
+ if exitcode == 0
86
+ Result.new(output, exitcode)
87
+
88
+ else
89
+ puts output
90
+ exit exitcode
91
+ end
92
+ end
93
+
94
+ def run_command(cmd)
95
+ output = `git #{cmd}`.strip
96
+ [ output, $?.exitstatus ]
81
97
  end
82
98
 
83
99
  def local_last_commit
@@ -90,7 +106,6 @@ module Propel
90
106
  end
91
107
 
92
108
  def current_branch
93
- # TODO - replace with git symbolic-ref HEAD
94
109
  git("branch").result.split("\n").detect{|l| l =~ /^\*/ }.gsub(/^\* /, '')
95
110
  end
96
111
 
@@ -12,6 +12,8 @@ module Propel
12
12
  end
13
13
 
14
14
  def start
15
+ @repository.ensure_attached_head!
16
+
15
17
  if @repository.changed?
16
18
  if remote_build_configured?
17
19
 
@@ -1,3 +1,3 @@
1
1
  module Propel
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -5,14 +5,51 @@ describe Propel::GitRepository do
5
5
  it "should use --rebase when argument is true" do
6
6
  git_repository = Propel::GitRepository.new
7
7
  git_repository.should_receive(:git).with("pull --rebase")
8
+
8
9
  git_repository.pull(true)
9
10
  end
10
11
 
11
12
  it "should not use --rebase when argument as false" do
12
13
  git_repository = Propel::GitRepository.new
14
+
13
15
  git_repository.should_receive(:git).with("pull")
14
16
  git_repository.pull(false)
15
17
  end
18
+
19
+ describe "when the process exits with a non-zero exit status" do
20
+ it "should print the process stdout to the console and exit with the exit code of the process" do
21
+ git_repository = Propel::GitRepository.new
22
+
23
+ git_repository.should_receive(:run_command).with('pull --rebase').and_return([ 'my message', 127 ])
24
+ git_repository.should_receive(:exit).with(127)
25
+ git_repository.should_receive(:puts).with('my message')
26
+ git_repository.pull(true)
27
+ end
28
+ end
29
+ end
30
+
31
+ describe "#ensure_attached_head!" do
32
+ class DetachedHeadTrap < StandardError ; end
33
+
34
+ it "should warn the user and exit with a status of 1 when the head is detached" do
35
+ git_repository = Propel::GitRepository.new
36
+ git_repository.stub!(:current_branch).and_return('(no branch)')
37
+ git_repository.should_receive(:exit_with_error).with('You are operating with a detached HEAD, aborting.').and_raise(DetachedHeadTrap)
38
+
39
+ lambda {
40
+ git_repository.ensure_attached_head!
41
+ }.should raise_error(DetachedHeadTrap)
42
+ end
43
+
44
+ it "should not exit when on master branch" do
45
+ git_repository = Propel::GitRepository.new
46
+ git_repository.stub!(:current_branch).and_return('master')
47
+ git_repository.should_not_receive(:exit_with_error)
48
+
49
+ lambda {
50
+ git_repository.ensure_attached_head!
51
+ }.should_not raise_error(DetachedHeadTrap)
52
+ end
16
53
  end
17
54
 
18
55
  describe "#push" do
@@ -8,6 +8,20 @@ describe Propel::Runner do
8
8
  end
9
9
 
10
10
  describe ".start" do
11
+ class DetachedHeadTrap < StandardError ; end
12
+
13
+ it "should not call propel! if HEAD is detached" do
14
+ runner = Propel::Runner.new
15
+ runner.stub!(:logger).and_return(stub_logger)
16
+ @git_repository.stub!(:ensure_attached_head!).and_raise(DetachedHeadTrap)
17
+
18
+ runner.should_not_receive(:propel!)
19
+
20
+ lambda {
21
+ runner.start
22
+ }.should raise_error(DetachedHeadTrap)
23
+ end
24
+
11
25
  it "should not call propel! if there is nothing to push" do
12
26
  runner = Propel::Runner.new
13
27
  runner.stub!(:logger).and_return(stub_logger)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: propel
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 1
10
- version: 0.4.1
9
+ - 2
10
+ version: 0.4.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Leitgeb
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-04 00:00:00 -05:00
18
+ date: 2011-05-16 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency