capita_git 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capita_git (0.1.0)
4
+ capita_git (0.1.1)
5
5
  git (>= 1.2.5)
6
6
  thor (>= 0.14.6)
7
7
 
data/bin/gitc CHANGED
@@ -1,18 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'capita_git'
3
- require 'capita_git/cli'
4
3
 
5
4
  begin
6
5
  CapitaGit::CLI.start
7
6
  rescue CapitaGit::UncleanError => e
8
- CapitaGit.ui.error e.message
9
- system 'git status'
7
+ CapitaGit.ui.error "-- ERROR DETECTED ----------------------------------------"
8
+ CapitaGit.ui.error " #{e.message}"
9
+ CapitaGit.ui.error `git status --short`
10
+ exit 1
11
+ rescue CapitaGit::RepositoryError => e
12
+ CapitaGit.ui.error "-- ERROR DETECTED ----------------------------------------"
13
+ CapitaGit.ui.error " #{e.message}"
14
+ CapitaGit.ui.debug "-- BACKTRACE ---------------------------------------------"
15
+ e.backtrace.each { |bt| CapitaGit.ui.debug "- #{bt}"}
16
+ exit 1
10
17
  rescue => e
11
- CapitaGit.ui.error e.message
12
- CapitaGit.ui.debug e.backtrace.join("\n")
18
+ CapitaGit.ui.error "-- ERROR DETECTED ----------------------------------------"
19
+ CapitaGit.ui.error " #{e.class}: #{e.message}"
20
+ CapitaGit.ui.debug "-- BACKTRACE ---------------------------------------------"
21
+ e.backtrace.each { |bt| CapitaGit.ui.debug "- #{bt}"}
13
22
  exit 1
14
23
  rescue Interrupt => e
15
- CapitaGit.ui.error "\nQuitting..."
16
- CapitaGit.ui.debug e.backtrace.join("\n")
24
+ CapitaGit.ui.error "\n-- Received interrupt, quitting ---------------------------\n"
25
+ CapitaGit.ui.debug "-- BACKTRACE ---------------------------------------------"
26
+ e.backtrace.each { |bt| CapitaGit.ui.debug "- #{bt}"}
17
27
  exit 1
18
28
  end
@@ -1,4 +1,3 @@
1
- $:.unshift File.expand_path(__FILE__)
2
1
  require 'thor'
3
2
  require 'thor/actions'
4
3
  require 'rubygems/config_file'
@@ -12,9 +11,9 @@ module CapitaGit
12
11
  def initialize(*)
13
12
  super
14
13
  the_shell = (options["no-color"] ? Thor::Shell::Basic.new : shell)
15
- CapitaGit.ui = UI::Shell.new(the_shell)
14
+ CapitaGit.ui = CapitaGit::UI::Shell.new(the_shell)
16
15
  CapitaGit.ui.debug! if options["verbose"]
17
- Gem::DefaultUserInteraction.ui = UI::RGProxy.new(CapitaGit.ui)
16
+ Gem::DefaultUserInteraction.ui = CapitaGit::UI::RGProxy.new(CapitaGit.ui)
18
17
  end
19
18
 
20
19
  check_unknown_options! unless ARGV.include?("exec") || ARGV.include?("config")
@@ -52,91 +51,95 @@ module CapitaGit
52
51
  end
53
52
  end
54
53
 
54
+ method_option 'remote', :type => :string
55
55
  desc "check", "Generates a Gemfile into the current working directory"
56
-
57
56
  def check
58
- repo = Repository.open(Dir.pwd)
59
- CapitaGit.ui.info "-- Starting to check repository '#{repo.dir.to_s}' --------"
60
- CapitaGit.ui.confirm "-> Active user : '#{repo.user_name} <#{repo.user_email}>'"
61
- CapitaGit.ui.confirm "-> User shortcut : '#{repo.user_shortcut}'"
62
- CapitaGit.ui.info '-----------------------------------------------------------'
63
- CapitaGit.ui.info ''
64
-
65
- CapitaGit.ui.info '-- Fetching changes from remote \'origin\' ------------------'
66
- repo.update_from_remote
57
+ opts = options.dup
58
+ log :debug, "[DEBUG] Starting action 'check'"
59
+
60
+ repo = CapitaGit::Repository.open(Dir.pwd, CapitaGit.ui)
61
+ repo.git_remote = opts[:remote] if opts[:remote]
62
+ log :debug, "[DEBUG] Repository remote set to '#{repo.git_remote}'"
63
+
64
+ log :info, "-- Starting to check repository '#{repo.name}'"
65
+ log :confirm, "-> Active user : '#{repo.user_name} <#{repo.user_email}>'"
66
+ log :confirm, "-> User shortcut : '#{repo.user_shortcut}'"
67
+ log :info, "\n"
68
+
69
+ log :info, "-- Checking for latest changes on \'#{repo.remote}\'"
70
+ repo.fetch_remote_changes
67
71
  latest_major_release_tag = repo.latest_major_release_tag
