tmp-repo 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e066d1d7a1f044005bf19bc3ddfd9dc7447ed053
4
- data.tar.gz: 0c81d28c00cda365465cf1b58456afe60c016ddf
3
+ metadata.gz: b34ec0171c4a211c5561a120206a5e99b8fb2f79
4
+ data.tar.gz: 00f9fe4942fcd57e58ef7fb7dee6f41860c099fe
5
5
  SHA512:
6
- metadata.gz: 571bdc29b37e937ff1789c9f3a384aee3137a4ee0aa469fc682f7f677d919eab8beb3e4e9ddd5a9ee626f8e207c5fa8aa840f38478a4d0a3a89b158be6dac95e
7
- data.tar.gz: aff97032c388b37e86b05e1c99cbf351fb5986f83ab456174c6b23431cd6d3d0fb55e5fde97b238770c9a54c092cd19fa7e1049b1342341a3d7860a6c870465b
6
+ metadata.gz: 4f93b09ae80e0b6cba805471932acae34f4c4b5504bcd1558f1d5ed9cfefa855dbc6bc1c0db584c49e9f32bf3516f084b781f8cc7e63e02cb3eaea67a36f96ed
7
+ data.tar.gz: ba4ecd23c17dcc580d2140855c28b539624023621cf8b7def8d42667bdd848443598d80e9e6f42fde97b21dd135a7b5e826633c57983c05a1e14c827b71d3c68
@@ -6,3 +6,7 @@
6
6
 
7
7
  * More easily overridable reference to git executable.
8
8
  * Added ability to pass in desired working directory instead of always generating a new random one.
9
+
10
+ == 1.1.0
11
+
12
+ * Added TmpRepo#each_commit_id to iterate over commits in the repo.
@@ -42,6 +42,10 @@ class TmpRepo
42
42
  end
43
43
  end
44
44
 
45
+ def each_commit_id(&block)
46
+ git('log --pretty=format:%H').strip.split("\n").each(&block)
47
+ end
48
+
45
49
  def add_all
46
50
  git('add -A')
47
51
  end
@@ -68,10 +72,10 @@ class TmpRepo
68
72
 
69
73
  def git(command)
70
74
  in_repo do
71
- output = `#{git_executable} #{command}`
75
+ output = `#{git_executable} #{command} 2>&1`
72
76
 
73
77
  if $?.exitstatus != 0
74
- raise GitError, output
78
+ raise GitError, output.strip
75
79
  end
76
80
 
77
81
  output
@@ -123,5 +127,5 @@ class TmpRepo
123
127
 
124
128
  def create_status_hash
125
129
  { modified: [], deleted: [], new_file: [] }
126
- end
130
+ end
127
131
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  class TmpRepo
4
- VERSION = '1.0.1'
4
+ VERSION = '1.1.0'
5
5
  end
@@ -16,12 +16,6 @@ describe TmpRepo do
16
16
  repo.unlink
17
17
  end
18
18
 
19
- def in_repo
20
- Dir.chdir(repo.working_dir.to_s) do
21
- yield
22
- end
23
- end
24
-
25
19
  describe '#initialize' do
26
20
  it 'should initialize the repository' do
27
21
  expect(repo.working_dir.join('.git')).to exist
@@ -57,12 +51,29 @@ describe TmpRepo do
57
51
  end
58
52
  end
59
53
 
54
+ describe '#each_commit_id' do
55
+ it 'yields commit ids one at a time' do
56
+ repo.create_file('foo.txt') { |f| f.write('foobar') }
57
+ repo.add_all
58
+ repo.commit('first commit')
59
+
60
+ repo.create_file('bar.txt') { |f| f.write('baz') }
61
+ repo.add_all
62
+ repo.commit('second commit')
63
+
64
+ first_id = repo.git('rev-parse HEAD').strip
65
+ second_id = repo.git('rev-parse HEAD~1').strip
66
+
67
+ expect(repo.each_commit_id.to_a).to eq([first_id, second_id])
68
+ end
69
+ end
70
+
60
71
  describe '#add_all' do
61
72
  it 'stages all files' do
62
73
  repo.create_file('foo.txt') { |f| f.write('foobar') }
63
74
  repo.add_all
64
75
 
65
- in_repo do
76
+ repo.in_repo do
66
77
  expect(`git status`).to match(/new file:[\s]+foo\.txt/)
67
78
  end
68
79
  end
@@ -74,7 +85,7 @@ describe TmpRepo do
74
85
  repo.add_all
75
86
  repo.commit('Committing foobar')
76
87
 
77
- in_repo do
88
+ repo.in_repo do
78
89
  expect(`git log`).to match(/Committing foobar/)
79
90
  expect(`git show --name-only HEAD`).to include('foo.txt')
80
91
  end
@@ -93,14 +104,14 @@ describe TmpRepo do
93
104
 
94
105
  describe '#checkout' do
95
106
  it 'checks out the given branch' do
96
- in_repo do
107
+ repo.in_repo do
97
108
  `git checkout -b my_branch && git checkout master`
98
109
  expect(`git rev-parse --abbrev-ref HEAD`.strip).to eq('master')
99
110
  end
100
111
 
101
112
  repo.checkout('my_branch')
102
113
 
103
- in_repo do
114
+ repo.in_repo do
104
115
  expect(`git rev-parse --abbrev-ref HEAD`.strip).to eq('my_branch')
105
116
  end
106
117
  end
@@ -110,7 +121,7 @@ describe TmpRepo do
110
121
  it 'creates a new branch' do
111
122
  repo.create_branch('new_branch')
112
123
 
113
- in_repo do
124
+ repo.in_repo do
114
125
  expect(`git branch`).to include('new_branch')
115
126
  end
116
127
  end
@@ -118,7 +129,7 @@ describe TmpRepo do
118
129
 
119
130
  describe '#current_branch' do
120
131
  it 'returns the current branch name' do
121
- in_repo { `git checkout -b cool_branch` }
132
+ repo.in_repo { `git checkout -b cool_branch` }
122
133
  expect(repo.current_branch).to eq('cool_branch')
123
134
  end
124
135
  end
@@ -145,7 +156,7 @@ describe TmpRepo do
145
156
  end
146
157
 
147
158
  it 'shows modified files' do
148
- in_repo do
159
+ repo.in_repo do
149
160
  File.open('foo.txt', 'w+') do |f|
150
161
  f.write("\nI'm a change!")
151
162
  end
@@ -159,7 +170,7 @@ describe TmpRepo do
159
170
  end
160
171
 
161
172
  it 'shows deleted files' do
162
- in_repo do
173
+ repo.in_repo do
163
174
  File.unlink('foo.txt')
164
175
  repo.add_all
165
176
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmp-repo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-31 00:00:00.000000000 Z
11
+ date: 2015-07-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Creates and manages a git repository in the operating system's temporary
14
14
  directory. Useful for running git operations in tests.
@@ -36,19 +36,20 @@ require_paths:
36
36
  - lib
37
37
  required_ruby_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  requirements: []
48
48
  rubyforge_project:
49
- rubygems_version: 2.2.2
49
+ rubygems_version: 2.2.3
50
50
  signing_key:
51
51
  specification_version: 4
52
52
  summary: Creates and manages a git repository in the operating system's temporary
53
53
  directory. Useful for running git operations in tests.
54
54
  test_files: []
55
+ has_rdoc: true