dolt 0.11.0 → 0.12.0

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/Gemfile.lock CHANGED
@@ -1,10 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dolt (0.11.0)
5
- async_sinatra (~> 1.0)
4
+ dolt (0.12.0)
6
5
  json (~> 1.5)
7
- libdolt (~> 0.15)
6
+ libdolt (~> 0.17)
8
7
  sinatra (~> 1.0)
9
8
  thin (~> 1.4)
10
9
  tiltout (~> 1.4)
@@ -12,59 +11,47 @@ PATH
12
11
  GEM
13
12
  remote: http://rubygems.org/
14
13
  specs:
15
- async_sinatra (1.0.0)
16
- rack (>= 1.4.1)
17
- sinatra (>= 1.3.2)
18
14
  daemons (1.1.9)
19
- em-minitest-spec (1.1.1)
20
- eventmachine
21
- em_pessimistic (0.1.2)
22
- eventmachine (~> 1.0)
23
- em_rugged (0.3.0)
24
- eventmachine (~> 1.0)
25
- rugged (= 0.17.0.b6)
26
- eventmachine (1.0.0)
15
+ eventmachine (1.0.3)
27
16
  github-markup (0.7.5)
28
17
  htmlentities (4.3.1)
29
- json (1.7.6)
30
- libdolt (0.15.0)
31
- em_pessimistic (~> 0.1)
32
- em_rugged (~> 0.3)
33
- eventmachine (~> 1.0)
18
+ json (1.8.0)
19
+ libdolt (0.17.0)
34
20
  htmlentities (~> 4.3)
35
21
  json (~> 1.7)
36
22
  makeup (~> 0.2)
37
23
  mime-types (~> 1.19)
24
+ rugged (= 0.17.0.b6)
38
25
  tzinfo (~> 0.3)
39
- when (~> 0)
40
26
  makeup (0.3.0)
41
27
  github-markup (~> 0.7)
42
28
  htmlentities (~> 4.3)
43
29
  pygments.rb (~> 0.2)
44
- mime-types (1.19)
30
+ mime-types (1.23)
45
31
  minitest (2.12.1)
46
32
  posix-spawn (0.3.6)
47
- pygments.rb (0.3.7)
33
+ pygments.rb (0.5.0)
48
34
  posix-spawn (~> 0.3.6)
49
35
  yajl-ruby (~> 1.1.0)
50
- rack (1.4.3)
51
- rack-protection (1.3.2)
36
+ rack (1.5.2)
37
+ rack-protection (1.5.0)
52
38
  rack
53
- rake (0.9.2.2)
39
+ rack-test (0.6.2)
40
+ rack (>= 1.0)
41
+ rake (0.9.6)
54
42
  rugged (0.17.0.b6)
55
- sinatra (1.3.3)
56
- rack (~> 1.3, >= 1.3.6)
57
- rack-protection (~> 1.2)
58
- tilt (~> 1.3, >= 1.3.3)
59
- thin (1.5.0)
43
+ sinatra (1.4.2)
44
+ rack (~> 1.5, >= 1.5.2)
45
+ rack-protection (~> 1.4)
46
+ tilt (~> 1.3, >= 1.3.4)
47
+ thin (1.5.1)
60
48
  daemons (>= 1.0.9)
61
49
  eventmachine (>= 0.12.6)
62
50
  rack (>= 1.0.0)
63
- tilt (1.3.3)
51
+ tilt (1.4.1)
64
52
  tiltout (1.4.0)
65
53
  tilt (~> 1.3)
66
- tzinfo (0.3.35)
67
- when (0.1.0)
54
+ tzinfo (0.3.37)
68
55
  yajl-ruby (1.1.0)
69
56
 
70
57
  PLATFORMS
@@ -72,6 +59,6 @@ PLATFORMS
72
59
 
73
60
  DEPENDENCIES
74
61
  dolt!
75
- em-minitest-spec (~> 1.1)
76
62
  minitest (~> 2.0)
63
+ rack-test (~> 0.6)
77
64
  rake (~> 0.9)
data/dolt.gemspec CHANGED
@@ -11,7 +11,7 @@ end
11
11
 
12
12
  Gem::Specification.new do |s|
13
13
  s.name = "dolt"
14
- s.version = "0.11.0"
14
+ s.version = "0.12.0"
15
15
  s.authors = ["Christian Johansen"]
16
16
  s.email = ["christian@gitorious.org"]
17
17
  s.homepage = "http://gitorious.org/gitorious/dolt"
@@ -20,16 +20,15 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.rubyforge_project = "dolt"
22
22
 
23
- s.add_dependency "libdolt", "~>0.15"
23
+ s.add_dependency "libdolt", "~>0.17"
24
24
  s.add_dependency "thin", "~>1.4"
25
25
  s.add_dependency "sinatra", "~>1.0"
26
- s.add_dependency "async_sinatra", "~>1.0"
27
26
  s.add_dependency "tiltout", "~>1.4"
28
27
  s.add_dependency "json", "~>1.5"
29
28
 
30
29
  s.add_development_dependency "minitest", "~> 2.0"
31
- s.add_development_dependency "em-minitest-spec", "~> 1.1"
32
30
  s.add_development_dependency "rake", "~> 0.9"
31
+ s.add_development_dependency "rack-test", "~> 0.6"
33
32
 
34
33
  s.files = GemSpecHelper.files(".") + GemSpecHelper.files("vendor/ui")
35
34
  s.test_files = `git ls-files -- {test}/*`.split("\n")
@@ -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
@@ -21,8 +21,6 @@ require "time"
21
21
  module Dolt
22
22
  module Sinatra
23
23
  module Actions