68
72
  latest_minor_release_tag = repo.latest_minor_release_tag
69
- CapitaGit.ui.confirm "-> Latest major release tag is: #{latest_major_release_tag || '---'}"
70
- CapitaGit.ui.confirm "-> Latest minor release tag is: #{latest_minor_release_tag || '---'}"
71
- CapitaGit.ui.info '-----------------------------------------------------------'
72
- CapitaGit.ui.info ''
73
+ log :confirm, "-> Latest major release tag is: #{latest_major_release_tag || '---'}"
74
+ log :confirm, "-> Latest minor release tag is: #{latest_minor_release_tag || '---'}"
75
+ log :info, "\n"
73
76
 
74
77
  if latest_major_release_tag.nil?
75
- CapitaGit.ui.warn 'No major release tag found, exiting!'
78
+ log :warn, 'No major release tag found, exiting!'
76
79
  exit 0
77
80
  end
78
81
 
79
- CapitaGit.ui.info '-- Checking for presence of major release fixbranch -------'
82
+ log :info, '-- Checking for presence of major release fixbranch'
80
83
  local_fixbranch = repo.local_fixbranch_for_version?(latest_major_release_tag)
81
84
  remote_fixbranch = repo.remote_fixbranch_for_version?(latest_major_release_tag)
82
- CapitaGit.ui.confirm "-> Local : #{local_fixbranch.nil? ? '---' : local_fixbranch.full }"
83
- CapitaGit.ui.confirm "-> Remote : #{remote_fixbranch.nil? ? '---' : remote_fixbranch.full }"
85
+ log :confirm, "-> Local : #{local_fixbranch.nil? ? '---' : local_fixbranch.full }"
86
+ log :confirm, "-> Remote : #{remote_fixbranch.nil? ? '---' : remote_fixbranch.full }"
84
87
 
85
88
  if not repo.has_remote_fixbranch_for_version?(latest_major_release_tag)
86
- CapitaGit.ui.info "--> Creating remote fixbranch #{latest_major_release_tag}-fix"
89
+ log :info, "--> Creating remote fixbranch #{latest_major_release_tag}-fix"
87
90
  repo.create_remote_fixbranch_for_version(latest_major_release_tag)
88
91
  end
89
92
 
90
93
  if not repo.has_local_fixbranch_for_version?(latest_major_release_tag)
91
- CapitaGit.ui.info "--> Creating tracking local fixbranch #{latest_major_release_tag}-fix from remote fixbranch"
94
+ log :info, "--> Creating tracking local fixbranch #{latest_major_release_tag}-fix from remote fixbranch"
92
95
  repo.create_local_fixbranch_for_version(latest_major_release_tag)
93
96
  end
94
97
 
95
- CapitaGit.ui.info '-----------------------------------------------------------'
98
+ log :info, "\n-- Done!\n"
96
99
  end
97
100
 
98
101
  desc "create", "Creates a new feature branch with the given name and optional source branch"
99
- def create(name, source=nil)
100
- repo = Repository.open(Dir.pwd)
101
- source = source.nil? ? repo.current_branch : source
102
- raise "Source branch '#{source}' does not exist" unless repo.has_local_branch?(source)
103
- raise "Source branch '#{source}' is a feature branch, can't branch from that!" if repo.is_local_feature_branch?(source)
104
-
105
- CapitaGit.ui.confirm "--> Creating and switching to feature branch '#{repo.user_shortcut}_#{source}_#{name}'"
106
- repo.create_local_branch_from_source("#{repo.user_shortcut}_#{source}_#{name}", source)
107
- repo.checkout_local_branch("#{repo.user_shortcut}_#{source}_#{name}")
102
+ def create(name, source_branch=nil)
103
+ repo = CapitaGit::Repository.open(Dir.pwd)
104
+ source_branch = source_branch.nil? ? repo.current_branch.to_s : source_branch
105
+ new_branch = "#{repo.user_shortcut}_#{source_branch}_#{name}"
106
+ log :confirm, "--> Creating and switching to feature branch '#{new_branch}'"
107
+ repo.create_local_branch(new_branch, source_branch)
108
+ repo.checkout_local_branch(new_branch)
108
109
  end
