dolt 0.1.1 → 0.2.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 +25 -5
- data/Readme.md +90 -16
- data/bin/dolt +22 -4
- data/dolt.gemspec +10 -2
- data/lib/dolt/disk_repo_resolver.rb +3 -5
- data/lib/dolt/git/blame.rb +112 -0
- data/lib/dolt/git/commit.rb +73 -0
- data/lib/dolt/git/repository.rb +26 -24
- data/lib/dolt/repo_actions.rb +32 -19
- data/lib/dolt/sinatra/actions.rb +51 -18
- data/lib/dolt/sinatra/multi_repo_browser.rb +30 -3
- data/lib/dolt/sinatra/single_repo_browser.rb +36 -2
- data/lib/dolt/template_renderer.rb +7 -8
- data/lib/dolt/version.rb +1 -1
- data/lib/dolt/view.rb +3 -61
- data/lib/dolt/view/blame.rb +57 -0
- data/lib/dolt/view/blob.rb +60 -0
- data/lib/dolt/view/breadcrumb.rb +10 -17
- data/lib/dolt/{git/blob.rb → view/commit.rb} +5 -11
- data/lib/dolt/view/gravatar.rb +29 -0
- data/lib/dolt/{git/shell.rb → view/markup.rb} +10 -16
- data/lib/dolt/view/multi_repository.rb +27 -0
- data/lib/dolt/{async/deferrable_child_process.rb → view/object.rb} +11 -24
- data/lib/dolt/view/single_repository.rb +27 -0
- data/lib/dolt/view/smart_blob_renderer.rb +33 -0
- data/lib/dolt/view/syntax_highlight.rb +86 -0
- data/lib/dolt/view/tree.rb +69 -0
- data/test/dolt/git/blame_test.rb +128 -0
- data/test/dolt/git/commit_test.rb +89 -0
- data/test/dolt/git/repository_test.rb +24 -73
- data/test/dolt/repo_actions_test.rb +77 -15
- data/test/dolt/sinatra/actions_test.rb +168 -8
- data/test/dolt/template_renderer_test.rb +44 -10
- data/test/dolt/templates/blame_test.rb +56 -0
- data/test/dolt/{views → templates}/blob_test.rb +44 -34
- data/test/dolt/templates/commits_test.rb +61 -0
- data/test/dolt/templates/raw_test.rb +41 -0
- data/test/dolt/templates/tree_test.rb +51 -0
- data/test/dolt/view/blame_test.rb +122 -0
- data/test/dolt/view/blob_test.rb +90 -0
- data/test/dolt/view/breadcrumb_test.rb +46 -0
- data/test/dolt/view/commit_test.rb +31 -0
- data/test/dolt/view/gravatar_test.rb +30 -0
- data/test/dolt/view/markup_test.rb +30 -0
- data/test/dolt/{git/blob_test.rb → view/multi_repository_test.rb} +10 -24
- data/test/dolt/view/object_test.rb +71 -0
- data/test/dolt/view/single_repository_test.rb +30 -0
- data/test/dolt/{view_test.rb → view/syntax_highlight_test.rb} +40 -27
- data/test/dolt/view/tree_test.rb +115 -0
- data/test/test_helper.rb +18 -13
- data/vendor/ui/css/gitorious.css +20 -8
- data/views/blame.erb +41 -0
- data/views/blob.erb +6 -9
- data/views/commits.erb +23 -0
- data/views/index.erb +25 -0
- data/views/raw.erb +19 -0
- data/views/tree.erb +28 -26
- metadata +156 -26
- data/lib/dolt/git/tree.rb +0 -65
- data/lib/dolt/view/highlighter.rb +0 -52
- data/test/dolt/git/shell_test.rb +0 -112
- data/test/dolt/git/tree_test.rb +0 -120
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2012 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
|
+
|
19
|
+
module Dolt
|
20
|
+
module View
|
21
|
+
module Tree
|
22
|
+
def tree_url(repository, ref, path)
|
23
|
+
repo_url(repository, "/tree/#{ref}:#{path}")
|
24
|
+
end
|
25
|
+
|
26
|
+
def tree_entries(tree)
|
27
|
+
sort(tree.entries.select { |e| e[:type] == :tree }) +
|
28
|
+
sort(tree.entries.select { |e| e[:type] == :blob })
|
29
|
+
end
|
30
|
+
|
31
|
+
def tree_context(repo, ref, path)
|
32
|
+
acc = ""
|
33
|
+
pieces = path.sub(/^\.?\//, "").split("/")
|
34
|
+
total = 5 + pieces.length
|
35
|
+
colspan = total
|
36
|
+
pieces.inject("") do |html, dir|
|
37
|
+
padding_td = tree_table_padding_td(acc.sub(/^\.?\//, ""))
|
38
|
+
url = object_url(repo, ref, acc, { :type => :tree, :name => dir })
|
39
|
+
acc << "/#{dir}"
|
40
|
+
colspan -= 1
|
41
|
+
<<-HTML
|
42
|
+
#{html}
|
43
|
+
<tr>
|
44
|
+
#{padding_td}
|
45
|
+
<td colspan="#{colspan}">
|
46
|
+
<a href=\"#{url}\">
|
47
|
+
<i class="icon icon-folder-open"></i> #{dir}
|
48
|
+
</a>
|
49
|
+
</td>
|
50
|
+
</tr>
|
51
|
+
HTML
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def tree_table_padding_td(path)
|
56
|
+
"<td></td>" * tree_table_padding_width(path)
|
57
|
+
end
|
58
|
+
|
59
|
+
def tree_table_padding_width(path)
|
60
|
+
path.split("/").length
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
def sort(entries)
|
65
|
+
entries.sort_by { |e| e[:name] }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2012 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 "dolt/git/blame"
|
20
|
+
|
21
|
+
describe Dolt::Git::Blame do
|
22
|
+
include EM::MiniTest::Spec
|
23
|
+
|
24
|
+
describe "parse" do
|
25
|
+
before do
|
26
|
+
@blame = <<-GIT
|
27
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 1 1 17
|
28
|
+
author Christian Johansen
|
29
|
+
author-mail <christian@cjohansen.no>
|
30
|
+
author-time 1347282459
|
31
|
+
author-tz +0200
|
32
|
+
committer Christian Johansen
|
33
|
+
committer-mail <christian@cjohansen.no>
|
34
|
+
committer-time 1347282459
|
35
|
+
committer-tz +0200
|
36
|
+
summary Working Moron server for viewing blobs
|
37
|
+
filename lib/moron/view.rb
|
38
|
+
# encoding: utf-8
|
39
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 2 2
|
40
|
+
#--
|
41
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 3 3
|
42
|
+
# Copyright (C) 2012 Gitorious AS
|
43
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 4 4
|
44
|
+
#
|
45
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 5 5
|
46
|
+
# This program is free software: you can redistribute it and/or modify
|
47
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 6 6
|
48
|
+
# it under the terms of the GNU Affero General Public License as published by
|
49
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 7 7
|
50
|
+
# the Free Software Foundation, either version 3 of the License, or
|
51
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 8 8
|
52
|
+
# (at your option) any later version.
|
53
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 9 9
|
54
|
+
#
|
55
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 10 10
|
56
|
+
# This program is distributed in the hope that it will be useful,
|
57
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 11 11
|
58
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
59
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 12 12
|
60
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
61
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 13 13
|
62
|
+
# GNU Affero General Public License for more details.
|
63
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 14 14
|
64
|
+
#
|
65
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 15 15
|
66
|
+
# You should have received a copy of the GNU Affero General Public License
|
67
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 16 16
|
68
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
69
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 17 17
|
70
|
+
#++
|
71
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 20 18 1
|
72
|
+
|
73
|
+
beb65bee5619c651532179b19421363ead2c2a44 19 19 1
|
74
|
+
author Christian Johansen
|
75
|
+
author-mail <christian@gitorious.com>
|
76
|
+
author-time 1348128947
|
77
|
+
author-tz +0200
|
78
|
+
committer Christian Johansen
|
79
|
+
committer-mail <christian@gitorious.com>
|
80
|
+
committer-time 1348128947
|
81
|
+
committer-tz +0200
|
82
|
+
summary Helpers are modules again
|
83
|
+
previous 05f0137175fe341545587a544315cd4a6cc2c824 lib/dolt/view.rb
|
84
|
+
filename lib/dolt/view.rb
|
85
|
+
dir = File.join(File.dirname(__FILE__), "view")
|
86
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 30 20 1
|
87
|
+
|
88
|
+
beb65bee5619c651532179b19421363ead2c2a44 21 21 2
|
89
|
+
Dir.entries(dir).select { |f| f =~ /\.rb$/ }.map do |file|
|
90
|
+
beb65bee5619c651532179b19421363ead2c2a44 22 22
|
91
|
+
require(File.join(dir, file))
|
92
|
+
906d67b4f3e5de7364ba9b57d174d8998d53ced6 58 23 1
|
93
|
+
end
|
94
|
+
GIT
|
95
|
+
|
96
|
+
@blame = Dolt::Git::Blame.parse_porcelain(@blame)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "has chunks" do
|
100
|
+
assert_equal 5, @blame.chunks.length
|
101
|
+
end
|
102
|
+
|
103
|
+
it "has chunk with commit meta data" do
|
104
|
+
chunk = @blame.chunks.first
|
105
|
+
author = chunk[:author]
|
106
|
+
committer = chunk[:committer]
|
107
|
+
|
108
|
+
assert_equal "906d67b4f3e5de7364ba9b57d174d8998d53ced6", chunk[:oid]
|
109
|
+
assert_equal "Christian Johansen", author[:name]
|
110
|
+
assert_equal "christian@cjohansen.no", author[:mail]
|
111
|
+
assert_equal "2012-09-10 17:07:39", author[:time].strftime("%Y-%m-%d %H:%M:%S")
|
112
|
+
assert_equal "Christian Johansen", committer[:name]
|
113
|
+
assert_equal "christian@cjohansen.no", committer[:mail]
|
114
|
+
assert_equal "2012-09-10 17:07:39", committer[:time].strftime("%Y-%m-%d %H:%M:%S")
|
115
|
+
assert_equal "Working Moron server for viewing blobs", chunk[:summary]
|
116
|
+
end
|
117
|
+
|
118
|
+
it "has chunk with lines" do
|
119
|
+
chunk = @blame.chunks.first
|
120
|
+
assert_equal 18, chunk[:lines].length
|
121
|
+
assert_equal "# Copyright (C) 2012 Gitorious AS", chunk[:lines][2]
|
122
|
+
end
|
123
|
+
|
124
|
+
it "repeats commit meta" do
|
125
|
+
assert_equal @blame.chunks[2][:committer], @blame.chunks[0][:committer]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2012 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 "dolt/git/commit"
|
20
|
+
|
21
|
+
describe Dolt::Git::Commit do
|
22
|
+
include EM::MiniTest::Spec
|
23
|
+
|
24
|
+
describe "parse" do
|
25
|
+
before do
|
26
|
+
@log = <<-GIT
|
27
|
+
commit dc0846b6c98a3f6db1172629329b70ada80598bb
|
28
|
+
Author: Christian Johansen <christian@gitorious.com>
|
29
|
+
Date: Thu Sep 20 15:55:52 2012 +0200
|
30
|
+
|
31
|
+
Add rough blame
|
32
|
+
|
33
|
+
commit 222eef3679553c9da2897144e03a5844f6e77586
|
34
|
+
Author: Christian Johansen <christian@gitorious.com>
|
35
|
+
Date: Wed Sep 19 12:27:54 2012 +0200
|
36
|
+
|
37
|
+
Rewrite template/views. Use EMRugged for Git.
|
38
|
+
|
39
|
+
- Not complete, still some failing tests
|
40
|
+
- View helpers need to change
|
41
|
+
|
42
|
+
commit 06293404488d9cc72e70eb2ae25aa609af73dada
|
43
|
+
Author: Christian Johansen <christian@gitorious.com>
|
44
|
+
Date: Tue Sep 11 20:03:14 2012 +0200
|
45
|
+
|
46
|
+
Rename FileSystemRepositoryResolver to DiskRepoResolver
|
47
|
+
|
48
|
+
commit 7a3d69a2327bb9575bb520fe30c6abb3bbd0b719
|
49
|
+
Author: Christian Johansen <christian@gitorious.com>
|
50
|
+
Date: Tue Sep 11 19:57:22 2012 +0200
|
51
|
+
|
52
|
+
One more rename: "Dolt" is shorter, better
|
53
|
+
|
54
|
+
commit eabcd577e921d01aeaf777d2daac565f88ab174c
|
55
|
+
Author: Christian Johansen <christian@gitorious.com>
|
56
|
+
Date: Tue Sep 11 15:25:50 2012 +0200
|
57
|
+
|
58
|
+
Moron was taken, going with Addlepate
|
59
|
+
|
60
|
+
GIT
|
61
|
+
|
62
|
+
@commits = Dolt::Git::Commit.parse_log(@log)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "has commits" do
|
66
|
+
assert_equal 5, @commits.length
|
67
|
+
end
|
68
|
+
|
69
|
+
it "has commit oids" do
|
70
|
+
assert_equal "dc0846b6c98a3f6db1172629329b70ada80598bb", @commits[0][:oid]
|
71
|
+
assert_equal "222eef3679553c9da2897144e03a5844f6e77586", @commits[1][:oid]
|
72
|
+
assert_equal "06293404488d9cc72e70eb2ae25aa609af73dada", @commits[2][:oid]
|
73
|
+
assert_equal "7a3d69a2327bb9575bb520fe30c6abb3bbd0b719", @commits[3][:oid]
|
74
|
+
assert_equal "eabcd577e921d01aeaf777d2daac565f88ab174c", @commits[4][:oid]
|
75
|
+
end
|
76
|
+
|
77
|
+
it "has author" do
|
78
|
+
expected = {
|
79
|
+
:name => "Christian Johansen",
|
80
|
+
:email => "christian@gitorious.com"
|
81
|
+
}
|
82
|
+
assert_equal expected, @commits.first[:author]
|
83
|
+
end
|
84
|
+
|
85
|
+
it "has commit date" do
|
86
|
+
assert_equal "2012-09-11", @commits.last[:date].strftime("%Y-%m-%d")
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -17,93 +17,44 @@
|
|
17
17
|
#++
|
18
18
|
require "test_helper"
|
19
19
|
require "dolt/git/repository"
|
20
|
-
require "dolt/async/when"
|
21
|
-
|
22
|
-
class FakeGit
|
23
|
-
attr_reader :cmds, :deferreds
|
24
|
-
|
25
|
-
def initialize
|
26
|
-
@cmds = []
|
27
|
-
@deferreds = []
|
28
|
-
end
|
29
|
-
|
30
|
-
def show(path, ref)
|
31
|
-
git("show", path, ref)
|
32
|
-
end
|
33
|
-
|
34
|
-
def ls_tree(path, ref)
|
35
|
-
git("ls-tree", path, ref)
|
36
|
-
end
|
37
|
-
|
38
|
-
def git(*args)
|
39
|
-
cmds << args
|
40
|
-
deferred = When::Deferred.new
|
41
|
-
deferreds << deferred.resolver
|
42
|
-
deferred.promise
|
43
|
-
end
|
44
|
-
|
45
|
-
def last_command; cmds.last; end
|
46
|
-
def last_resolver; deferreds.last; end
|
47
|
-
end
|
48
20
|
|
49
21
|
describe Dolt::Git::Repository do
|
50
|
-
|
22
|
+
include EM::MiniTest::Spec
|
51
23
|
|
52
|
-
describe "#
|
53
|
-
|
54
|
-
repo = Dolt::Git::Repository.new("gitorious", @git)
|
55
|
-
repo.blob("models/repository.rb", "master")
|
24
|
+
describe "#blame" do
|
25
|
+
before { @repository = Dolt::Git::Repository.new(".") }
|
56
26
|
|
57
|
-
|
27
|
+
it "returns deferrable" do
|
28
|
+
deferrable = @repository.blame("master", "Gemfile")
|
29
|
+
assert deferrable.respond_to?(:callback)
|
30
|
+
assert deferrable.respond_to?(:errback)
|
58
31
|
end
|
59
32
|
|
60
|
-
it "
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
assert_equal ["show", "models/repository.rb", "HEAD"], @git.last_command
|
65
|
-
end
|
66
|
-
|
67
|
-
it "invokes callback with blob object" do
|
68
|
-
repo = Dolt::Git::Repository.new("gitorious", @git)
|
69
|
-
d = repo.blob("models/repository.rb")
|
70
|
-
|
71
|
-
d.callback do |blob|
|
72
|
-
assert_equal "class Repository;end", blob.raw
|
33
|
+
it "yields blame" do
|
34
|
+
@repository.blame("master", "Gemfile").callback do |blame|
|
35
|
+
assert Dolt::Git::Blame === blame
|
36
|
+
done!
|
73
37
|
end
|
74
|
-
|
75
|
-
@git.last_resolver.resolve("class Repository;end")
|
38
|
+
wait!
|
76
39
|
end
|
77
40
|
end
|
78
41
|
|
79
|
-
describe "#
|
80
|
-
|
81
|
-
repo = Dolt::Git::Repository.new("gitorious", @git)
|
82
|
-
repo.tree("app/models", "master")
|
42
|
+
describe "#log" do
|
43
|
+
before { @repository = Dolt::Git::Repository.new(".") }
|
83
44
|
|
84
|
-
|
45
|
+
it "returns deferrable" do
|
46
|
+
deferrable = @repository.log("master", "Gemfile", 1)
|
47
|
+
assert deferrable.respond_to?(:callback)
|
48
|
+
assert deferrable.respond_to?(:errback)
|
85
49
|
end
|
86
50
|
|
87
|
-
it "
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
end
|
93
|
-
|
94
|
-
it "invokes callback with tree object" do
|
95
|
-
repo = Dolt::Git::Repository.new("gitorious", @git)
|
96
|
-
d = repo.tree("app/models")
|
97
|
-
|
98
|
-
d.callback do |tree|
|
99
|
-
assert_equal 3, tree.entries.length
|
51
|
+
it "yields commits" do
|
52
|
+
@repository.log("master", "dolt.gemspec", 2).callback do |log|
|
53
|
+
assert_equal 2, log.length
|
54
|
+
assert Hash === log[0]
|
55
|
+
done!
|
100
56
|
end
|
101
|
-
|
102
|
-
@git.last_resolver.resolve(<<-GIT)
|
103
|
-
100644 blob e90021f89616ddf86855d05337c188408d3b417e .gitmodules
|
104
|
-
100644 blob c80ee3697054566d1a4247d80be78ec3ddfde295 Gemfile
|
105
|
-
100644 blob 0053b3c95b0d9faa4916f7cd5e559c2b0f138027 Gemfile.lock
|
106
|
-
GIT
|
57
|
+
wait!
|
107
58
|
end
|
108
59
|
end
|
109
60
|
end
|
@@ -23,12 +23,17 @@ class Repository
|
|
23
23
|
attr_reader :name
|
24
24
|
def initialize(name); @name = name; end
|
25
25
|
|
26
|
-
def
|
26
|
+
def rev_parse(rev)
|
27
27
|
@deferred = When::Deferred.new
|
28
28
|
@deferred.promise
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def blame(ref, path)
|
32
|
+
@deferred = When::Deferred.new
|
33
|
+
@deferred.promise
|
34
|
+
end
|
35
|
+
|
36
|
+
def log(ref, path, limit)
|
32
37
|
@deferred = When::Deferred.new
|
33
38
|
@deferred.promise
|
34
39
|
end
|
@@ -57,46 +62,103 @@ describe Dolt::RepoActions do
|
|
57
62
|
|
58
63
|
describe "#blob" do
|
59
64
|
it "resolves repository" do
|
60
|
-
@actions.blob("gitorious", "
|
65
|
+
@actions.blob("gitorious", "master", "app")
|
61
66
|
|
62
67
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
63
68
|
end
|
64
69
|
|
65
|
-
it "yields blob, repo, ref and base_tree_url to block" do
|
70
|
+
it "yields path, blob, repo, ref and base_tree_url to block" do
|
66
71
|
data = nil
|
67
|
-
@actions.blob("gitorious", "
|
72
|
+
@actions.blob("gitorious", "babd120", "app") do |err, d|
|
68
73
|
data = d
|
69
74
|
end
|
70
75
|
|
71
|
-
|
72
|
-
repo.resolve_promise "Blob"
|
76
|
+
@resolver.resolved.last.resolve_promise("Blob")
|
73
77
|
|
74
78
|
assert_equal({
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
+
:blob => "Blob",
|
80
|
+
:repository => "gitorious",
|
81
|
+
:ref => "babd120",
|
82
|
+
:path => "app"
|
83
|
+
}, data)
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
82
87
|
describe "#tree" do
|
83
88
|
it "resolves repository" do
|
84
|
-
@actions.tree("gitorious", "
|
89
|
+
@actions.tree("gitorious", "master", "app")
|
85
90
|
|
86
91
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
87
92
|
end
|
88
93
|
|
89
94
|
it "yields tree, repo and ref to block" do
|
90
95
|
data = nil
|
91
|
-
@actions.tree("gitorious", "
|
96
|
+
@actions.tree("gitorious", "babd120", "app") do |err, d|
|
92
97
|
data = d
|
93
98
|
end
|
94
99
|
|
95
100
|
repo = @resolver.resolved.last
|
96
101
|
repo.resolve_promise "Tree"
|
97
102
|
|
98
|
-
expected = {
|
103
|
+
expected = {
|
104
|
+
:tree => "Tree",
|
105
|
+
:repository => "gitorious",
|
106
|
+
:ref => "babd120",
|
107
|
+
:path => "app"
|
108
|
+
}
|
109
|
+
assert_equal expected, data
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "#blame" do
|
114
|
+
it "resolves repository" do
|
115
|
+
@actions.blame("gitorious", "master", "app")
|
116
|
+
|
117
|
+
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "yields blame, repo and ref to block" do
|
121
|
+
data = nil
|
122
|
+
@actions.blame("gitorious", "babd120", "app") do |err, d|
|
123
|
+
data = d
|
124
|
+
end
|
125
|
+
|
126
|
+
repo = @resolver.resolved.last
|
127
|
+
repo.resolve_promise "Blame"
|
128
|
+
|
129
|
+
expected = {
|
130
|
+
:blame => "Blame",
|
131
|
+
:repository => "gitorious",
|
132
|
+
:ref => "babd120",
|
133
|
+
:path => "app"
|
134
|
+
}
|
99
135
|
assert_equal expected, data
|
100
136
|
end
|
101
|
-
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "#history" do
|
140
|
+
it "resolves repository" do
|
141
|
+
@actions.history("gitorious", "master", "app", 1)
|
142
|
+
|
143
|
+
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "yields commits, repo and ref to block" do
|
147
|
+
data = nil
|
148
|
+
@actions.history("gitorious", "babd120", "app", 2) do |err, d|
|
149
|
+
data = d
|
150
|
+
end
|
151
|
+
|
152
|
+
repo = @resolver.resolved.last
|
153
|
+
repo.resolve_promise "History"
|
154
|
+
|
155
|
+
expected = {
|
156
|
+
:commits => "History",
|
157
|
+
:repository => "gitorious",
|
158
|
+
:ref => "babd120",
|
159
|
+
:path => "app"
|
160
|
+
}
|
161
|
+
assert_equal expected, data
|
162
|
+
end
|
163
|
+
end
|
102
164
|
end
|