24
- # Built-in redirect seems to not work with Sinatra::Async, it throws
25
- # an error.
26
24
  def redirect(url)
27
25
  response.status = 302
28
26
  response["Location"] = url
@@ -30,8 +28,9 @@ module Dolt
30
28
  end
31
29
 
32
30
  def error(error, repo, ref)
31
+ template = error.class.to_s == "Rugged::IndexerError" ? :"404" : :"500"
33
32
  add_headers(response)
34
- body(renderer.render(:"500", {
33
+ body(renderer.render(template, {
35
34
  :error => error,
36
35
  :repository_slug => repo,
37
36
  :ref => ref
@@ -70,14 +69,14 @@ module Dolt
70
69
  redirect(blob_url(repo, oid, path)) and return
71
70
  end
72
71
 
73
- actions.blob(repo, u(ref), path) do |err, data|
74
- next error(err, repo, ref) if !err.nil?
75
- blob = data[:blob]
76
- next redirect(tree_url(repo, ref, path)) if blob.class.to_s !~ /\bBlob/
77
- add_headers(response, options.merge(:ref => ref))
78
- tpl_options = options[:template_options] || {}
79
- body(renderer.render(options[:template], data, tpl_options))
80
- end
72
+ data = actions.blob(repo, u(ref), path)
73
+ blob = data[:blob]
74
+ return redirect(tree_url(repo, ref, path)) if blob.class.to_s !~ /\bBlob/
75
+ add_headers(response, options.merge(:ref => ref))
76
+ tpl_options = options[:template_options] || {}
77
+ body(renderer.render(options[:template], data, tpl_options))
78
+ rescue Exception => err
79
+ error(err, repo, ref)
81
80
  end
82
81
 
83
82
  def tree(repo, ref, path)
@@ -85,17 +84,13 @@ module Dolt
85
84
  redirect(tree_url(repo, oid, path)) and return
86
85
  end
87
86
 
88
- actions.tree(repo, u(ref), path) do |err, data|
89
- begin
90
- next error(err, repo, ref) if !err.nil?
91
- tree = data[:tree]
92
- next redirect(blob_url(repo, ref, path)) if tree.class.to_s !~ /\bTree/
93
- add_headers(response, :ref => ref)
94
- body(renderer.render(:tree, data))
95
- rescue Exception => err
96
- error(err, repo, ref)
97
- end
98
- end
87
+ data = actions.tree(repo, u(ref), path)
88
+ tree = data[:tree]
89
+ return redirect(blob_url(repo, ref, path)) if tree.class.to_s !~ /\bTree/
90
+ add_headers(response, :ref => ref)
91
+ body(renderer.render(:tree, data))
92
+ rescue Exception => err
93
+ error(err, repo, ref)
99
94
  end
100
95
 
101
96
  def tree_entry(repo, ref, path)
@@ -103,15 +98,11 @@ module Dolt
103
98
  redirect(tree_entry_url(repo, oid, path)) and return
104
99
  end
105
100
 
106
- actions.tree_entry(repo, u(ref), path) do |err, data|
107
- begin
108
- next error(err, repo, ref) if !err.nil?
109
- add_headers(response, :ref => ref)
110
- body(renderer.render(data.key?(:tree) ? :tree : :blob, data))
111
- rescue Exception => err
112
- error(err, repo, ref)
113
- end
114
- end
101
+ data = actions.tree_entry(repo, u(ref), path)
102
+ add_headers(response, :ref => ref)
103
+ body(renderer.render(data.key?(:tree) ? :tree : :blob, data))
104
+ rescue Exception => err
105
+ error(err, repo, ref)
115
106
  end
116
107
 
117
108
  def blame(repo, ref, path)
@@ -119,11 +110,11 @@ module Dolt
119
110
  redirect(blame_url(repo, oid, path)) and return
120
111
  end
121
112
 
122
- actions.blame(repo, u(ref), path) do |err, data|
123
- next error(err, repo, ref) if !err.nil?
124
- add_headers(response, :ref => ref)
125
- body(renderer.render(:blame, data))
126
- end
113
+ data = actions.blame(repo, u(ref), path)
114
+ add_headers(response, :ref => ref)
115
+ body(renderer.render(:blame, data))
116
+ rescue Exception => err
117
+ error(err, repo, ref)
127
118
  end
128
119
 
129
120
  def history(repo, ref, path, count)
@@ -131,19 +122,19 @@ module Dolt
131
122
  redirect(history_url(repo, oid, path)) and return
132
123
  end
133
124
 
134
- actions.history(repo, u(ref), path, count) do |err, data|
135
- next error(err, repo, ref) if !err.nil?
136
- add_headers(response, :ref => ref)
137
- body(renderer.render(:commits, data))
138
- end
125
+ data = actions.history(repo, u(ref), path, count)
126
+ add_headers(response, :ref => ref)
127
+ body(renderer.render(:commits, data))
128
+ rescue Exception => err
129
+ error(err, repo, ref)
139
130
  end
140
131
 
141
132
  def refs(repo)
142
- actions.refs(repo) do |err, data|
143
- next error(err, repo, ref) if !err.nil?
144
- add_headers(response, :content_type => "application/json")
145
- body(renderer.render(:refs, data, :layout => nil))
146
- end
133
+ data = actions.refs(repo)
134
+ add_headers(response, :content_type => "application/json")
135
+ body(renderer.render(:refs, data, :layout => nil))
136
+ rescue Exception => err
137
+ error(err, repo, nil)
147
138
  end
148
139
 
149
140
  def tree_history(repo, ref, path, count = 1)
@@ -151,18 +142,11 @@ module Dolt
151
142
  redirect(tree_history_url(repo, oid, path)) and return
152
143
  end
153
144
 
154
- actions.tree_history(repo, u(ref), path, count) do |err, data|
155
- begin
156
- if !err.nil?
157
- error(err, repo, ref)
158
- else
159
- add_headers(response, :content_type => "application/json", :ref => ref)
160
- body(renderer.render(:tree_history, data, :layout => nil))
161
- end
162
- rescue Exception => err
163
- error(err, repo, ref)
164
- end
165
- end
145
+ data = actions.tree_history(repo, u(ref), path, count)
146
+ add_headers(response, :content_type => "application/json", :ref => ref)
147
+ body(renderer.render(:tree_history, data, :layout => nil))
148
+ rescue Exception => err
149
+ error(err, repo, ref)
166
150
  end
167
151
 
168
152
  def resolve_repository(repo)
@@ -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
@@ -16,7 +16,6 @@
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  #++
18
18
  require "sinatra/base"
19
- require "sinatra/async"
20
19
  require "dolt/sinatra/actions"
21
20
 
22
21
  module Dolt
@@ -24,7 +23,6 @@ module Dolt
24
23
  class Base < ::Sinatra::Base
25
24
  attr_reader :actions, :renderer
26
25
  include Dolt::Sinatra::Actions
27
- register ::Sinatra::Async
28
26
 
29
27
  def initialize(actions, renderer)
30
28
  @actions = actions
@@ -27,61 +27,61 @@ module Dolt
27
27
  include Dolt::View::Blob
28
28
  include Dolt::View::Tree
29
29
 
30
- aget "/" do
30
+ get "/" do
31
31
  response["Content-Type"] = "text/html"
32
32
  body(renderer.render(:index, { :repositories => actions.repositories }))
33
33
  end
34
34
 
35
- aget "/*/tree/*:*" do
35
+ get "/*/tree/*:*" do
36
36
  repo, ref, path = params[:splat]
37
37
  tree(repo, ref, path)
38
38
  end
39
39
 
40
- aget "/*/tree/*" do
40
+ get "/*/tree/*" do
41
41
  force_ref(params[:splat], "tree", "master")
42
42
  end
43
43
 
44
- aget "/*/blob/*:*" do
44
+ get "/*/blob/*:*" do
45
45
  repo, ref, path = params[:splat]
46
46
  blob(repo, ref, path)
47
47
  end
48
48
 
49
- aget "/*/blob/*" do
49
+ get "/*/blob/*" do
50
50
  force_ref(params[:splat], "blob", "master")
51
51
  end
52
52
 
53
- aget "/*/raw/*:*" do
53
+ get "/*/raw/*:*" do
54
54
  repo, ref, path = params[:splat]
55
55
  raw(repo, ref, path)
56
56
  end
57
57
 
58
- aget "/*/raw/*" do
58
+ get "/*/raw/*" do
59
59
  force_ref(params[:splat], "raw", "master")
60
60
  end
61
61
 
62
- aget "/*/blame/*:*" do
62
+ get "/*/blame/*:*" do
63
63
  repo, ref, path = params[:splat]
64
64
  blame(repo, ref, path)
65
65
  end
66
66
 
67
- aget "/*/blame/*" do
67
+ get "/*/blame/*" do
68
68
  force_ref(params[:splat], "blame", "master")
69
69
  end
70
70
 
71
- aget "/*/history/*:*" do
71
+ get "/*/history/*:*" do
72
72
  repo, ref, path = params[:splat]
73
73
  history(repo, ref, path, (params[:commit_count] || 20).to_i)
74
74
  end
75
75
 
76
- aget "/*/history/*" do
76
+ get "/*/history/*" do
77
77
  force_ref(params[:splat], "history", "master")
78
78
  end
79
79
 
80
- aget "/*/refs" do
80
+ get "/*/refs" do
81
81
  refs(params[:splat].first)
82
82
  end
83
83
 
84
- aget "/*/tree_history/*:*" do
84
+ get "/*/tree_history/*:*" do
85
85
  repo, ref, path = params[:splat]
86
86
  tree_history(repo, ref, path)
87
87
  end
@@ -33,60 +33,60 @@ module Dolt
33
33
  super(actions, renderer)
34
34
  end
35
35
 
36
- aget "/" do
36
+ get "/" do
37
37
  redirect("/tree/master:")
38
38
  end
39
39
 
40
- aget "/tree/*:*" do
40
+ get "/tree/*:*" do
41
41
  ref, path = params[:splat]
42
42
  tree(repo, ref, path)
43
43
  end
44
44
 
45
- aget "/tree/*" do
45
+ get "/tree/*" do
46
46
  force_ref(params[:splat], "tree", "master")
47
47
  end
48
48
 
49
- aget "/blob/*:*" do
49
+ get "/blob/*:*" do
50
50
  ref, path = params[:splat]
51
51
  blob(repo, ref, path)
52
52
  end
53
53
 
54
- aget "/blob/*" do
54
+ get "/blob/*" do
55
55
  force_ref(params[:splat], "blob", "master")
56
56
  end
57
57
 
58
- aget "/raw/*:*" do
58
+ get "/raw/*:*" do
59
59
  ref, path = params[:splat]
60
60
  raw(repo, ref, path)
61
61
  end
62
62
 
63
- aget "/raw/*" do
63
+ get "/raw/*" do
64
64
  force_ref(params[:splat], "raw", "master")
65
65
  end
66
66
 
67
- aget "/blame/*:*" do
67
+ get "/blame/*:*" do
68
68
  ref, path = params[:splat]
69
69
  blame(repo, ref, path)
70
70
  end
71
71
 
72
- aget "/blame/*" do
72
+ get "/blame/*" do
73
73
  force_ref(params[:splat], "blame", "master")
74
74
  end
75
75
 
76
- aget "/history/*:*" do
76
+ get "/history/*:*" do
77
77
  ref, path = params[:splat]
78
78
  history(repo, ref, path, (params[:commit_count] || 20).to_i)
79
79
  end
80
80
 
81
- aget "/history/*" do
81
+ get "/history/*" do
82
82
  force_ref(params[:splat], "blame", "master")
83
83
  end
84
84
 
85
- aget "/refs" do
85
+ get "/refs" do
86
86
  refs(repo)
87
87
  end
88
88
 
89
- aget "/tree_history/*:*" do
89
+ get "/tree_history/*:*" do
90
90
  ref, path = params[:splat]
91
91
  tree_history(repo, ref, path)
92
92
  end
@@ -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
@@ -18,142 +18,11 @@
18
18
  require "test_helper"
19
19
  require "dolt/sinatra/actions"
20
20
 
21
- class DummySinatraApp
22
- include Dolt::Sinatra::Actions
23
- attr_reader :actions, :renderer
24
-
25
- def initialize(actions, renderer)
26
- @actions = actions
27
- @renderer = renderer
28
- end
29
-
30
- def body(str = nil)
31
- @body = str if !str.nil?
32
- @body
33
- end
34
-
35
- def response
36
- if !@response
37
- @response = {}
38
- def @response.status; @status; end
39
- def @response.status=(status); @status = status; end
40
- end
41
- @response
42
- end
43
-
44
- def tree_url(repo, ref, path)
45
- "/#{repo}/tree/#{ref}:#{path}"
46
- end
47
-
48
- def blob_url(repo, ref, path)
49
- "/#{repo}/blob/#{ref}:#{path}"
50
- end
51
-
52
- def tree_entry_url(repo, ref, path)
53
- "/#{repo}/source/#{ref}:#{path}"
54
- end
55
-
56
- def blame_url(repo, ref, path)
57
- "/#{repo}/blame/#{ref}:#{path}"
58
- end
59
-
60
- def history_url(repo, ref, path)
61
- "/#{repo}/history/#{ref}:#{path}"
62
- end
63
-
64
- def tree_history_url(repo, ref, path)
65
- "/#{repo}/tree_history/#{ref}:#{path}"
66
- end
67
-
68
- def raw_url(repo, ref, path)
69
- "/#{repo}/raw/#{ref}:#{path}"
70
- end
71
- end
72
-
73
- class RedirectingDummySinatraApp < DummySinatraApp
74
- def redirect_refs?; true; end
75
- end
76
-
77
- class Renderer
78
- def initialize(body = ""); @body = body; end
79
-
80
- def render(action, data, options = {})
81
- @action = action
82
- @data = data
83
- "#{action}:#@body"
84
- end
85
- end
86
-
87
- class BlobStub
88
- def is_a?(type)
89
- type == Rugged::Blob
90
- end
91
- end
92
-
93
- class TreeStub
94
- def is_a?(type)
95
- type == Rugged::Tree
96
- end
97
- end
98
-
99
- class Actions
100
- attr_reader :repo, :ref, :path
101
-
102
- def initialize(response)
103
- @response = response
104
- end
105
-
106
- def blob(repo, ref, path, &block)
107
- respond(:blob, repo, ref, path, &block)
108
- end
109
-
110
- def tree(repo, ref, path, &block)
111
- respond(:tree, repo, ref, path, &block)
112
- end
113
-
114
- def tree_entry(repo, ref, path, &block)
115
- respond(:tree_entry, repo, ref, path, &block)
116
- end
117
-
118
- def raw(repo, ref, path, &block)
119
- respond(:raw, repo, ref, path, &block)
120
- end
121
-
122
- def blame(repo, ref, path, &block)
123
- respond(:blame, repo, ref, path, &block)
124
- end
125
-
126
- def history(repo, ref, path, limit, &block)
127
- respond(:history, repo, ref, path, &block)
128
- end
129
-
130
- def refs(repo, &block)
131
- respond(:refs, repo, nil, nil, &block)
132
- end
133
-
134
- def tree_history(repo, ref, path, count, &block)
135
- respond(:tree_history, repo, ref, path, &block)
136
- end
137
-
138
- def respond(type, repo, ref, path, &block)
139
- @repo = repo
140
- @ref = ref
141
- @path = path
142
- data = { :ref => ref, :repository => repo }
143
- data[type != :tree_entry ? type : (@response.class.to_s =~ /Tree/ ? :tree : :blob)] = @response
144
- block.call(nil, data)
145
- end
146
-
147
- def rev_parse_oid(repo, ref)
148
- "a" * 40
149
- end
150
- end
151
-
152
21
  describe Dolt::Sinatra::Actions do
153
22
  describe "#blob" do
154
23
  it "delegates to actions" do
155
- actions = Actions.new(BlobStub.new)
156
- app = DummySinatraApp.new(actions, Renderer.new)
24
+ actions = Test::Actions.new(Stub::Blob.new)
25
+ app = Test::SinatraApp.new(actions, Test::Renderer.new)
157
26
  app.blob("gitorious", "master", "app/models/repository.rb")
158
27
 
159
28
  assert_equal "gitorious", actions.repo
@@ -162,7 +31,7 @@ describe Dolt::Sinatra::Actions do
162
31
  end
163
32
 
164
33
  it "renders the blob template as html" do
165
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
34
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
166
35
  app.blob("gitorious", "master", "app/models/repository.rb")
167
36
 
168
37
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -170,7 +39,7 @@ describe Dolt::Sinatra::Actions do
170
39
  end
171
40
 
172
41
  it "redirects tree views to tree action" do
173
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
42
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
174
43
  app.blob("gitorious", "master", "app/models")
175
44
 
176
45
  assert_equal 302, app.response.status
@@ -179,15 +48,15 @@ describe Dolt::Sinatra::Actions do
179
48
  end
180
49
 
181
50
  it "unescapes ref" do
182
- actions = Actions.new(BlobStub.new)
183
- app = DummySinatraApp.new(actions, Renderer.new("Blob"))
51
+ actions = Test::Actions.new(Stub::Blob.new)
52
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Blob"))
184
53
  app.blob("gitorious", "issue-%23221", "app/my documents")
185
54
 
186
55
  assert_equal "issue-#221", actions.ref
187
56
  end
188
57
 
189
58
  it "does not redirect ref to oid by default" do
190
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
59
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
191
60
  app.blob("gitorious", "master", "lib/gitorious.rb")
192
61
 
193
62
  location = app.response["Location"]
@@ -195,7 +64,7 @@ describe Dolt::Sinatra::Actions do
195
64
  end
196
65
 
197
66
  it "redirects ref to oid if configured so" do
198
- app = RedirectingDummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
67
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
199
68
  app.blob("gitorious", "master", "lib/gitorious.rb")
200
69
 
201
70
  location = app.response["Location"]
@@ -207,8 +76,8 @@ describe Dolt::Sinatra::Actions do
207
76
 
208
77
  describe "#tree" do
209
78
  it "delegates to actions" do
210
- actions = Actions.new(TreeStub.new)
211
- app = DummySinatraApp.new(actions, Renderer.new)
79
+ actions = Test::Actions.new(Stub::Tree.new)
80
+ app = Test::SinatraApp.new(actions, Test::Renderer.new)
212
81
  app.tree("gitorious", "master", "app/models")
213
82
 
214
83
  assert_equal "gitorious", actions.repo
@@ -217,7 +86,7 @@ describe Dolt::Sinatra::Actions do
217
86
  end
218
87
 
219
88
  it "renders the tree template as html" do
220
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
89
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
221
90
  app.tree("gitorious", "master", "app/models")
222
91
 
223
92
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -225,7 +94,7 @@ describe Dolt::Sinatra::Actions do
225
94
  end
226
95
 
227
96
  it "redirects blob views to blob action" do
228
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Tree"))
97
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Tree"))
229
98
  app.tree("gitorious", "master", "app/models/repository.rb")
230
99
 
231
100
  location = app.response["Location"]
@@ -235,21 +104,21 @@ describe Dolt::Sinatra::Actions do
235
104
  end
236
105
 
237
106
  it "sets X-UA-Compatible header" do
238
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
107
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
239
108
  app.tree("gitorious", "master", "app/models")
240
109
 
241
110
  assert_equal "IE=edge", app.response["X-UA-Compatible"]
242
111
  end
243
112
 
244
113
  it "does not set cache-control header for head ref" do
245
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
114
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
246
115
  app.tree("gitorious", "master", "app/models")
247
116
 
248
117
  assert !app.response.key?("Cache-Control")
249
118
  end
250
119
 
251
120
  it "sets cache headers for full oid ref" do
252
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
121
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
253
122
  app.tree("gitorious", "a" * 40, "app/models")
254
123
 
255
124
  assert_equal "max-age=315360000, public", app.response["Cache-Control"]
@@ -257,15 +126,15 @@ describe Dolt::Sinatra::Actions do
257
126
  end
258
127
 
259
128
  it "unescapes ref" do
260
- actions = Actions.new(TreeStub.new)
261
- app = DummySinatraApp.new(actions, Renderer.new("Tree"))
129
+ actions = Test::Actions.new(Stub::Tree.new)
130
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Tree"))
262
131
  app.tree("gitorious", "issue-%23221", "app")
263
132
 
264
133
  assert_equal "issue-#221", actions.ref
265
134
  end
266
135
 
267
136
  it "redirects ref to oid if configured so" do
268
- app = RedirectingDummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
137
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
269
138
  app.tree("gitorious", "master", "lib")
270
139
 
271
140
  assert_equal "/gitorious/tree/#{'a' * 40}:lib", app.response["Location"]
@@ -274,7 +143,7 @@ describe Dolt::Sinatra::Actions do
274
143
 
275
144
  describe "#tree_entry" do
276
145
  it "renders trees with the tree template as html" do
277
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
146
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
278
147
  app.tree_entry("gitorious", "master", "app/models")
279
148
 
280
149
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -282,7 +151,7 @@ describe Dolt::Sinatra::Actions do
282
151
  end
283
152
 
284
153
  it "renders trees with the tree template as html" do
285
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
154
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
286
155
  app.tree_entry("gitorious", "master", "app/models")
287
156
 
288
157
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -290,15 +159,15 @@ describe Dolt::Sinatra::Actions do
290
159
  end
291
160
 
292
161
  it "unescapes ref" do
293
- actions = Actions.new(TreeStub.new)
294
- app = DummySinatraApp.new(actions, Renderer.new("Tree"))
162
+ actions = Test::Actions.new(Stub::Tree.new)
163
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Tree"))
295
164
  app.tree_entry("gitorious", "issue-%23221", "app")
296
165
 
297
166
  assert_equal "issue-#221", actions.ref
298
167
  end
299
168
 
300
169
  it "redirects ref to oid if configured so" do
301
- app = RedirectingDummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
170
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
302
171
  app.tree_entry("gitorious", "master", "lib")
303
172
 
304
173
  assert_equal "/gitorious/source/#{'a' * 40}:lib", app.response["Location"]
@@ -307,8 +176,8 @@ describe Dolt::Sinatra::Actions do
307
176
 
308
177
  describe "#raw" do
309
178
  it "delegates to actions" do
310
- actions = Actions.new(BlobStub.new)
311
- app = DummySinatraApp.new(actions, Renderer.new)
179
+ actions = Test::Actions.new(Stub::Blob.new)
180
+ app = Test::SinatraApp.new(actions, Test::Renderer.new)
312
181
  app.raw("gitorious", "master", "app/models/repository.rb")
313
182
 
314
183
  assert_equal "gitorious", actions.repo
@@ -317,7 +186,7 @@ describe Dolt::Sinatra::Actions do
317
186
  end
318
187
 
319
188
  it "renders the raw template as text" do
320
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Text"))
189
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Text"))
321
190
  app.raw("gitorious", "master", "app/models/repository.rb")
322
191
 
323
192
  assert_equal "text/plain", app.response["Content-Type"]
@@ -325,7 +194,7 @@ describe Dolt::Sinatra::Actions do
325
194
  end
326
195
 
327
196
  it "redirects tree views to tree action" do
328
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
197
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
329
198
  app.raw("gitorious", "master", "app/models")
330
199
 
331
200
  location = app.response["Location"]
@@ -335,15 +204,15 @@ describe Dolt::Sinatra::Actions do
335
204
  end
336
205
 
337
206
  it "unescapes ref" do
338
- actions = Actions.new(BlobStub.new)
339
- app = DummySinatraApp.new(actions, Renderer.new("Blob"))
207
+ actions = Test::Actions.new(Stub::Blob.new)
208
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Blob"))
340
209
  app.raw("gitorious", "issue-%23221", "app/models/repository.rb")
341
210
 
342
211
  assert_equal "issue-#221", actions.ref
343
212
  end
344
213
 
345
214
  it "redirects ref to oid if configured so" do
346
- app = RedirectingDummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
215
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
347
216
  app.raw("gitorious", "master", "lib/gitorious.rb")
348
217
 
349
218
  assert_equal "/gitorious/raw/#{'a' * 40}:lib/gitorious.rb", app.response["Location"]
@@ -352,8 +221,8 @@ describe Dolt::Sinatra::Actions do
352
221
 
353
222
  describe "#blame" do
354
223
  it "delegates to actions" do
355
- actions = Actions.new(BlobStub.new)
356
- app = DummySinatraApp.new(actions, Renderer.new)
224
+ actions = Test::Actions.new(Stub::Blob.new)
225
+ app = Test::SinatraApp.new(actions, Test::Renderer.new)
357
226
  app.blame("gitorious", "master", "app/models/repository.rb")
358
227
 
359
228
  assert_equal "gitorious", actions.repo
@@ -362,7 +231,7 @@ describe Dolt::Sinatra::Actions do
362
231
  end
363
232
 
364
233
  it "renders the blame template as html" do
365
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Text"))
234
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Text"))
366
235
  app.blame("gitorious", "master", "app/models/repository.rb")
367
236
 
368
237
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -370,15 +239,15 @@ describe Dolt::Sinatra::Actions do
370
239
  end
371
240
 
372
241
  it "unescapes ref" do
373
- actions = Actions.new(BlobStub.new)
374
- app = DummySinatraApp.new(actions, Renderer.new("Blob"))
242
+ actions = Test::Actions.new(Stub::Blob.new)
243
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Blob"))
375
244
  app.blame("gitorious", "issue-%23221", "app/models/repository.rb")
376
245
 
377
246
  assert_equal "issue-#221", actions.ref
378
247
  end
379
248
 
380
249
  it "redirects ref to oid if configured so" do
381
- app = RedirectingDummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
250
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
382
251
  app.blame("gitorious", "master", "lib/gitorious.rb")
383
252
 
384
253
  assert_equal "/gitorious/blame/#{'a' * 40}:lib/gitorious.rb", app.response["Location"]
@@ -387,8 +256,8 @@ describe Dolt::Sinatra::Actions do
387
256
 
388
257
  describe "#history" do
389
258
  it "delegates to actions" do
390
- actions = Actions.new(BlobStub.new)
391
- app = DummySinatraApp.new(actions, Renderer.new)
259
+ actions = Test::Actions.new(Stub::Blob.new)
260
+ app = Test::SinatraApp.new(actions, Test::Renderer.new)
392
261
  app.history("gitorious", "master", "app/models/repository.rb", 10)
393
262
 
394
263
  assert_equal "gitorious", actions.repo
@@ -397,7 +266,7 @@ describe Dolt::Sinatra::Actions do
397
266
  end
398
267
 
399
268
  it "renders the commits template as html" do
400
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Text"))
269
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Text"))
401
270
  app.history("gitorious", "master", "app/models/repository.rb", 10)
402
271
 
403
272
  assert_equal "text/html; charset=utf-8", app.response["Content-Type"]
@@ -405,15 +274,15 @@ describe Dolt::Sinatra::Actions do
405
274
  end
406
275
 
407
276
  it "unescapes ref" do
408
- actions = Actions.new(BlobStub.new)
409
- app = DummySinatraApp.new(actions, Renderer.new("Blob"))
277
+ actions = Test::Actions.new(Stub::Blob.new)
278
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Blob"))
410
279
  app.history("gitorious", "issue-%23221", "lib/gitorious.rb", 10)
411
280
 
412
281
  assert_equal "issue-#221", actions.ref
413
282
  end
414
283
 
415
284
  it "redirects ref to oid if configured so" do
416
- app = RedirectingDummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("Blob"))
285
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("Blob"))
417
286
  app.history("gitorious", "master", "lib/gitorious.rb", 10)
418
287
 
419
288
  assert_equal "/gitorious/history/#{'a' * 40}:lib/gitorious.rb", app.response["Location"]
@@ -422,7 +291,7 @@ describe Dolt::Sinatra::Actions do
422
291
 
423
292
  describe "#refs" do
424
293
  it "renders the refs template as json" do
425
- app = DummySinatraApp.new(Actions.new(BlobStub.new), Renderer.new("JSON"))
294
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Blob.new), Test::Renderer.new("JSON"))
426
295
  app.refs("gitorious")
427
296
 
428
297
  assert_equal "application/json", app.response["Content-Type"]
@@ -432,7 +301,7 @@ describe Dolt::Sinatra::Actions do
432
301
 
433
302
  describe "#tree_history" do
434
303
  it "renders the tree_history template as json" do
435
- app = DummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("JSON"))
304
+ app = Test::SinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("JSON"))
436
305
  app.tree_history("gitorious", "master", "", 1)