109
110
 
110
111
  desc "update", "Updates a feature branch your currently on or specified by name"
111
- def update(name=nil)
112
- repo = Repository.open(Dir.pwd)
113
- name = name.nil? ? repo.current_branch : name
114
- raise "Source branch '#{name}' does not exist" unless repo.has_local_branch?(name)
115
- raise "Source branch '#{name}' is not a feature branch, can't update!" unless repo.is_local_feature_branch?(name)
116
-
117
- CapitaGit.ui.confirm "--> Updating feature branch '#{name}' from '#{repo.source_branch(name)}'"
118
- repo.rebase_local_branch(name)
112
+ def update(feature_branch=nil)
113
+ repo = CapitaGit::Repository.open(Dir.pwd)
114
+ feature_branch = feature_branch.nil? ? repo.current_branch : feature_branch
115
+ raise "Source branch '#{feature_branch}' is not a feature branch, can't update!" unless repo.is_local_feature_branch?(feature_branch)
116
+
117
+ log :confirm, "--> Updating feature branch '#{feature_branch}' from '#{repo.source_branch(feature_branch)}'"
118
+ repo.rebase_local_branch(feature_branch)
119
119
  end
120
120
 
121
121
  desc "close", "Closes a feature branch your currently on or specified by name onto the source branch"
122
- def close(name=nil)
123
- repo = Repository.open(Dir.pwd)
124
- name = name.nil? ? repo.current_branch : name
125
- raise "Source branch '#{name}' does not exist" unless repo.has_local_branch?(name)
126
- raise "Source branch '#{name}' is not a feature branch, can't close!" unless repo.is_local_feature_branch?(name)
127
-
128
- CapitaGit.ui.confirm "--> Closing feature branch '#{name}' onto '#{repo.source_branch(name)}'"
129
- repo.close_local_branch(name)
122
+ def close(feature_branch=nil)
123
+ repo = CapitaGit::Repository.open(Dir.pwd)
124
+ feature_branch = feature_branch.nil? ? repo.current_branch : feature_branch
125
+
126
+ log :confirm, "--> Closing feature branch '#{feature_branch}' onto '#{repo.source_branch(feature_branch)}'"
127
+ repo.close_local_branch(feature_branch)
130
128
  end
131
129
 
132
130
  desc "runner", "Generates a Gemfile into the current working directory"
131
+
133
132
  def runner(command)
134
- repo = Repository.open(Dir.pwd)
133
+ repo = CapitaGit::Repository.open(Dir.pwd)
135
134
  puts repo.send("#{command}")
136
135
  end
137
136
 
138
137
  private
139
138
 
139
+ def log(level, message)
140
+ CapitaGit.ui.send(level, message)
141
+ end
142
+
140
143
  def have_groff?
141
144
  !(`which groff` rescue '').empty?
142
145
  end
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GITC" "5" "January 2011" "GITC 0.1.1" "GITC Manual"
4
+ .TH "GITC" "5" "January 2011" "GITC 0.1.2" "GITC Manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBgitc\fR \- git helper for CAPITA Unternehmensberatung GmbH
@@ -1,5 +1,5 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GITC\-CHECK" "" "January 2011" "GITC 0.1.1" "GITC Manual"
4
+ .TH "GITC\-CHECK" "" "January 2011" "GITC 0.1.2" "GITC Manual"
5
5
 
@@ -2,4 +2,4 @@ GITC-CHECK() GITC Manual GITC-CHECK()
2
2
 
3
3
 
4
4
 
5
- GITC 0.1.1 January 2011 GITC-CHECK()
5
+ GITC 0.1.2 January 2011 GITC-CHECK()
@@ -50,4 +50,4 @@ COMMANDS
50
50
 
51
51
 
52
52
 
53
- GITC 0.1.1 January 2011 GITC(5)
53
+ GITC 0.1.2 January 2011 GITC(5)
@@ -2,42 +2,54 @@ require 'git'
2
2
 
3
3
  module CapitaGit
4
4
  class Repository
5
- def self.open(path)
6
- new(path)
5
+ attr_accessor :git_remote
6
+ attr_reader :logger
7
+
8
+ def self.open(path, cli=nil)
9
+ new(path, cli)
7
10
  end
