libdolt 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  #--
3
- # Copyright (C) 2012 Gitorious AS
3
+ # Copyright (C) 2012-2013 Gitorious AS
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
6
6
  # it under the terms of the GNU Affero General Public License as published by
@@ -17,7 +17,6 @@
17
17
  #++
18
18
  require "test_helper"
19
19
  require "libdolt/repo_actions"
20
- require "when"
21
20
  require "ostruct"
22
21
  require "mocha/setup"
23
22
 
@@ -25,30 +24,23 @@ class Repository
25
24
  attr_reader :name
26
25
  def initialize(name)
27
26
  @name = name
28
- @refs = {}
29
27
  end
30
28
 
31
- def tree(ref, path); stub; end
32
- def tree_entry(ref, path); stub; end
33
- def rev_parse(rev); stub; end
34
- def rev_parse_oid_sync(ref); @refs[ref] || nik; end
35
- def blame(ref, path); stub; end
36
- def log(ref, path, limit); stub; end
37
- def refs; stub; end
38
- def tree_history(ref, path, count); stub; end
39
-
40
- def resolve_promise(blob)
41
- @deferred.resolve(blob)
29
+ def tree(ref, path); end
30
+ def tree_entry(ref, path); end
31
+ def rev_parse(rev); end
32
+ def rev_parse_oid(ref); self.class.refs[ref] || nil; end
33
+ def blame(ref, path); end
34
+ def log(ref, path, limit); end
35
+ def refs; end
36
+ def tree_history(ref, path, count); end
37
+
38
+ def self.stub_ref(name, ref)
39
+ self.refs[name] = ref
42
40
  end
43
41
 
44
- def stub_ref(name, ref)
45
- @refs[name] = ref
46
- end
47
-
48
- private
49
- def stub
50
- @deferred = When.defer
51
- @deferred.promise
42
+ def self.refs
43
+ @refs ||= {}
52
44
  end
53
45
  end
54
46
 
@@ -79,6 +71,9 @@ describe Dolt::RepoActions do
79
71
  before do
80
72
  @resolver = Resolver.new
81
73
  @actions = Dolt::RepoActions.new(@resolver)
74
+ @blob = FakeBlob.new
75
+ @tree = { :type => :tree }
76
+ @blame = { :type => :blame }
82
77
  end
83
78
 
84
79
  describe "#blob" do
@@ -88,20 +83,16 @@ describe Dolt::RepoActions do
88
83
  assert_equal ["gitorious"], @resolver.resolved.map(&:name)
89
84
  end
90
85
 
91
- it "yields path, blob, repo, ref and base_tree_url to block" do
92
- data = nil
93
- @actions.blob("gitorious", "babd120", "app") do |err, d|
94
- data = d
95
- end
96
-
97
- @resolver.resolved.last.resolve_promise("Blob")
86
+ it "returns path, blob, repo, ref and base_tree_url" do
87
+ Repository.any_instance.stubs(:rev_parse).returns(@blob)
88
+ data = @actions.blob("gitorious", "babd120", "app")
98
89
 
99
90
  assert_equal({
100
- :blob => "Blob",
101
- :repository_slug => "gitorious",
102
- :ref => "babd120",
103
- :path => "app"
104
- }, data)
91
+ :blob => @blob,
92
+ :repository_slug => "gitorious",
93
+ :ref => "babd120",
94
+ :path => "app"
95
+ }, data)
105
96
  end
106
97
  end
107
98
 
@@ -112,57 +103,46 @@ describe Dolt::RepoActions do
112
103
  assert_equal ["gitorious"], @resolver.resolved.map(&:name)
113
104
  end
114
105
 
115
- it "yields tree, repo and ref to block" do
116
- data = nil
117
- @actions.tree("gitorious", "babd120", "app") do |err, d|
118
- data = d
119
- end
120
-
106
+ it "returns tree, repo and ref" do
107
+ Repository.any_instance.stubs(:tree).returns(@tree)
108
+ data = @actions.tree("gitorious", "babd120", "app")
121
109
  repo = @resolver.resolved.last