437
306
 
438
307
  assert_equal "application/json", app.response["Content-Type"]
@@ -440,15 +309,15 @@ describe Dolt::Sinatra::Actions do
440
309
  end
441
310
 
442
311
  it "unescapes ref" do
443
- actions = Actions.new(TreeStub.new)
444
- app = DummySinatraApp.new(actions, Renderer.new("Tree"))
312
+ actions = Test::Actions.new(Stub::Tree.new)
313
+ app = Test::SinatraApp.new(actions, Test::Renderer.new("Tree"))
445
314
  app.tree_history("gitorious", "issue-%23221", "app/models")
446
315
 
447
316
  assert_equal "issue-#221", actions.ref
448
317
  end
449
318
 
450
319
  it "redirects ref to oid if configured so" do
451
- app = RedirectingDummySinatraApp.new(Actions.new(TreeStub.new), Renderer.new("Tree"))
320
+ app = Test::RedirectingSinatraApp.new(Test::Actions.new(Stub::Tree.new), Test::Renderer.new("Tree"))
452
321
  app.tree_history("gitorious", "master", "lib", 10)
453
322
 
454
323
  assert_equal "/gitorious/tree_history/#{'a' * 40}:lib", app.response["Location"]
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ #--
3
+ # Copyright (C) 2013 Gitorious AS
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Affero General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Affero General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ #++
18
+ require "test_helper"
19
+ require "rack/test"
20
+ require "pathname"
21
+ require "tiltout"
22
+ require "libdolt"
23
+ require "dolt/sinatra/multi_repo_browser"
24
+
25
+ ENV["RACK_ENV"] = "test"
26
+
27
+ describe Dolt::Sinatra::MultiRepoBrowser do
28
+ include Rack::Test::Methods
29
+
30
+ def app
31
+ actions = Test::Actions.new(Stub::Blob.new)
32
+ def actions.repositories; []; end
33
+ view = Tiltout.new(Dolt.template_dir)
34
+ Dolt::Sinatra::MultiRepoBrowser.new(actions, view)
35
+ end
36
+
37
+ it "serves the index" do
38
+ get "/"
39
+ assert_equal 200, last_response.status
40
+ end
41
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ #--
3
+ # Copyright (C) 2013 Gitorious AS
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Affero General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Affero General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ #++
18
+ require "test_helper"
19
+ require "rack/test"
20
+ require "pathname"
21
+ require "tiltout"
22
+ require "libdolt"
23
+ require "dolt/sinatra/single_repo_browser"
24
+
25
+ ENV["RACK_ENV"] = "test"
26
+
27
+ describe Dolt::Sinatra::SingleRepoBrowser do
28
+ include Rack::Test::Methods
29
+
30
+ def app
31
+ dir = Pathname("../../../").realpath.to_s
32
+ actions = Test::Actions.new(Stub::Blob.new)
33
+ view = Tiltout.new(Dolt.template_dir)
34
+ Dolt::Sinatra::SingleRepoBrowser.new(dir, actions, view)
35
+ end
36
+
37
+ it "serves the index" do
38
+ get "/"
39
+
40
+ assert_equal 302, last_response.status
41
+ end
42
+ end
data/test/test_helper.rb CHANGED
@@ -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,9 +17,8 @@
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"
21
+ require "dolt/sinatra/actions"
23
22
  require "tiltout"