8
11
 
9
12
  def method_missing(m, *args)
10
13
  @repository.send m, *args
11
14
  end
12
15
 
13
- def initialize(path)
14
- @repository = Git.open path
15
- check_for_changes
16
+ def initialize(path, cli)
17
+ @logger = cli
18
+
19
+ begin
20
+ log 'Opening repository'
21
+ @repository = Git.open path
22
+ rescue => e
23
+ raise CapitaGit::RepositoryError.new 'Can\'t access repository: ' + e.message
24
+ end
25
+
26
+ @git_remote = 'origin'
27
+ raise CapitaGit::UncleanError.new "Pending changes found!" if has_changes?
16
28
  end
17
29
 
18
- def update_from_remote
19
- @repository.fetch(remote)
30
+ def name
31
+ dir.to_s.split(/\//).last
20
32
  end
21
33
 
22
- def current_branch
23
- @repository.branches.local.select { |b| b.full == @repository.lib.branch_current }[0]
34
+ def fetch_remote_changes
35
+ log 'Fetching remote changes'
36
+ @repository.fetch(@git_remote)
24
37
  end
25
38
 
26
- def check_for_changes
27
- unless @repository.status.untracked.empty? and @repository.status.changed.empty? and @repository.status.deleted.empty? and
28
- @repository.status.added.empty?
29
- raise CapitaGit::UncleanError.new "Repository is not clean!"
30
- end
39
+ def current_branch
40
+ @repository.branches.local.select { |b| b.full == @repository.lib.branch_current }[0]
31
41
  end
32
42
 
33
- def create_feature_branch(name)
34
- raise "Can't create feature branch from branch #{current_branch} since you already seem to be on one" if current_branch =~ /#{user_shortcut}/
35
- system "git checkout -b #{user_shortcut}/#{current_branch}/#{name}"
43
+ def has_changes?
44
+ log 'Checking for pending changes'
45
+ changes = `git status --short`
46
+ !changes.empty?
36
47
  end
37
48
 
38
- def create_local_branch_from_source(name, source, track=false)
39
- raise "Branch '#{name}' already exists!" if has_local_branch?(name)
40
- system "git branch #{track ? '--track' : ''} #{name} #{source}"
49
+ def create_local_branch(new_branch, source_branch, track=false)
50
+ raise "Branch '#{new_branch}' already exists!" if has_local_branch?(new_branch)
51
+ raise "Current branch '#{source_branch}' can't be used as a source for branching!" unless on_branchable_branch?(source_branch)
52
+ system "git branch #{track ? '--track' : ''} #{new_branch} #{source_branch}"
41
53
  end
42
54
 
43
55
  def push_local_branch_to_remote(remote, local_name, remote_name=nil)
@@ -57,19 +69,21 @@ module CapitaGit
57
69
  @repository.branch(name).checkout
58
70
  end
59
71
 
60
- def rebase_local_branch(name)
61
- raise "Can't update #{name} since it doesn't exist!" unless has_local_branch?(name)
62
- checkout_local_branch source_branch(name)
72
+ def rebase_local_branch(branch)
73
+ raise "Can't update #{branch} since it doesn't exist!" unless has_local_branch?(branch)
74
+ checkout_local_branch source_branch(branch)
63
75
  system "git pull"
64
- checkout_local_branch name
65
- system "git rebase #{source_branch(name)}"
76
+ checkout_local_branch branch
77
+ system "git rebase #{source_branch(branch)}"
78
+ raise CapitaGit::UncleanError.new "Rebasing failed, please correct and issue 'git rebase --continue'" if has_changes?
66
79
  end
67
80
 
68
- def close_local_branch(name)
69
- rebase_local_branch(name)
70
- system "git checkout #{source_branch(name)}"
71
- system "git merge #{name}"
72
- system "git branch -d #{name}"
81
+ def close_local_branch(branch)
82
+ raise "Source branch '#{branch}' is not a feature branch, can't close!" unless is_local_feature_branch?(branch)
83
+ rebase_local_branch(branch)
84
+ system "git checkout #{source_branch(branch)}"
85
+ system "git merge #{branch}"
86
+ system "git branch -d #{branch}"
73
87
  end
74
88
 
75
89
  def has_local_branch?(name)
@@ -80,14 +94,18 @@ module CapitaGit
80
94
  !name.match(/^#{user_shortcut}/).nil?
81
95
  end
82
96
 
97
+ def on_branchable_branch?(branch)
98
+ branch == 'master' or not is_local_feature_branch?(branch)
99
+ end
100
+
83
101
  def create_remote_fixbranch_for_version(version)
84
- create_local_branch_from_source("local_#{version}-fix", version)
102
+ create_local_branch("local_#{version}-fix", version)
85
103
  push_local_branch_to_remote('origin', "local_#{version}-fix", "#{version}-fix")
86
104
  delete_local_branch("local_#{version}-fix")
87
105
  end
88
106
 
89
107
  def create_local_fixbranch_for_version(version)
90
- create_local_branch_from_source("#{version}-fix", "origin/#{version}-fix", true)
108
+ create_local_branch("#{version}-fix", "origin/#{version}-fix", true)
91
109
  end
92
110
 
93
111
  def local_fixbranch_for_version?(version)
@@ -139,10 +157,15 @@ module CapitaGit
139
157
 
140
158
  private
141
159
 
142
- def remote
143
- @repository.remotes.select { |r| r.name == 'origin' }[0]
160
+ def log(message)
161
+ @logger.send(:debug, "[DEBUG] #{message}") if @logger
144
162
  end
145
163
 
164
+
165
+ # def remote
166
+ # @repository.remotes.select { |r| r.name == 'origin' }[0]
167
+ # end
168
+
146
169
  def major_release_tags
147
170
  @repository.tags.map(&:name).select { |tag| tag =~ /^\d+\.\d+$/ }
148
171
  end
data/lib/capita_git/ui.rb CHANGED
@@ -18,7 +18,7 @@ module CapitaGit
18
18
  end
19
19
 
20
20
  class Shell < UI
21
- attr_writer :shell
21
+ attr_accessor :shell
22
22
 
23
23
  def initialize(shell)
24
24
  @shell = shell
@@ -1,3 +1,3 @@
1
1
  module CapitaGit
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/capita_git.rb CHANGED
@@ -1,7 +1,11 @@
1
- module CapitaGit
2
- autoload :UI, 'capita_git/ui'
3
- autoload :Repository, 'capita_git/repository'
1
+ $:.unshift File.expand_path(__FILE__)
2
+ require 'rubygems'
3
+ require 'capita_git/cli'
4
+ require 'capita_git/repository'
5
+ require 'capita_git/ui'
6
+ require 'capita_git/version'
4
7
 
8
+ module CapitaGit
5
9
  class << self
6
10
  attr_writer :ui
7
11
 
@@ -16,4 +20,7 @@ module CapitaGit
16
20
 
17
21
  class UncleanError < StandardError
18
22
  end
23
+
24
+ class RepositoryError < StandardError
25
+ end
19
26
  end
data/test/cli_test.rb CHANGED
@@ -10,19 +10,19 @@ class CliTest < Test::Unit::TestCase
10
10
 
11
11
  in_dir 'local_checkout_2' do
12
12
  should_not_have_branch '1.0-fix'
13
-
13
+
14
14
  gitc 'check' do
15
15
  should_have_branch '1.0-fix'
16
-
16
+
17
17
  context "after creating a fix" do
18
18
  setup do
19
19
  assert_command 'git checkout 1.0-fix'
20
20
  assert_command 'echo "foo" > fixfile'
21
21
  assert_command 'git add . && git commit -m "fixfile" && git push'
22
22
  end
23
-
23
+
24
24
  should_not_have_file 'fixfile', :in => 'local_checkout_1'
25
-
25
+
26
26
  context "after pull and checkout of 1.0-fix in checkout 1" do
27
27
  setup do
28
28
  in_dir 'local_checkout_1' do
@@ -33,19 +33,23 @@ class CliTest < Test::Unit::TestCase
33
33
  should_have_file 'fixfile', :in => 'local_checkout_1'
34
34
  end
35
35
  end
36
-
36
+
37
37
  end
38
38
  end
39
39
  end
40
-
40
+
41
41
  gitc 'create my_feature' do
42
42
  should "be on branch USER_master_my_feature" do
43
- user = CapitaGit::Repository.new('.').user_shortcut
43
+ user = CapitaGit::Repository.open('.').user_shortcut
44
44
  assert_equal "#{user}_master_my_feature", repo.current_branch
45
45
  end
46
-
46
+
47
47
  should_not_have_file 'awesome_feature', :in => 'local_checkout_1'
48
-
48
+
49
+ should "break trying to create another feature branch from existing feature branch" do
50
+ assert_command_fail 'gitc create new_feature'
51
+ end
52
+
49
53
  # Propagating changes on source branch with gitc update
50
54
  context "after checkout 2 pushes file master_2_update on master" do
51
55
  setup do
@@ -54,17 +58,30 @@ class CliTest < Test::Unit::TestCase
54
58
  assert_command 'git add . && git commit -m "master 2 update" && git push'
55
59
  end
56
60
  end
57
-
61
+
58
62
  after 'git pull origin master' do
59
63
  should_not_have_file 'awesome_feature', :in => 'local_checkout_1'
60
64
  end
61
-
65
+
62
66
  context "after invoking 'gitc update'" do
63
67
  setup { assert_command("#{ShouldaMacros::BIN_PATH} update") }
64
68
  should_have_file 'master_2_update', :in => 'local_checkout_1'
65
69
  end
70
+
71
+ # context "while having the same file changed in origin" do
72
+ # setup do
73
+ # in_dir 'local_checkout_1' do
74
+ # assert_command 'echo "foo" > master_2_update'
75
+ # assert_command 'git add . && git commit -m "master 2 update"'
76
+ # end
77
+ # end
78
+ #
79
+ # should "crash on invoking 'gitc update'" do
80
+ # assert_command_fail("#{ShouldaMacros::BIN_PATH} update")
81
+ # end
82
+ # end
66
83
  end
67
-
84
+
68
85
  # Committing a fix and closing branch
69
86
  context "after committing a file and gitc close" do
70
87
  setup do
@@ -73,28 +90,28 @@ class CliTest < Test::Unit::TestCase
73
90
  assert_command("#{ShouldaMacros::BIN_PATH} close")
74
91
  assert_command 'git push'
75
92
  end
76
-
93
+
77
94
  should "be on branch master" do
78
95
  assert_equal 'master', repo.current_branch
79
96
  end
80
-
97
+
81
98
  should "have removed the feature branch" do
82
- assert !repo.branches.map(&:name).any? {|n| n =~ /feature/}
99
+ assert !repo.branches.map(&:name).any? { |n| n =~ /feature/ }
83
100
  end
84
-
101
+
85
102
  should_have_file 'awesome_feature', :in => 'local_checkout_1'
86
-
103
+
87
104
  context "after git pull on local_checkout_2" do
88
105
  setup do
89
106
  in_dir 'local_checkout_2' do
90
107
  assert_command 'git pull'
91
108
  end
92
109
  end
93
-
110
+
94
111
  should_have_file 'awesome_feature', :in => 'local_checkout_2'
95
112
  end
96
113
  end
97
-
114
+
98
115
  end
99
116
  end
100
117
  end
@@ -27,6 +27,13 @@ module ShouldaMacros
27
27
  #puts `#{cmd}`
28
28
  assert_equal 0, $?.exitstatus, "Expected exit status of 0 for command '#{cmd}'"
29
29
  end
30
+
31
+ # Runs the specified command and asserts it's exit status should be 1
32
+ def assert_command_fail(cmd)
33
+ Open4.popen4(cmd) { |pid, stdin, stdout, stderr| }
34
+ #puts `#{cmd}`
35
+ assert_equal 1, $?.exitstatus, "Expected exit status of 1 for command '#{cmd}'"
36
+ end
30
37
 
31
38
  # Opens a Git ruby lib instance for current working dir and returns it
32
39
  def repo
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capita_git
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 31
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sebastian Georgi
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-02-01 00:00:00 +01:00
19
+ date: 2011-02-03 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -126,8 +126,8 @@ files:
126
126
  - test/shoulda_macros.rb
127
127
  - test/test_helper.rb
128
128
  - lib/capita_git/man/gitc
129
- - lib/capita_git/man/gitc-check.txt
130
129
  - lib/capita_git/man/gitc-check
130
+ - lib/capita_git/man/gitc-check.txt
131
131
  - lib/capita_git/man/gitc.txt
132
132
  has_rdoc: true
133
133
  homepage: https://github.com/capita/capita_git
@@ -159,9 +159,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements: []
160
160
 
161
161
  rubyforge_project: capita_git
162
- rubygems_version: 1.3.7
162
+ rubygems_version: 1.4.1
163
163
  signing_key:
164
164
  specification_version: 3
165
165
  summary: Git-automation tool for quick handling of common patterns for feature and fix branches
166
- test_files: []
167
-
166
+ test_files:
167
+ - test/cli_test.rb
168
+ - test/shoulda_macros.rb
169
+ - test/test_helper.rb