122
- repo.resolve_promise "Tree"
123
-
124
- expected = {
125
- :tree => "Tree",
126
- :repository_slug => "gitorious",
127
- :ref => "babd120",
128
- :path => "app"
129
- }
130
- assert_equal expected, data
110
+
111
+ assert_equal({
112
+ :tree => @tree,
113
+ :repository_slug => "gitorious",
114
+ :ref => "babd120",
115
+ :path => "app"
116
+ }, data)
131
117
  end
132
118
  end
133
119
 
134
120
  describe "#tree_entry" do
135
- it "yields tree, repo and ref to block" do
136
- data = nil
137
- @actions.tree_entry("gitorious", "babd120", "") { |err, d| data = d }
121
+ it "returns tree, repo and ref" do
122
+ Repository.any_instance.stubs(:tree_entry).returns(@tree)
123
+ data = @actions.tree_entry("gitorious", "babd120", "")
138
124
  repo = @resolver.resolved.last
139
- repo.resolve_promise "Tree"
140
-
141
- expected = {
142
- :tree => "Tree",
143
- :repository_slug => "gitorious",
144
- :ref => "babd120",
145
- :path => "",
146
- :type => :tree
147
- }
148
- assert_equal expected, data
125
+
126
+ assert_equal({
127
+ :tree => @tree,
128
+ :repository_slug => "gitorious",
129
+ :ref => "babd120",
130
+ :path => "",
131
+ :type => :tree
132
+ }, data)
149
133
  end
150
134
 
151
- it "yields tree, repo and ref to block" do
152
- data = nil
153
- @actions.tree_entry("gitorious", "babd120", "Gemfile") { |err, d| data = d }
154
- repo = @resolver.resolved.last
155
- blob = FakeBlob.new
156
- repo.resolve_promise(blob)
157
-
158
- expected = {
159
- :blob => blob,
160
- :repository_slug => "gitorious",
161
- :ref => "babd120",
162
- :path => "Gemfile",
163
- :type => :blob
164
- }
165
- assert_equal expected, data
135
+ it "returns blob, repo and ref" do
136
+ Repository.any_instance.stubs(:tree_entry).returns(@blob)
137
+ data = @actions.tree_entry("gitorious", "babd120", "Gemfile")
138
+
139
+ assert_equal({
140
+ :blob => @blob,
141
+ :repository_slug => "gitorious",
142
+ :ref => "babd120",
143
+ :path => "Gemfile",
144
+ :type => :blob
145
+ }, data)
166
146
  end
167
147
  end
168
148
 
@@ -173,22 +153,16 @@ describe Dolt::RepoActions do
173
153
  assert_equal ["gitorious"], @resolver.resolved.map(&:name)
174
154
  end
175
155
 
176
- it "yields blame, repo and ref to block" do
177
- data = nil
178
- @actions.blame("gitorious", "babd120", "app") do |err, d|
179
- data = d
180
- end
156
+ it "returns blame, repo and ref" do
157
+ Repository.any_instance.stubs(:blame).returns(@blame)
158
+ data = @actions.blame("gitorious", "babd120", "app")
181
159
 
182
- repo = @resolver.resolved.last
183
- repo.resolve_promise "Blame"
184
-
185
- expected = {
186
- :blame => "Blame",
187
- :repository_slug => "gitorious",
188
- :ref => "babd120",
189
- :path => "app"
190
- }
191
- assert_equal expected, data
160
+ assert_equal({
161
+ :blame => @blame,
162
+ :repository_slug => "gitorious",
163
+ :ref => "babd120",
164
+ :path => "app"
165
+ }, data)
192
166
  end
193
167
  end
194
168
 
@@ -199,22 +173,16 @@ describe Dolt::RepoActions do
199
173
  assert_equal ["gitorious"], @resolver.resolved.map(&:name)
200
174
  end
201
175
 
202
- it "yields commits, repo and ref to block" do
203
- data = nil
204
- @actions.history("gitorious", "babd120", "app", 2) do |err, d|
205
- data = d
206
- end
176
+ it "returns commits, repo and ref" do
177
+ Repository.any_instance.stubs(:log).returns([])
178
+ data = @actions.history("gitorious", "babd120", "app", 2)
207
179
 
