dolt 0.5.1 → 0.6.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.
Files changed (71) hide show
  1. data/Gemfile.lock +21 -18
  2. data/Readme.md +3 -5
  3. data/bin/dolt +3 -6
  4. data/dolt.gemspec +5 -16
  5. data/lib/dolt/sinatra/multi_repo_browser.rb +3 -3
  6. data/lib/dolt/sinatra/single_repo_browser.rb +3 -3
  7. data/test/test_helper.rb +5 -3
  8. data/vendor/ui/css/gitorious.css +5 -0
  9. metadata +23 -239
  10. data/lib/dolt/async/when.rb +0 -128
  11. data/lib/dolt/disk_repo_resolver.rb +0 -39
  12. data/lib/dolt/git/blame.rb +0 -112
  13. data/lib/dolt/git/commit.rb +0 -73
  14. data/lib/dolt/git/repository.rb +0 -139
  15. data/lib/dolt/git/submodule.rb +0 -35
  16. data/lib/dolt/git/tree.rb +0 -42
  17. data/lib/dolt/repo_actions.rb +0 -91
  18. data/lib/dolt/template_renderer.rb +0 -67
  19. data/lib/dolt/version.rb +0 -21
  20. data/lib/dolt/view.rb +0 -23
  21. data/lib/dolt/view/binary_blob_embedder.rb +0 -41
  22. data/lib/dolt/view/blame.rb +0 -57
  23. data/lib/dolt/view/blob.rb +0 -97
  24. data/lib/dolt/view/breadcrumb.rb +0 -47
  25. data/lib/dolt/view/commit.rb +0 -27
  26. data/lib/dolt/view/gravatar.rb +0 -29
  27. data/lib/dolt/view/markup.rb +0 -107
  28. data/lib/dolt/view/multi_repository.rb +0 -27
  29. data/lib/dolt/view/object.rb +0 -44
  30. data/lib/dolt/view/single_repository.rb +0 -27
  31. data/lib/dolt/view/smart_blob_renderer.rb +0 -33
  32. data/lib/dolt/view/syntax_highlight.rb +0 -90
  33. data/lib/dolt/view/tab_width.rb +0 -30
  34. data/lib/dolt/view/tree.rb +0 -100
  35. data/test/dolt/async/when_test.rb +0 -112
  36. data/test/dolt/git/blame_test.rb +0 -128
  37. data/test/dolt/git/commit_test.rb +0 -89
  38. data/test/dolt/git/repository_test.rb +0 -186
  39. data/test/dolt/repo_actions_test.rb +0 -236
  40. data/test/dolt/template_renderer_test.rb +0 -122
  41. data/test/dolt/templates/blame_test.rb +0 -56
  42. data/test/dolt/templates/blob_test.rb +0 -118
  43. data/test/dolt/templates/commits_test.rb +0 -61
  44. data/test/dolt/templates/raw_test.rb +0 -41
  45. data/test/dolt/templates/refs_test.rb +0 -38
  46. data/test/dolt/templates/tree_history_test.rb +0 -93
  47. data/test/dolt/templates/tree_test.rb +0 -65
  48. data/test/dolt/view/binary_blob_embedder_test.rb +0 -49
  49. data/test/dolt/view/blame_test.rb +0 -122
  50. data/test/dolt/view/blob_test.rb +0 -116
  51. data/test/dolt/view/breadcrumb_test.rb +0 -46
  52. data/test/dolt/view/commit_test.rb +0 -31
  53. data/test/dolt/view/gravatar_test.rb +0 -30
  54. data/test/dolt/view/markup_test.rb +0 -94
  55. data/test/dolt/view/multi_repository_test.rb +0 -35
  56. data/test/dolt/view/object_test.rb +0 -83
  57. data/test/dolt/view/single_repository_test.rb +0 -30
  58. data/test/dolt/view/smart_blob_renderer_test.rb +0 -38
  59. data/test/dolt/view/syntax_highlight_test.rb +0 -108
  60. data/test/dolt/view/tab_width_test.rb +0 -40
  61. data/test/dolt/view/tree_test.rb +0 -199
  62. data/views/500.erb +0 -22
  63. data/views/blame.erb +0 -42
  64. data/views/blob.erb +0 -31
  65. data/views/commits.erb +0 -26
  66. data/views/index.erb +0 -25
  67. data/views/layout.erb +0 -45
  68. data/views/raw.erb +0 -19
  69. data/views/refs.erb +0 -22
  70. data/views/tree.erb +0 -50
  71. data/views/tree_history.erb +0 -19