24
23
 
25
24
  Bundler.require(:default, :test)
@@ -36,15 +35,150 @@ module Dolt
36
35
  root = File.join(File.dirname(__FILE__), "..", "views")
37
36
  renderer = Tiltout.new(root, options)
38
37
  renderer.helper(helpers || [Dolt::View::MultiRepository,
39
- Dolt::View::Object,
40
- Dolt::View::Blob,
41
- Dolt::View::Tree,
42
- Dolt::View::Blame,
43
- Dolt::View::SyntaxHighlight,
44
- Dolt::View::Commit,
45
- Dolt::View::Gravatar,
46
- Dolt::View::Breadcrumb])
38
+ Dolt::View::Object,
39
+ Dolt::View::Blob,
40
+ Dolt::View::Tree,
41
+ Dolt::View::Blame,
42
+ Dolt::View::SyntaxHighlight,
43
+ Dolt::View::Commit,
44
+ Dolt::View::Gravatar,
45
+ Dolt::View::Breadcrumb])
47
46
  renderer
48
47
  end
49
48
  end
50
49
  end
50
+
51
+ module Stub
52
+ class Blob
53
+ def is_a?(type)
54
+ type == Rugged::Blob
55
+ end
56
+ end
57
+
58
+ class Tree
59
+ def is_a?(type)
60
+ type == Rugged::Tree
61
+ end
62
+ end
63
+ end
64
+
65
+ module Test
66
+ class SinatraApp
67
+ include Dolt::Sinatra::Actions
68
+ attr_reader :actions, :renderer
69
+
70
+ def initialize(actions, renderer)
71
+ @actions = actions
72
+ @renderer = renderer
73
+ end
74
+
75
+ def body(str = nil)
76
+ @body = str if !str.nil?
77
+ @body
78
+ end
79
+
80
+ def response
81
+ if !@response
82
+ @response = {}
83
+ def @response.status; @status; end
84
+ def @response.status=(status); @status = status; end
85
+ end
86
+ @response
87
+ end
88
+
89
+ def tree_url(repo, ref, path)
90
+ "/#{repo}/tree/#{ref}:#{path}"
91
+ end
92
+
93
+ def blob_url(repo, ref, path)
94
+ "/#{repo}/blob/#{ref}:#{path}"
95
+ end
96
+
97
+ def tree_entry_url(repo, ref, path)
98
+ "/#{repo}/source/#{ref}:#{path}"
99
+ end
100
+
101
+ def blame_url(repo, ref, path)
102
+ "/#{repo}/blame/#{ref}:#{path}"
103
+ end
104
+
105
+ def history_url(repo, ref, path)
106
+ "/#{repo}/history/#{ref}:#{path}"
107
+ end
108
+
109
+ def tree_history_url(repo, ref, path)
110
+ "/#{repo}/tree_history/#{ref}:#{path}"
111
+ end
112
+
113
+ def raw_url(repo, ref, path)
114
+ "/#{repo}/raw/#{ref}:#{path}"
115
+ end
116
+ end
117
+
118
+ class RedirectingSinatraApp < SinatraApp
119
+ def redirect_refs?; true; end
120
+ end
121
+
122
+ class Renderer
123
+ def initialize(body = ""); @body = body; end
124
+
125
+ def render(action, data, options = {})
126
+ @action = action
127
+ @data = data
128
+ "#{action}:#@body"
129
+ end
130
+ end
131
+
132
+ class Actions
133
+ attr_reader :repo, :ref, :path
134
+
135
+ def initialize(response)
136
+ @response = response
137
+ end
138
+
139
+ def blob(repo, ref, path)
140
+ respond(:blob, repo, ref, path)
141
+ end
142
+
143
+ def tree(repo, ref, path)
144
+ respond(:tree, repo, ref, path)
145
+ end
146
+
147
+ def tree_entry(repo, ref, path)
148
+ respond(:tree_entry, repo, ref, path)
149
+ end
150
+
151
+ def raw(repo, ref, path)
152
+ respond(:raw, repo, ref, path)
153
+ end
154
+
155
+ def blame(repo, ref, path)
156
+ respond(:blame, repo, ref, path)
157
+ end
158
+
159
+ def history(repo, ref, path, limit)
160
+ respond(:history, repo, ref, path)
161
+ end
162
+
163
+ def refs(repo)
164
+ respond(:refs, repo)
165
+ end
166
+
167
+ def tree_history(repo, ref, path, count)
168
+ respond(:tree_history, repo, ref, path)
169
+ end
170
+
171
+ def respond(type, repo, ref = nil, path = nil)
172
+ @repo = repo
173
+ @ref = ref
174
+ @path = path
175
+ data = { :ref => ref, :repository => repo }
176
+ data[type != :tree_entry ? type : (@response.class.to_s =~ /Tree/ ? :tree : :blob)] = @response
177
+ data
178
+ end
179
+
180
+ def rev_parse_oid(repo, ref)
181
+ "a" * 40
182
+ end
183
+ end
184
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dolt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ 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-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: libdolt
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0.15'
21
+ version: '0.17'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0.15'
29
+ version: '0.17'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: thin
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -59,22 +59,6 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.0'
62
- - !ruby/object:Gem::Dependency
63
- name: async_sinatra
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '1.0'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '1.0'
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: tiltout
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -124,13 +108,13 @@ dependencies:
124
108
  - !ruby/object:Gem::Version