208
- repo = @resolver.resolved.last
209
- repo.resolve_promise "History"
210
-
211
- expected = {
212
- :commits => "History",
213
- :repository_slug => "gitorious",
214
- :ref => "babd120",
215
- :path => "app"
216
- }
217
- assert_equal expected, data
180
+ assert_equal({
181
+ :commits => [],
182
+ :repository_slug => "gitorious",
183
+ :ref => "babd120",
184
+ :path => "app"
185
+ }, data)
218
186
  end
219
187
  end
220
188
 
@@ -228,23 +196,20 @@ describe Dolt::RepoActions do
228
196
  "refs/heads/master"].map { |n| OpenStruct.new(:name => n) }
229
197
  end
230
198
 
231
- it "yields repositories, tags and heads" do
232
- data = nil
233
- @actions.refs("gitorious") { |err, d| data = d }
199
+ it "returns repositories, tags and heads" do
200
+ Repository.any_instance.stubs(:refs).returns(@refs)
201
+ Repository.stub_ref("refs/tags/v0.2.0", "a" * 40)
202
+ Repository.stub_ref("refs/tags/v0.2.1", "b" * 40)
203
+ Repository.stub_ref("refs/heads/libgit2", "c" * 40)
204
+ Repository.stub_ref("refs/heads/master", "d" * 40)
234
205
 
235
- repo = @resolver.resolved.last
236
- repo.stub_ref("refs/tags/v0.2.0", "a" * 40)
237
- repo.stub_ref("refs/tags/v0.2.1", "b" * 40)
238
- repo.stub_ref("refs/heads/libgit2", "c" * 40)
239
- repo.stub_ref("refs/heads/master", "d" * 40)
240
- repo.resolve_promise(@refs)
241
-
242
- expected = {
243
- :repository_slug => "gitorious",
244
- :heads => [["libgit2", "c" * 40], ["master", "d" * 40]],
245
- :tags => [["v0.2.1", "b" * 40], ["v0.2.0", "a" * 40]]
246
- }
247
- assert_equal expected, data
206
+ data = @actions.refs("gitorious")
207
+
208
+ assert_equal({
209
+ :repository_slug => "gitorious",
210
+ :heads => [["libgit2", "c" * 40], ["master", "d" * 40]],
211
+ :tags => [["v0.2.1", "b" * 40], ["v0.2.0", "a" * 40]]
212
+ }, data)
248
213
  end
249
214
  end
250
215
 
@@ -259,7 +224,7 @@ describe Dolt::RepoActions do
259
224
  :oid => "906d67b4f3e5de7364ba9b57d174d8998d53ced6",
260
225
  :author => { :name => "Christian Johansen",
261
226
  :email => "christian@cjohansen.no" },
262
- :summary => "Working Moron server for viewing blobs",
227
+ :summary => "Working Dolt server for viewing blobs",
263
228
  :date => Time.parse("Mon Sep 10 15:07:39 +0200 2012"),
264
229
  :message => ""
265
230
  }]
@@ -279,31 +244,24 @@ describe Dolt::RepoActions do
279
244
  }]
280
245
  end
281
246
 
282
- it "yields repository, path, ref and history" do
283
- data = nil
284
- @actions.tree_history("gitorious", "master", "", 1) { |err, d| data = d }
247
+ it "returns repository, path, ref and history" do
248
+ Repository.any_instance.stubs(:tree_history).returns(@tree)
249
+ data = @actions.tree_history("gitorious", "master", "", 1)
285
250
 
286
- repo = @resolver.resolved.last
287
- repo.resolve_promise(@tree)
288
-
289
- expected = {
290
- :repository_slug => "gitorious",
291
- :ref => "master",
292
- :path => "",
293
- :tree => @tree
294
- }
295
- assert_equal expected, data
251
+ assert_equal({
252
+ :repository_slug => "gitorious",
253
+ :ref => "master",
254
+ :path => "",
255
+ :tree => @tree
256
+ }, data)
296
257
  end
297
258
  end
298
259
 
299
260
  describe "repository meta data" do
300
- it "is yielded with other data to block" do
261
+ it "is returned with other data" do
301
262
  resolver = MetaResolver.new
302
263
  actions = Dolt::RepoActions.new(resolver)
303
- data = nil
304
- actions.blob("gitorious", "babd120", "app") { |err, d| data = d }
305
-
306
- resolver.resolved.last.resolve_promise("Blob")
264
+ data = actions.blob("gitorious", "babd120", "app")
307
265
 
