dolt 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,30 @@
|
|
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/view/gravatar"
|
20
|
+
|
21
|
+
describe Dolt::View::Gravatar do
|
22
|
+
include Dolt::View::Gravatar
|
23
|
+
|
24
|
+
describe "#gravatar" do
|
25
|
+
it "returns gravatar URL" do
|
26
|
+
url = gravatar("christian@gitorious.com")
|
27
|
+
assert_equal "http://www.gravatar.com/avatar/38b06b3f65a9c84ac860bf0ce0a69e43", url
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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/view/markup"
|
20
|
+
|
21
|
+
describe Dolt::View::Markup do
|
22
|
+
include Dolt::View::Markup
|
23
|
+
|
24
|
+
describe "#render_markup" do
|
25
|
+
it "wraps markup in .gts-markup" do
|
26
|
+
html = render_markup("file.md", "# Hey")
|
27
|
+
assert_match "<div class=\"gts-markup\">", html
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -16,34 +16,20 @@
|
|
16
16
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
17
|
#++
|
18
18
|
require "test_helper"
|
19
|
-
require "dolt/
|
19
|
+
require "dolt/view/multi_repository"
|
20
20
|
|
21
|
-
describe Dolt::
|
22
|
-
|
23
|
-
|
24
|
-
blob = Dolt::Git::Blob.new("file.txt", "Something something")
|
21
|
+
describe Dolt::View::MultiRepository do
|
22
|
+
include Dolt::Html
|
23
|
+
include Dolt::View::MultiRepository
|
25
24
|
|
26
|
-
|
25
|
+
describe "#repo_url" do
|
26
|
+
it "returns url prefixed with repository" do
|
27
|
+
assert_equal "/gitorious/some/url", repo_url("gitorious", "/some/url")
|
27
28
|
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#lines" do
|
31
|
-
it "returns empty array for empty blob" do
|
32
|
-
blob = Dolt::Git::Blob.new("file.txt", "")
|
33
|
-
|
34
|
-
assert_equal [], blob.lines
|
35
|
-
end
|
36
|
-
|
37
|
-
it "returns array of one line" do
|
38
|
-
blob = Dolt::Git::Blob.new("file.txt", "Something something")
|
39
|
-
|
40
|
-
assert_equal ["Something something"], blob.lines
|
41
|
-
end
|
42
|
-
|
43
|
-
it "returns array of lines" do
|
44
|
-
blob = Dolt::Git::Blob.new("file.txt", "Something\nsomething\nYup")
|
45
29
|
|
46
|
-
|
30
|
+
it "returns url prefixed with repository name containing slashes" do
|
31
|
+
url = repo_url("gitorious/mainline", "/some/url")
|
32
|
+
assert_equal "/gitorious/mainline/some/url", url
|
47
33
|
end
|
48
34
|
end
|
49
35
|
end
|
@@ -0,0 +1,71 @@
|
|
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/view/single_repository"
|
20
|
+
require "dolt/view/multi_repository"
|
21
|
+
require "dolt/view/object"
|
22
|
+
|
23
|
+
describe Dolt::View::Object do
|
24
|
+
include Dolt::View::Object
|
25
|
+
|
26
|
+
describe "single repo mode" do
|
27
|
+
include Dolt::View::SingleRepository
|
28
|
+
|
29
|
+
it "returns blob url" do
|
30
|
+
object = { :type => "blob", :name => "Gemfile" }
|
31
|
+
url = object_url("myrepo", "master", "", object)
|
32
|
+
assert_equal "/blob/master:Gemfile", url
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns tree url" do
|
36
|
+
object = { :type => "tree", :name => "models" }
|
37
|
+
url = object_url("myrepo", "master", "app", object)
|
38
|
+
assert_equal "/tree/master:app/models", url
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns blob url in directory" do
|
42
|
+
object = { :type => "blob", :name => "Gemfile" }
|
43
|
+
url = object_url("myrepo", "master", "lib/mything", object)
|
44
|
+
assert_equal "/blob/master:lib/mything/Gemfile", url
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "multi repo mode" do
|
49
|
+
include Dolt::View::MultiRepository
|
50
|
+
|
51
|
+
it "returns blob url" do
|
52
|
+
object = { :type => "blob", :name => "Gemfile" }
|
53
|
+
url = object_url("myrepo", "master", "", object)
|
54
|
+
assert_equal "/myrepo/blob/master:Gemfile", url
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns blob url in directory" do
|
58
|
+
object = { :type => "blob", :name => "Gemfile" }
|
59
|
+
url = object_url("myrepo", "master", "lib/mything", object)
|
60
|
+
assert_equal "/myrepo/blob/master:lib/mything/Gemfile", url
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns blob icon type" do
|
65
|
+
assert_equal "icon-file", object_icon_class({ :type => :blob })
|
66
|
+
end
|
67
|
+
|
68
|
+
it "returns tree icon type" do
|
69
|
+
assert_equal "icon-folder-close", object_icon_class({ :type => :tree })
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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/view/single_repository"
|
20
|
+
|
21
|
+
describe Dolt::View::SingleRepository do
|
22
|
+
include Dolt::Html
|
23
|
+
include Dolt::View::SingleRepository
|
24
|
+
|
25
|
+
describe "#repo_url" do
|
26
|
+
it "returns url unmodified" do
|
27
|
+
assert_equal "/some/url", repo_url("gitorious", "/some/url")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -16,30 +16,14 @@
|
|
16
16
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
17
|
#++
|
18
18
|
require "test_helper"
|
19
|
-
require "dolt/view"
|
19
|
+
require "dolt/view/single_repository"
|
20
|
+
require "dolt/view/multi_repository"
|
21
|
+
require "dolt/view/blob"
|
22
|
+
require "dolt/view/syntax_highlight"
|
20
23
|
|
21
|
-
describe Dolt::View do
|
22
|
-
include Dolt::View
|
23
|
-
|
24
|
-
describe "#multiline" do
|
25
|
-
it "adds line number markup to code" do
|
26
|
-
html = multiline("A few\nLines\n Here")
|
27
|
-
|
28
|
-
assert_match "<pre", html
|
29
|
-
assert_match "<ol class=\"linenums", html
|
30
|
-
assert_match "<li class=\"L1\"><span class=\"line\">A few</span></li>", html
|
31
|
-
assert_match "<li class=\"L2\"><span class=\"line\">Lines</span></li>", html
|
32
|
-
assert_match "<li class=\"L3\"><span class=\"line\"> Here</span></li>", html
|
33
|
-
end
|
34
|
-
|
35
|
-
it "adds custom class name" do
|
36
|
-
html = multiline("A few\nLines\n Here", :class_names => ["ruby"])
|
37
|
-
|
38
|
-
assert_match "prettyprint", html
|
39
|
-
assert_match "linenums", html
|
40
|
-
assert_match "ruby", html
|
41
|
-
end
|
42
|
-
end
|
24
|
+
describe Dolt::View::Blob do
|
25
|
+
include Dolt::View::Blob
|
26
|
+
include Dolt::View::SyntaxHighlight
|
43
27
|
|
44
28
|
describe "#highlight" do
|
45
29
|
it "highlights a Ruby file" do
|
@@ -57,7 +41,7 @@ describe Dolt::View do
|
|
57
41
|
end
|
58
42
|
|
59
43
|
it "highlights file with custom suffix" do
|
60
|
-
Dolt::View::
|
44
|
+
Dolt::View::SyntaxHighlight.add_lexer_alias("derp", "rb")
|
61
45
|
html = highlight("file.derp", "class File")
|
62
46
|
|
63
47
|
assert_match "<span class=\"k\">class</span>", html
|
@@ -71,18 +55,47 @@ describe Dolt::View do
|
|
71
55
|
end
|
72
56
|
end
|
73
57
|
|
74
|
-
describe "#
|
58
|
+
describe "#format_blob" do
|
75
59
|
it "highlights a Ruby file with line nums" do
|
76
|
-
html =
|
60
|
+
html = format_blob("file.rb", "class File\n attr_reader :path\nend")
|
77
61
|
|
78
62
|
assert_match "<li class=\"L1\">", html
|
79
63
|
assert_match "<span class=\"k\">class</span>", html
|
80
64
|
end
|
81
65
|
|
82
66
|
it "includes lexer as class name" do
|
83
|
-
html =
|
67
|
+
html = format_blob("file.rb", "class File\n attr_reader :path\nend")
|
84
68
|
|
85
69
|
assert_match "rb", html
|
86
70
|
end
|
87
71
|
end
|
72
|
+
|
73
|
+
describe "#lexer" do
|
74
|
+
it "uses known suffix" do
|
75
|
+
assert_equal "rb", lexer("file.rb")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "uses registered suffix" do
|
79
|
+
Dolt::View::SyntaxHighlight.add_lexer_alias("blarg", "blarg")
|
80
|
+
assert_equal "blarg", lexer("file.blarg")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "uses registered lexer" do
|
84
|
+
Dolt::View::SyntaxHighlight.add_lexer_alias("bg", "blarg")
|
85
|
+
assert_equal "blarg", lexer("file.bg")
|
86
|
+
end
|
87
|
+
|
88
|
+
it "uses known shebang" do
|
89
|
+
assert_equal "rb", lexer("some-binary", "#!/usr/bin/env ruby\n")
|
90
|
+
end
|
91
|
+
|
92
|
+
it "uses registered shebang" do
|
93
|
+
Dolt::View::SyntaxHighlight.add_lexer_shebang(/\bnode\b/, "js")
|
94
|
+
assert_equal "js", lexer("some-binary", "#!/usr/bin/env node\n")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "uses filename for unknown lexer" do
|
98
|
+
assert_equal "some-binary", lexer("some-binary", "class Person\nend")
|
99
|
+
end
|
100
|
+
end
|
88
101
|
end
|
@@ -0,0 +1,115 @@
|
|
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/view/single_repository"
|
20
|
+
require "dolt/view/object"
|
21
|
+
require "dolt/view/tree"
|
22
|
+
require "ostruct"
|
23
|
+
|
24
|
+
describe Dolt::View::Tree do
|
25
|
+
include Dolt::Html
|
26
|
+
include Dolt::View::SingleRepository
|
27
|
+
include Dolt::View::Object
|
28
|
+
include Dolt::View::Tree
|
29
|
+
|
30
|
+
describe "#tree_entries" do
|
31
|
+
before do
|
32
|
+
async = { :name => "async", :type => :tree }
|
33
|
+
disk_repo_resolver = { :type => :blob, :name => "disk_repo_resolver.rb" }
|
34
|
+
git = { :type => :tree, :name => "git" }
|
35
|
+
repo_actions = { :type => :blob, :name => "repo_actions.rb" }
|
36
|
+
sinatra = { :type => :tree, :name => "sinatra" }
|
37
|
+
template_renderer = { :type => :blob, :name => "template_renderer.rb" }
|
38
|
+
version = { :type => :blob, :name => "version.rb" }
|
39
|
+
view_rb = { :type => :blob, :name => "view.rb" }
|
40
|
+
view = { :type => :tree, :name => "view" }
|
41
|
+
@tree = OpenStruct.new({ :entries => [async, disk_repo_resolver, git,
|
42
|
+
repo_actions, sinatra, template_renderer,
|
43
|
+
version, view_rb, view] })
|
44
|
+
end
|
45
|
+
|
46
|
+
it "groups tree by type, dirs first" do
|
47
|
+
entries = tree_entries(@tree)
|
48
|
+
|
49
|
+
assert_equal :tree, entries[0][:type]
|
50
|
+
assert_equal :tree, entries[1][:type]
|
51
|
+
assert_equal :tree, entries[2][:type]
|
52
|
+
assert_equal :tree, entries[3][:type]
|
53
|
+
assert_equal :blob, entries[4][:type]
|
54
|
+
assert_equal :blob, entries[5][:type]
|
55
|
+
assert_equal :blob, entries[6][:type]
|
56
|
+
assert_equal :blob, entries[7][:type]
|
57
|
+
assert_equal :blob, entries[8][:type]
|
58
|
+
end
|
59
|
+
|
60
|
+
it "sorts by name" do
|
61
|
+
entries = tree_entries(@tree)
|
62
|
+
|
63
|
+
assert_equal "async", entries[0][:name]
|
64
|
+
assert_equal "git", entries[1][:name]
|
65
|
+
assert_equal "sinatra", entries[2][:name]
|
66
|
+
assert_equal "view", entries[3][:name]
|
67
|
+
assert_equal "disk_repo_resolver.rb", entries[4][:name]
|
68
|
+
assert_equal "repo_actions.rb", entries[5][:name]
|
69
|
+
assert_equal "template_renderer.rb", entries[6][:name]
|
70
|
+
assert_equal "version.rb", entries[7][:name]
|
71
|
+
assert_equal "view.rb", entries[8][:name]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "#tree_context" do
|
76
|
+
def context(path)
|
77
|
+
tree_context("gitorious", "master", path)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "renders root as empty string" do
|
81
|
+
assert_equal "", context("")
|
82
|
+
assert_equal "", context("/")
|
83
|
+
assert_equal "", context("./")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "renders single path item as table row" do
|
87
|
+
assert_equal 1, select(context("lib"), "tr").length
|
88
|
+
assert_equal 1, select(context("./lib"), "tr").length
|
89
|
+
end
|
90
|
+
|
91
|
+
it "renders single path item in cell" do
|
92
|
+
assert_equal 1, select(context("lib"), "td").length
|
93
|
+
end
|
94
|
+
|
95
|
+
it "renders single path item as link" do
|
96
|
+
assert_equal 1, select(context("lib"), "a").length
|
97
|
+
assert_match /lib/, select(context("lib"), "a").first
|
98
|
+
end
|
99
|
+
|
100
|
+
it "renders single path item with open folder icon" do
|
101
|
+
assert_match /icon-folder-open/, select(context("lib"), "i").first
|
102
|
+
end
|
103
|
+
|
104
|
+
it "renders two path items as two table rows" do
|
105
|
+
assert_equal 2, select(context("lib/dolt"), "tr").length
|
106
|
+
end
|
107
|
+
|
108
|
+
it "renders two path items with colspan in first row" do
|
109
|
+
assert_match /colspan="6"/, select(context("lib/dolt"), "tr").first
|
110
|
+
assert_match /colspan="5"/, select(context("lib/dolt"), "tr")[1]
|
111
|
+
tr = select(context("lib/dolt"), "tr")[1]
|
112
|
+
assert_equal 2, select(tr, "td").length
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -19,25 +19,30 @@ require "bundler/setup"
|
|
19
19
|
require "minitest/autorun"
|
20
20
|
require "em/minitest/spec"
|
21
21
|
require "eventmachine"
|
22
|
+
require "dolt/view"
|
22
23
|
|
23
24
|
Bundler.require(:default, :test)
|
24
25
|
|
25
26
|
module Dolt
|
26
|
-
module
|
27
|
-
def
|
28
|
-
|
29
|
-
rd, wr = IO::pipe
|
30
|
-
$stderr.reopen(wr)
|
31
|
-
yield
|
32
|
-
$stderr.reopen(new_stderr)
|
27
|
+
module Html
|
28
|
+
def select(html, tag_name)
|
29
|
+
html.scan(/<#{tag_name}[^>]*>.*?<\/#{tag_name}>/m)
|
33
30
|
end
|
31
|
+
end
|
34
32
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
module ViewTest
|
34
|
+
def prepare_renderer(root, options = {}, helpers = nil)
|
35
|
+
renderer = Dolt::TemplateRenderer.new(root, options)
|
36
|
+
renderer.helper(helpers || [Dolt::View::MultiRepository,
|
37
|
+
Dolt::View::Object,
|
38
|
+
Dolt::View::Blob,
|
39
|
+
Dolt::View::Tree,
|
40
|
+
Dolt::View::Blame,
|
41
|
+
Dolt::View::SyntaxHighlight,
|
42
|
+
Dolt::View::Commit,
|
43
|
+
Dolt::View::Gravatar,
|
44
|
+
Dolt::View::Breadcrumb])
|
45
|
+
renderer
|
41
46
|
end
|
42
47
|
end
|
43
48
|
end
|