125
109
  version: '2.0'
126
110
  - !ruby/object:Gem::Dependency
127
- name: em-minitest-spec
111
+ name: rake
128
112
  requirement: !ruby/object:Gem::Requirement
129
113
  none: false
130
114
  requirements:
131
115
  - - ~>
132
116
  - !ruby/object:Gem::Version
133
- version: '1.1'
117
+ version: '0.9'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,15 +122,15 @@ dependencies:
138
122
  requirements:
139
123
  - - ~>
140
124
  - !ruby/object:Gem::Version
141
- version: '1.1'
125
+ version: '0.9'
142
126
  - !ruby/object:Gem::Dependency
143
- name: rake
127
+ name: rack-test
144
128
  requirement: !ruby/object:Gem::Requirement
145
129
  none: false
146
130
  requirements:
147
131
  - - ~>
148
132
  - !ruby/object:Gem::Version
149
- version: '0.9'
133
+ version: '0.6'
150
134
  type: :development
151
135
  prerelease: false
152
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -154,7 +138,7 @@ dependencies:
154
138
  requirements:
155
139
  - - ~>
156
140
  - !ruby/object:Gem::Version
157
- version: '0.9'
141
+ version: '0.6'
158
142
  description: Dolt serves git trees and syntax highlighted blobs
159
143
  email:
160
144
  - christian@gitorious.org
@@ -175,6 +159,8 @@ files:
175
159
  - ./lib/dolt/sinatra/multi_repo_browser.rb
176
160
  - ./lib/dolt/sinatra/single_repo_browser.rb
177
161
  - ./test/dolt/sinatra/actions_test.rb
162
+ - ./test/dolt/sinatra/multi_repo_browser_test.rb
163
+ - ./test/dolt/sinatra/single_repo_browser_test.rb
178
164
  - ./test/test_helper.rb
179
165
  - vendor/ui/.gitignore
180
166
  - vendor/ui/.gitmodules