@@ -1,100 +0,0 @@
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| [:tree, :submodule].index(e[:type]) }) +
28
- sort(tree.entries.select { |e| e[:type] == :blob })
29
- end
30
-
31
- def tree_context(repo, ref, levels)
32
- return "" if levels.length == 1 && levels[0].length == 1
33
- total = 4 + levels.length
34
- colspan = total
35
- (levels.map do |level|
36
- html = <<-HTML
37
- <tr>
38
- #{'<td></td>' * (total - colspan)}
39
- <td colspan="#{colspan}">
40
- #{tree_context_level_links(repo, ref, level)}
41
- </td>
42
- </tr>
43
- HTML
44
- colspan -= 1
45
- html
46
- end).join
47
- end
48
-
49
- def tree_context_level_links(repo, ref, level)
50
- extra = "<i class=\"icon icon-folder-open\"></i>"
51
-
52
- (level.map do |path|
53
- dir = File.dirname(path)
54
- dir = "" if dir == "."
55
- file = path == "" ? "/" : File.basename(path)
56
- url = object_url(repo, ref, dir, { :type => :tree, :name => file })
57
- html = "<a href=\"#{url}\">#{extra} #{file}</a>"
58
- extra = extra == "" || extra == "/" ? "/" : ""
59
- html
60
- end).join(" ")
61
- end
62
-
63
- def partition_path(path, maxdepth = nil)
64
- path = path.sub(/^\.?\//, "")
65
- result = [[""]]
66
- return result if path == ""
67
- parts = path.split("/")
68
- maxdepth ||= parts.length
69
- fill_first = [parts.length, [1, parts.length - maxdepth + 1].max].min
70
- fill_first.times { result[0] << parts.shift }
71
- result << [parts.shift] while parts.length > 0
72
- result
73
- end
74
-
75
- def accumulate_path(pieces)
76
- acc = []
77
- pieces.map do |piece|
78
- piece.map do |p|
79
- next p if p == ""
80
- acc << p
81
- File.join(acc)
82
- end
83
- end
84
- end
85
-
86
- def tree_table_padding_width(partitioned)
87
- partitioned.length == 1 ? partitioned[0].length - 1 : partitioned.length
88
- end
89
-
90
- def tree_table_padding_td(partitioned)
91
- "<td></td>" * tree_table_padding_width(partitioned)
92
- end
93
-
94
- private
95
- def sort(entries)
96
- entries.sort_by { |e| e[:name] }
97
- end
98
- end
99
- end
100
- end
@@ -1,112 +0,0 @@
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/async/when"
20
-
21
- describe When do
22
- include EM::MiniTest::Spec
23
-
24
- describe ".all" do
25
- it "returns deferrable" do
26
- d = When.all([When.deferred(42)])
27
- assert d.respond_to?(:callback)
28
- assert d.respond_to?(:errback)
29
- end
30
-
31
- it "resolves immediately if no promises" do
32
- d = When.all([])
33
- d.callback do |results|
34
- assert_equal [], results
35
- done!
36
- end
37
- wait!
38
- end
39
-
40
- it "resolves when single deferrable resolves" do
41
- deferred = When::Deferred.new
42
- d = When.all([deferred.promise])
43
- resolved = false
44
- d.callback { |results| resolved = true }
45
-
46
- assert !resolved
47
- deferred.resolve(42)
48
- assert resolved
49
- end
50
-
51
- it "resolves when all deferrables are resolved" do
52
- deferreds = [When::Deferred.new, When::Deferred.new, When::Deferred.new]
53
- d = When.all(deferreds.map(&:promise))
54
- resolved = false
55
- d.callback { |results| resolved = true }
56
-
57
- assert !resolved
58
- deferreds[0].resolve(42)
59
- assert !resolved
60
- deferreds[1].resolve(13)
61
- assert !resolved
62
- deferreds[2].resolve(3)
63
- assert resolved
64
- end
65
-
66
- it "rejects when single deferrable rejects" do
67
- deferred = When::Deferred.new
68
- d = When.all([deferred.promise])
69
- rejected = false
70
- d.errback { |results| rejected = true }
71
-
72
- assert !rejected
73
- deferred.reject(StandardError.new)
74
- assert rejected
75
- end
76
-
77
- it "rejects on first rejection" do
78
- deferreds = [When::Deferred.new, When::Deferred.new, When::Deferred.new]
79
- d = When.all(deferreds.map(&:promise))
80
- rejected = false
81
- d.errback { |results| rejected = true }
82
-
83
- deferreds[0].resolve(42)
84
- deferreds[2].reject(StandardError.new)
85
- deferreds[1].resolve(13)
86
-
87
- assert rejected
88
- end
89
-
90
- it "proxies resolution vaule in array" do
91
- deferred = When::Deferred.new
92
- d = When.all([deferred.promise])
93
- results = nil
94
- d.callback { |res| results = res }
95
-
96
- deferred.resolve(42)
97
- assert_equal [42], results
98
- end
99
-
100
- it "orders results like input" do
101
- deferred1 = When::Deferred.new
102
- deferred2 = When::Deferred.new
103
- d = When.all([deferred1.promise, deferred2.promise])
104
- results = nil
105
- d.callback { |res| results = res }
106
-
107
- deferred2.resolve(42)
108
- deferred1.resolve(13)
109
- assert_equal [13, 42], results
110
- end
111
- end
112
- end
@@ -1,128 +0,0 @@
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
@@ -1,89 +0,0 @@
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
@@ -1,186 +0,0 @@
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/repository"
20
- require "time"
21
-
22
- describe Dolt::Git::Repository do
23
- include EM::MiniTest::Spec
24
- before { @repository = Dolt::Git::Repository.new(".") }
25
-
26
- describe "#submodules" do
27
- it "returns deferrable" do
28
- deferrable = @repository.submodules("master")
29
- assert deferrable.respond_to?(:callback)
30
- assert deferrable.respond_to?(:errback)
31
- end
32
-
33
- it "yields list of submodules" do
34
- @repository.submodules("c1f6cd9").callback do |submodules|
35
- url = "git://gitorious.org/gitorious/ui3.git"
36
- assert_equal [{ :path => "vendor/ui", :url => url }], submodules
37
- done!
38
- end
39
- wait!
40
- end
41
-
42
- it "resolves with empty array if no submodules" do
43
- @repository.submodules("26139a3").callback do |submodules|
44
- assert_equal [], submodules
45
- done!
46
- end
47
- wait!
48
- end
49
- end
50
-
51
- describe "#tree" do
52
- it "includes submodule data for trees" do
53
- @repository.tree("3dc532f", "vendor").callback do |tree|
54
- assert_equal({
55
- :type => :submodule,
56
- :filemode => 57344,
57
- :name => "ui",
58
- :oid => "d167e3e1c17a27e4cf459dd380670801b0659659",
59
- :url => "git://gitorious.org/gitorious/ui3.git"
60
- }, tree.entries.first)
61
- done!
62
- end
63
- wait!
64
- end
65
- end
66
-
67
- describe "#blame" do
68
- it "returns deferrable" do
69
- deferrable = @repository.blame("master", "Gemfile")
70
- assert deferrable.respond_to?(:callback)
71
- assert deferrable.respond_to?(:errback)
72
- end
73
-
74
- it "yields blame" do
75
- @repository.blame("master", "Gemfile").callback do |blame|
76
- assert Dolt::Git::Blame === blame
77
- done!
78
- end
79
- wait!
80
- end
81
- end
82
-
83
- describe "#log" do
84
- it "returns deferrable" do
85
- deferrable = @repository.log("master", "Gemfile", 1)
86
- assert deferrable.respond_to?(:callback)
87
- assert deferrable.respond_to?(:errback)
88
- end
89
-
90
- it "yields commits" do
91
- @repository.log("master", "dolt.gemspec", 2).callback do |log|
92
- assert_equal 2, log.length
93
- assert Hash === log[0]
94
- done!
95
- end
96
- wait!
97
- end
98
- end
99
-
100
- describe "#tree_history" do
101
- it "returns deferrable" do
102
- deferrable = @repository.tree_history("master", "")
103
- assert deferrable.respond_to?(:callback)
104
- assert deferrable.respond_to?(:errback)
105
- end
106
-
107
- it "fails if path is not a tree" do
108
- deferrable = @repository.tree_history("master", "Gemfile")
109
- deferrable.errback do |err|
110
- assert_match /not a tree/, err.message
111
- done!
112
- end
113
- wait!
114
- end
115
-
116
- it "fails if path does not exist in ref" do
117
- deferrable = @repository.tree_history("26139a3", "test")
118
- deferrable.errback do |err|
119
- assert_match /does not exist/, err.message
120
- done!
121
- end
122
- wait!
123
- end
124
-
125
- it "yields tree with history" do
126
- promise = @repository.tree_history("48ffbf7", "")
127
-
128
- promise.callback do |log|
129
- assert_equal 11, log.length
130
- expected = {
131
- :type => :blob,
132
- :oid => "e90021f89616ddf86855d05337c188408d3b417e",
133
- :filemode => 33188,
134
- :name => ".gitmodules",
135
- :history => [{
136
- :oid => "906d67b4f3e5de7364ba9b57d174d8998d53ced6",
137
- :author => { :name => "Christian Johansen",
138
- :email => "christian@cjohansen.no" },
139
- :summary => "Working Moron server for viewing blobs",
140
- :date => Time.parse("Mon Sep 10 15:07:39 +0200 2012"),
141
- :message => ""
142
- }]
143
- }
144
-
145
- assert_equal expected, log[0]
146
- done!
147
- end
148
-
149
- promise.errback do |err|
150
- puts "FAILED! #{err.inspect}"
151
- end
152
-
153
- wait!
154
- end
155
-
156
- it "yields nested tree with history" do
157
- promise = @repository.tree_history("48ffbf7", "lib")
158
-
159
- promise.callback do |log|
160
- expected = [{
161
- :type => :tree,
162
- :oid => "58f84405b588699b24c619aa4cd83669c5623f88",
163
- :filemode => 16384,
164
- :name => "dolt",
165
- :history => [{
166
- :oid => "8ab4f8c42511f727244a02aeee04824891610bbd",
167
- :author => { :name => "Christian Johansen",
168
- :email => "christian@gitorious.com" },
169
- :summary => "New version",
170
- :date => Time.parse("Mon Oct 1 16:34:00 +0200 2012"),
171
- :message => ""
172
- }]
173
- }]
174
-
175
- assert_equal expected, log
176
- done!
177
- end
178
-
179
- promise.errback do |err|
180
- puts "FAILED! #{err.inspect}"
181
- end
182
-
183
- wait!
184
- end
185
- end
186
- end