308
266
  assert_equal "Meta data is cool", data[:repository_meta]
309
267
  end
@@ -312,8 +270,8 @@ describe Dolt::RepoActions do
312
270
  describe "#rev_parse_oid" do
313
271
  it "resolves ref oid" do
314
272
  oid = "a" * 40
315
- Repository.any_instance.stubs(:rev_parse_oid_sync).returns(oid)
273
+ Repository.any_instance.stubs(:rev_parse_oid).returns(oid)
316
274
  assert_equal oid, @actions.rev_parse_oid("gitorious", "master")
317
275
  end
318
- end
276
+ end
319
277
  end
data/test/test_helper.rb CHANGED
@@ -17,10 +17,9 @@
17
17
  #++
18
18
  require "bundler/setup"
19
19
  require "minitest/autorun"
20
- require "em/minitest/spec"
21
- require "eventmachine"
22
20
  require "libdolt/view"
23
21
  require "tiltout"
22
+ require "stringio"
24
23
 
25
24
  Bundler.require(:default, :test)
26
25
 
@@ -48,4 +47,25 @@ module Dolt
48
47
  renderer
49
48
  end
50
49
  end
50
+
51
+ class FakeProcess
52
+ attr_reader :stdin, :stdout, :stderr
53
+
54
+ def initialize(status, stdin = nil, stdout = nil, stderr = nil)
55
+ @status = status
56
+ @stdin = stream(stdin)
57
+ @stdout = stream(stdout)
58
+ @stderr = stream(stderr)
59
+ end
60
+
61
+ def success?; @status == 0; end
62
+ def exit_code; @status; end
63
+ def exception; Exception.new; end
64
+
65
+ private
66
+ def stream(ios)
67
+ return ios if !ios.nil? && !ios.is_a?(String)
68
+ StringIO.new(ios || "")
69
+ end
70
+ end
51
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libdolt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,72 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-11 00:00:00.000000000 Z
12
+ date: 2013-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: eventmachine
15
+ name: rugged
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - !ruby/object:Gem::Dependency
31
- name: when
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: em_pessimistic
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.1'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '0.1'
62
- - !ruby/object:Gem::Dependency
63
- name: em_rugged
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
19
+ - - '='
68
20
  - !ruby/object:Gem::Version
69
- version: '0.3'
21
+ version: 0.17.0.b6
70
22
  type: :runtime
71
23
  prerelease: false
72
24
  version_requirements: !ruby/object:Gem::Requirement
73
25
  none: false
74
26
  requirements:
75
- - - ~>
27
+ - - '='
76
28
  - !ruby/object:Gem::Version
77
- version: '0.3'
29
+ version: 0.17.0.b6
78
30
  - !ruby/object:Gem::Dependency
79
31
  name: tzinfo
80
32
  requirement: !ruby/object:Gem::Requirement
@@ -171,22 +123,6 @@ dependencies:
171
123
  - - ~>
172
124
  - !ruby/object:Gem::Version
173
125
  version: '2.0'
174
- - !ruby/object:Gem::Dependency
175
- name: em-minitest-spec
176
- requirement: !ruby/object:Gem::Requirement
177
- none: false
178
- requirements:
179
- - - ~>
180
- - !ruby/object:Gem::Version
181
- version: '1.1'
182
- type: :development
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
- requirements:
187
- - - ~>
188
- - !ruby/object:Gem::Version
189
- version: '1.1'
190
126
  - !ruby/object:Gem::Dependency
191
127
  name: rake
192
128
  requirement: !ruby/object:Gem::Requirement
@@ -265,9 +201,11 @@ files:
265
201
  - Readme.md
266
202
  - lib/libdolt.rb
267
203
  - lib/libdolt/disk_repo_resolver.rb
204
+ - lib/libdolt/git.rb
268
205
  - lib/libdolt/git/archiver.rb
269
206
  - lib/libdolt/git/blame.rb
270
207
  - lib/libdolt/git/commit.rb
208
+ - lib/libdolt/git/process.rb
271
209
  - lib/libdolt/git/repository.rb
272
210
  - lib/libdolt/git/submodule.rb
273
211
  - lib/libdolt/git/tree.rb