read-only-gollum 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/HISTORY.md +102 -0
- data/Home.md +3 -0
- data/LICENSE +21 -0
- data/README.md +477 -0
- data/Rakefile +142 -0
- data/bin/read-only-gollum +126 -0
- data/docs/sanitization.md +32 -0
- data/lib/gollum.rb +41 -0
- data/lib/gollum/blob_entry.rb +78 -0
- data/lib/gollum/committer.rb +218 -0
- data/lib/gollum/file.rb +64 -0
- data/lib/gollum/frontend/app.rb +225 -0
- data/lib/gollum/frontend/public/css/dialog.css +141 -0
- data/lib/gollum/frontend/public/css/editor.css +537 -0
- data/lib/gollum/frontend/public/css/gollum.css +660 -0
- data/lib/gollum/frontend/public/css/ie7.css +69 -0
- data/lib/gollum/frontend/public/css/template.css +381 -0
- data/lib/gollum/frontend/public/images/icon-sprite.png +0 -0
- data/lib/gollum/frontend/public/javascript/editor/gollum.editor.js +1096 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/asciidoc.js +167 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/creole.js +104 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/markdown.js +211 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/org.js +173 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/pod.js +111 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/rdoc.js +74 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/textile.js +175 -0
- data/lib/gollum/frontend/public/javascript/gollum.dialog.js +263 -0
- data/lib/gollum/frontend/public/javascript/gollum.js +161 -0
- data/lib/gollum/frontend/public/javascript/gollum.placeholder.js +54 -0
- data/lib/gollum/frontend/public/javascript/jquery.color.js +123 -0
- data/lib/gollum/frontend/public/javascript/jquery.js +7179 -0
- data/lib/gollum/frontend/templates/compare.mustache +38 -0
- data/lib/gollum/frontend/templates/create.mustache +17 -0
- data/lib/gollum/frontend/templates/edit.mustache +17 -0
- data/lib/gollum/frontend/templates/editor.mustache +116 -0
- data/lib/gollum/frontend/templates/error.mustache +8 -0
- data/lib/gollum/frontend/templates/history.mustache +58 -0
- data/lib/gollum/frontend/templates/layout.mustache +28 -0
- data/lib/gollum/frontend/templates/page.mustache +37 -0
- data/lib/gollum/frontend/templates/pages.mustache +35 -0
- data/lib/gollum/frontend/templates/search.mustache +36 -0
- data/lib/gollum/frontend/templates/searchbar.mustache +10 -0
- data/lib/gollum/frontend/views/compare.rb +94 -0
- data/lib/gollum/frontend/views/create.rb +48 -0
- data/lib/gollum/frontend/views/edit.rb +52 -0
- data/lib/gollum/frontend/views/editable.rb +13 -0
- data/lib/gollum/frontend/views/error.rb +7 -0
- data/lib/gollum/frontend/views/history.rb +44 -0
- data/lib/gollum/frontend/views/layout.rb +20 -0
- data/lib/gollum/frontend/views/page.rb +57 -0
- data/lib/gollum/frontend/views/pages.rb +19 -0
- data/lib/gollum/frontend/views/search.rb +20 -0
- data/lib/gollum/git_access.rb +248 -0
- data/lib/gollum/markup.rb +489 -0
- data/lib/gollum/page.rb +430 -0
- data/lib/gollum/pagination.rb +61 -0
- data/lib/gollum/sanitization.rb +174 -0
- data/lib/gollum/tex.rb +89 -0
- data/lib/gollum/web_sequence_diagram.rb +43 -0
- data/lib/gollum/wiki.rb +636 -0
- data/read-only-gollum.gemspec +224 -0
- data/templates/formatting.html +92 -0
- data/test/examples/empty.git/HEAD +1 -0
- data/test/examples/empty.git/config +5 -0
- data/test/examples/empty.git/description +1 -0
- data/test/examples/empty.git/hooks/applypatch-msg.sample +15 -0
- data/test/examples/empty.git/hooks/commit-msg.sample +24 -0
- data/test/examples/empty.git/hooks/post-commit.sample +8 -0
- data/test/examples/empty.git/hooks/post-receive.sample +15 -0
- data/test/examples/empty.git/hooks/post-update.sample +8 -0
- data/test/examples/empty.git/hooks/pre-applypatch.sample +14 -0
- data/test/examples/empty.git/hooks/pre-commit.sample +46 -0
- data/test/examples/empty.git/hooks/pre-rebase.sample +169 -0
- data/test/examples/empty.git/hooks/prepare-commit-msg.sample +36 -0
- data/test/examples/empty.git/hooks/update.sample +128 -0
- data/test/examples/empty.git/info/exclude +6 -0
- data/test/examples/empty.git/objects/info/.gitkeep +0 -0
- data/test/examples/empty.git/objects/pack/.gitkeep +0 -0
- data/test/examples/empty.git/refs/heads/.gitkeep +0 -0
- data/test/examples/lotr.git/COMMIT_EDITMSG +1 -0
- data/test/examples/lotr.git/HEAD +1 -0
- data/test/examples/lotr.git/ORIG_HEAD +1 -0
- data/test/examples/lotr.git/config +12 -0
- data/test/examples/lotr.git/description +1 -0
- data/test/examples/lotr.git/index +0 -0
- data/test/examples/lotr.git/info/exclude +6 -0
- data/test/examples/lotr.git/logs/HEAD +3 -0
- data/test/examples/lotr.git/logs/refs/heads/master +3 -0
- data/test/examples/lotr.git/objects/06/131480411710c92a82fe2d1e76932c70feb2e5 +0 -0
- data/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 +0 -0
- data/test/examples/lotr.git/objects/0e/d8cbe0a25235bd867e65193c7d837c66b328ef +3 -0
- data/test/examples/lotr.git/objects/12/629d666c5e3178f82f533f543d61b53dc78c0b +0 -0
- data/test/examples/lotr.git/objects/1d/b89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 +2 -0
- data/test/examples/lotr.git/objects/24/49c2681badfd3c189e8ed658dacffe8ba48fe5 +0 -0
- data/test/examples/lotr.git/objects/25/4bdc1ba27d8b8a794538a8522d9a2b56ec2dd9 +0 -0
- data/test/examples/lotr.git/objects/2c/b9156ad383914561a8502fc70f5a1d887e48ad +4 -0
- data/test/examples/lotr.git/objects/5d/cac289a8603188d2c5caf481dcba2985126aaa +0 -0
- data/test/examples/lotr.git/objects/60/f12f4254f58801b9ee7db7bca5fa8aeefaa56b +0 -0
- data/test/examples/lotr.git/objects/71/4323c104239440a5c66ab12a67ed07a83c404f +0 -0
- data/test/examples/lotr.git/objects/84/0ec5b1ba1320e8ec443f28f99566f615d5af10 +0 -0
- data/test/examples/lotr.git/objects/93/6b83ee0dd8837adb82511e40d5e4ebe59bb675 +0 -0
- data/test/examples/lotr.git/objects/94/523d7ae48aeba575099dd12926420d8fd0425d +2 -0
- data/test/examples/lotr.git/objects/96/97dc65e095658bbd1b8e8678e08881e86d32f1 +0 -0
- data/test/examples/lotr.git/objects/a3/1ca2a7c352c92531a8b99815d15843b259e814 +0 -0
- data/test/examples/lotr.git/objects/a6/59b3763b822dd97544621fd0beef162ea37b14 +4 -0
- data/test/examples/lotr.git/objects/a8/ad3c09dd842a3517085bfadd37718856dee813 +0 -0
- data/test/examples/lotr.git/objects/aa/b61fe89d56f8614c0a8151da34f939dcedfa68 +0 -0
- data/test/examples/lotr.git/objects/bc/4b5fc0ce2c2ba3acef6647e4f67256ee45ab60 +0 -0
- data/test/examples/lotr.git/objects/c3/b43e9f08966b088e7a0192e436b7a884542e05 +0 -0
- data/test/examples/lotr.git/objects/dc/596d6b2dd89ab05c66f4abd7d5eb706bc17f19 +0 -0
- data/test/examples/lotr.git/objects/ec/da3205bee14520aab5a7bb307392064b938e83 +0 -0
- data/test/examples/lotr.git/objects/f4/84ebb1f40f8eb20d1bcd8d1d71934d2b8ae961 +0 -0
- data/test/examples/lotr.git/objects/fa/e7ef5344202bba4129abdc13060d9297d99465 +3 -0
- data/test/examples/lotr.git/objects/info/packs +2 -0
- data/test/examples/lotr.git/objects/pack/pack-dcbeaf3f6ff6c5eb08ea2b0a2d83626e8763546b.idx +0 -0
- data/test/examples/lotr.git/objects/pack/pack-dcbeaf3f6ff6c5eb08ea2b0a2d83626e8763546b.pack +0 -0
- data/test/examples/lotr.git/packed-refs +2 -0
- data/test/examples/lotr.git/refs/heads/master +1 -0
- data/test/examples/lotr.git/refs/remotes/origin/HEAD +1 -0
- data/test/examples/page_file_dir.git/COMMIT_EDITMSG +1 -0
- data/test/examples/page_file_dir.git/HEAD +1 -0
- data/test/examples/page_file_dir.git/config +6 -0
- data/test/examples/page_file_dir.git/description +1 -0
- data/test/examples/page_file_dir.git/index +0 -0
- data/test/examples/page_file_dir.git/info/exclude +6 -0
- data/test/examples/page_file_dir.git/logs/HEAD +1 -0
- data/test/examples/page_file_dir.git/logs/refs/heads/master +1 -0
- data/test/examples/page_file_dir.git/objects/0c/7d27db1f575263efdcab3dc650f4502a2dbcbf +0 -0
- data/test/examples/page_file_dir.git/objects/22/b404803c966dd92865614d86ff22ca12e50c1e +0 -0
- data/test/examples/page_file_dir.git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99 +0 -0
- data/test/examples/page_file_dir.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 +0 -0
- data/test/examples/page_file_dir.git/objects/5b/43e14e0a15fb6f08feab1773d1c0991e9f71e2 +0 -0
- data/test/examples/page_file_dir.git/refs/heads/master +1 -0
- data/test/examples/revert.git/COMMIT_EDITMSG +1 -0
- data/test/examples/revert.git/HEAD +1 -0
- data/test/examples/revert.git/config +12 -0
- data/test/examples/revert.git/description +1 -0
- data/test/examples/revert.git/index +0 -0
- data/test/examples/revert.git/info/exclude +6 -0
- data/test/examples/revert.git/logs/HEAD +2 -0
- data/test/examples/revert.git/logs/refs/heads/master +2 -0
- data/test/examples/revert.git/objects/20/2ced67cea93c7b6bd2928aa1daef8d1d55a20d +0 -0
- data/test/examples/revert.git/objects/41/76394bfa11222363c66ce7e84b5f154095b6d9 +0 -0
- data/test/examples/revert.git/objects/6a/69f92020f5df77af6e8813ff1232493383b708 +0 -0
- data/test/examples/revert.git/objects/b4/785957bc986dc39c629de9fac9df46972c00fc +0 -0
- data/test/examples/revert.git/objects/f4/03b791119f8232b7cb0ba455c624ac6435f433 +0 -0
- data/test/examples/revert.git/objects/info/packs +2 -0
- data/test/examples/revert.git/objects/pack/pack-a561f8437234f74d0bacb9e0eebe52d207f5770d.idx +0 -0
- data/test/examples/revert.git/objects/pack/pack-a561f8437234f74d0bacb9e0eebe52d207f5770d.pack +0 -0
- data/test/examples/revert.git/packed-refs +2 -0
- data/test/examples/revert.git/refs/heads/master +1 -0
- data/test/examples/revert.git/refs/remotes/origin/HEAD +1 -0
- data/test/examples/yubiwa.git/HEAD +1 -0
- data/test/examples/yubiwa.git/config +5 -0
- data/test/examples/yubiwa.git/description +1 -0
- data/test/examples/yubiwa.git/info/exclude +6 -0
- data/test/examples/yubiwa.git/objects/10/fa2ddc4e3b4009d8a453aace10bd6148c1ad00 +0 -0
- data/test/examples/yubiwa.git/objects/52/4b82874327ea7cbf730389964ba7cb3de966de +0 -0
- data/test/examples/yubiwa.git/objects/58/3fc201cb457fb3f1480f3e1e5999b119633835 +0 -0
- data/test/examples/yubiwa.git/objects/87/bc1dd46ab3d3874d4e898d45dd512cc20a7cc8 +1 -0
- data/test/examples/yubiwa.git/objects/89/64ed1b4e21aa90e831763bbce9034bfda81b70 +0 -0
- data/test/examples/yubiwa.git/objects/9f/f6dd0660da5fba2d3374adb2b84fa653bb538b +0 -0
- data/test/examples/yubiwa.git/objects/ac/e97abf2b177815a1972d7db22f229f58c83309 +0 -0
- data/test/examples/yubiwa.git/objects/b1/f443863a4816628807fbf86141ebef055dda34 +0 -0
- data/test/examples/yubiwa.git/refs/heads/master +1 -0
- data/test/helper.rb +66 -0
- data/test/test_app.rb +169 -0
- data/test/test_committer.rb +64 -0
- data/test/test_file.rb +27 -0
- data/test/test_git_access.rb +52 -0
- data/test/test_markup.rb +628 -0
- data/test/test_page.rb +166 -0
- data/test/test_page_revert.rb +45 -0
- data/test/test_wiki.rb +462 -0
- metadata +470 -0
data/test/test_page.rb
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
# ~*~ encoding: utf-8 ~*~
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
3
|
+
|
4
|
+
context "Page" do
|
5
|
+
setup do
|
6
|
+
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"))
|
7
|
+
end
|
8
|
+
|
9
|
+
test "new page" do
|
10
|
+
page = Gollum::Page.new(@wiki)
|
11
|
+
assert_nil page.raw_data
|
12
|
+
assert_nil page.formatted_data
|
13
|
+
end
|
14
|
+
|
15
|
+
test "get existing page" do
|
16
|
+
page = @wiki.page('Bilbo Baggins')
|
17
|
+
assert_equal Gollum::Page, page.class
|
18
|
+
assert page.raw_data =~ /^# Bilbo Baggins\n\nBilbo Baggins/
|
19
|
+
assert page.formatted_data =~ /<h1>Bilbo Baggins<\/h1>\n\n<p>Bilbo Baggins/
|
20
|
+
assert_equal 'Bilbo-Baggins.md', page.path
|
21
|
+
assert_equal :markdown, page.format
|
22
|
+
assert_equal @wiki.repo.commits.first.id, page.version.id
|
23
|
+
end
|
24
|
+
|
25
|
+
test "get existing page case insensitive" do
|
26
|
+
assert_equal @wiki.page('Bilbo Baggins').path, @wiki.page('bilbo baggins').path
|
27
|
+
end
|
28
|
+
|
29
|
+
test "get existing page with hyphen" do
|
30
|
+
assert_equal @wiki.page('Bilbo Baggins').path, @wiki.page('Bilbo-Baggins').path
|
31
|
+
end
|
32
|
+
|
33
|
+
test "get existing page with underscore" do
|
34
|
+
assert_nil @wiki.page('Bilbo_Baggins')
|
35
|
+
end
|
36
|
+
|
37
|
+
test "get existing page where filename contains whitespace, with hypen" do
|
38
|
+
assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise-Gamgee').path
|
39
|
+
end
|
40
|
+
|
41
|
+
test "get existing page where filename contains whitespace, with underscore" do
|
42
|
+
assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise_Gamgee').path
|
43
|
+
end
|
44
|
+
|
45
|
+
test "get existing page where filename contains whitespace, with whitespace" do
|
46
|
+
assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise Gamgee').path
|
47
|
+
end
|
48
|
+
|
49
|
+
test "get nested page" do
|
50
|
+
page = @wiki.page('Eye Of Sauron')
|
51
|
+
assert_equal 'Mordor/Eye-Of-Sauron.md', page.path
|
52
|
+
end
|
53
|
+
|
54
|
+
test "page versions" do
|
55
|
+
page = @wiki.page('Bilbo Baggins')
|
56
|
+
assert_equal ["f25eccd98e9b667f9e22946f3e2f945378b8a72d", "5bc1aaec6149e854078f1d0f8b71933bbc6c2e43"],
|
57
|
+
page.versions.map { |v| v.id }
|
58
|
+
end
|
59
|
+
|
60
|
+
test "page versions across renames" do
|
61
|
+
page = @wiki.page 'My-Precious'
|
62
|
+
assert_equal ['60f12f4254f58801b9ee7db7bca5fa8aeefaa56b', '94523d7ae48aeba575099dd12926420d8fd0425d'],
|
63
|
+
page.versions(:follow => true).map { |v| v.id }
|
64
|
+
end
|
65
|
+
|
66
|
+
test "page versions without renames" do
|
67
|
+
page = @wiki.page 'My-Precious'
|
68
|
+
assert_equal ['60f12f4254f58801b9ee7db7bca5fa8aeefaa56b'],
|
69
|
+
page.versions(:follow => false).map { |v| v.id }
|
70
|
+
end
|
71
|
+
|
72
|
+
test "specific page version" do
|
73
|
+
page = @wiki.page('Bilbo Baggins', 'fbabba862dfa7ac35b39042dd4ad780c9f67b8cb')
|
74
|
+
assert_equal 'fbabba862dfa7ac35b39042dd4ad780c9f67b8cb', page.version.id
|
75
|
+
end
|
76
|
+
|
77
|
+
test "no page match" do
|
78
|
+
assert_nil @wiki.page('I do not exist')
|
79
|
+
end
|
80
|
+
|
81
|
+
test "no version match" do
|
82
|
+
assert_nil @wiki.page('Bilbo Baggins', 'I do not exist')
|
83
|
+
end
|
84
|
+
|
85
|
+
test "no ext match" do
|
86
|
+
assert_nil @wiki.page('Data')
|
87
|
+
end
|
88
|
+
|
89
|
+
test "cname" do
|
90
|
+
assert_equal "Foo", Gollum::Page.cname("Foo")
|
91
|
+
assert_equal "Foo-Bar", Gollum::Page.cname("Foo Bar")
|
92
|
+
assert_equal "Foo---Bar", Gollum::Page.cname("Foo / Bar")
|
93
|
+
assert_equal "José", Gollum::Page.cname("José")
|
94
|
+
assert_equal "モルドール", Gollum::Page.cname("モルドール")
|
95
|
+
end
|
96
|
+
|
97
|
+
test "title from filename with normal contents" do
|
98
|
+
page = @wiki.page('Bilbo Baggins')
|
99
|
+
assert_equal 'Bilbo Baggins', page.title
|
100
|
+
end
|
101
|
+
|
102
|
+
test "title from filename with html contents" do
|
103
|
+
page = @wiki.page('My <b>Precious', '0ed8cbe0a25235bd867e65193c7d837c66b328ef')
|
104
|
+
assert_equal 'My Precious', page.title
|
105
|
+
end
|
106
|
+
|
107
|
+
test "title from h1 with normal contents" do
|
108
|
+
page = @wiki.page('Home')
|
109
|
+
assert_equal "The LOTR Wiki", page.title
|
110
|
+
end
|
111
|
+
|
112
|
+
test "title from h1 with html contents" do
|
113
|
+
page = @wiki.page('Eye Of Sauron')
|
114
|
+
assert_equal "Eye Of Sauron", page.title
|
115
|
+
end
|
116
|
+
|
117
|
+
test "top level footer" do
|
118
|
+
footer = @wiki.page('Home').footer
|
119
|
+
assert_equal 'Lord of the Rings wiki', footer.raw_data
|
120
|
+
assert_equal '_Footer.md', footer.path
|
121
|
+
end
|
122
|
+
|
123
|
+
test "nested footer" do
|
124
|
+
footer = @wiki.page('Eye Of Sauron').footer
|
125
|
+
assert_equal "Ones does not simply **walk** into Mordor!\n", footer.raw_data
|
126
|
+
assert_equal "Mordor/_Footer.md", footer.path
|
127
|
+
end
|
128
|
+
|
129
|
+
test "footer itself" do
|
130
|
+
footer = @wiki.page("_Footer")
|
131
|
+
assert_nil footer.footer
|
132
|
+
assert_nil footer.sidebar
|
133
|
+
end
|
134
|
+
|
135
|
+
test "top level sidebar" do
|
136
|
+
sidebar = @wiki.page('Home').sidebar
|
137
|
+
assert_equal 'Lord of the Rings wiki', sidebar.raw_data
|
138
|
+
assert_equal '_Sidebar.md', sidebar.path
|
139
|
+
end
|
140
|
+
|
141
|
+
test "nested sidebar" do
|
142
|
+
sidebar = @wiki.page('Eye Of Sauron').sidebar
|
143
|
+
assert_equal "Ones does not simply **walk** into Mordor!\n", sidebar.raw_data
|
144
|
+
assert_equal "Mordor/_Sidebar.md", sidebar.path
|
145
|
+
end
|
146
|
+
|
147
|
+
test "sidebar itself" do
|
148
|
+
sidebar = @wiki.page("_Sidebar")
|
149
|
+
assert_nil sidebar.footer
|
150
|
+
assert_nil sidebar.sidebar
|
151
|
+
end
|
152
|
+
|
153
|
+
test "cannot convert non string to human readable page title" do
|
154
|
+
assert_equal '', Gollum::Page.cname(nil)
|
155
|
+
assert_equal '', Gollum::Page.cname(3)
|
156
|
+
end
|
157
|
+
|
158
|
+
test "normalize_dir" do
|
159
|
+
assert_equal "", Gollum::BlobEntry.normalize_dir("")
|
160
|
+
assert_equal "", Gollum::BlobEntry.normalize_dir(".")
|
161
|
+
assert_equal "", Gollum::BlobEntry.normalize_dir("/")
|
162
|
+
assert_equal "", Gollum::BlobEntry.normalize_dir("c:/")
|
163
|
+
assert_equal "/foo", Gollum::BlobEntry.normalize_dir("foo")
|
164
|
+
assert_equal "/foo", Gollum::BlobEntry.normalize_dir("/foo")
|
165
|
+
end
|
166
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# ~*~ encoding: utf-8 ~*~
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
3
|
+
|
4
|
+
context "Page Reverting" do
|
5
|
+
setup do
|
6
|
+
@path = cloned_testpath("examples/revert.git")
|
7
|
+
@wiki = Gollum::Wiki.new(@path)
|
8
|
+
end
|
9
|
+
|
10
|
+
teardown do
|
11
|
+
FileUtils.rm_rf(@path)
|
12
|
+
end
|
13
|
+
|
14
|
+
test "reverts single commit" do
|
15
|
+
page1 = @wiki.page("B")
|
16
|
+
sha = @wiki.revert_commit('7c45b5f16ff3bae2a0063191ef832701214d4df5')
|
17
|
+
page2 = @wiki.page("B")
|
18
|
+
assert_equal sha, page2.version.sha
|
19
|
+
assert_equal "INITIAL", body=page2.raw_data.strip
|
20
|
+
assert_equal body, File.read(File.join(@path, "B.md")).strip
|
21
|
+
end
|
22
|
+
|
23
|
+
test "reverts single commit for a page" do
|
24
|
+
page1 = @wiki.page('B')
|
25
|
+
sha = @wiki.revert_page(page1, '7c45b5f16ff3bae2a0063191ef832701214d4df5')
|
26
|
+
page2 = @wiki.page('B')
|
27
|
+
assert_equal sha, page2.version.sha
|
28
|
+
assert_equal "INITIAL", body=page2.raw_data.strip
|
29
|
+
assert_equal body, File.read(File.join(@path, "B.md")).strip
|
30
|
+
end
|
31
|
+
|
32
|
+
test "reverts multiple commits for a page" do
|
33
|
+
page1 = @wiki.page('A')
|
34
|
+
sha = @wiki.revert_page(page1, '302a5491a9a5ba12c7652ac831a44961afa312d2^', 'b26b791cb7917c4f37dd9cb4d1e0efb24ac4d26f')
|
35
|
+
page2 = @wiki.page('A')
|
36
|
+
assert_equal sha, page2.version.sha
|
37
|
+
assert_equal "INITIAL", body=page2.raw_data.strip
|
38
|
+
assert_equal body, File.read(File.join(@path, "A.md")).strip
|
39
|
+
end
|
40
|
+
|
41
|
+
test "cannot revert conflicting commit" do
|
42
|
+
page1 = @wiki.page('A')
|
43
|
+
assert_equal false, @wiki.revert_page(page1, '302a5491a9a5ba12c7652ac831a44961afa312d2')
|
44
|
+
end
|
45
|
+
end
|
data/test/test_wiki.rb
ADDED
@@ -0,0 +1,462 @@
|
|
1
|
+
# ~*~ encoding: utf-8 ~*~
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
3
|
+
|
4
|
+
context "Wiki" do
|
5
|
+
setup do
|
6
|
+
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"))
|
7
|
+
Gollum::Wiki.markup_classes = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
test "#markup_class gets default markup" do
|
11
|
+
assert_equal Gollum::Markup, Gollum::Wiki.markup_class
|
12
|
+
end
|
13
|
+
|
14
|
+
test "#default_markup_class= doesn't clobber alternate markups" do
|
15
|
+
custom = Class.new(Gollum::Markup)
|
16
|
+
custom_md = Class.new(Gollum::Markup)
|
17
|
+
|
18
|
+
Gollum::Wiki.markup_classes = Hash.new Gollum::Markup
|
19
|
+
Gollum::Wiki.markup_classes[:markdown] = custom_md
|
20
|
+
Gollum::Wiki.default_markup_class = custom
|
21
|
+
|
22
|
+
assert_equal custom, Gollum::Wiki.default_markup_class
|
23
|
+
assert_equal custom, Gollum::Wiki.markup_classes[:orgmode]
|
24
|
+
assert_equal custom_md, Gollum::Wiki.markup_classes[:markdown]
|
25
|
+
end
|
26
|
+
|
27
|
+
test "repo path" do
|
28
|
+
assert_equal testpath("examples/lotr.git"), @wiki.path
|
29
|
+
end
|
30
|
+
|
31
|
+
test "git repo" do
|
32
|
+
assert_equal Grit::Repo, @wiki.repo.class
|
33
|
+
assert @wiki.exist?
|
34
|
+
end
|
35
|
+
|
36
|
+
test "shows paginated log with no page" do
|
37
|
+
Gollum::Wiki.per_page = 3
|
38
|
+
commits = @wiki.repo.commits[0..2].map { |x| x.id }
|
39
|
+
assert_equal commits, @wiki.log.map { |c| c.id }
|
40
|
+
end
|
41
|
+
|
42
|
+
test "shows paginated log with 1st page" do
|
43
|
+
Gollum::Wiki.per_page = 3
|
44
|
+
commits = @wiki.repo.commits[0..2].map { |x| x.id }
|
45
|
+
assert_equal commits, @wiki.log(:page => 1).map { |c| c.id }
|
46
|
+
end
|
47
|
+
|
48
|
+
test "shows paginated log with next page" do
|
49
|
+
Gollum::Wiki.per_page = 3
|
50
|
+
commits = @wiki.repo.commits[3..5].map { |x| x.id }
|
51
|
+
assert_equal commits, @wiki.log(:page => 2).map { |c| c.id }
|
52
|
+
end
|
53
|
+
|
54
|
+
test "list pages" do
|
55
|
+
pages = @wiki.pages
|
56
|
+
assert_equal \
|
57
|
+
['Bilbo-Baggins.md', 'Eye-Of-Sauron.md', 'Home.textile', 'My-Precious.md', 'Samwise Gamgee.mediawiki'],
|
58
|
+
pages.map { |p| p.filename }.sort
|
59
|
+
end
|
60
|
+
|
61
|
+
test "counts pages" do
|
62
|
+
assert_equal 5, @wiki.size
|
63
|
+
end
|
64
|
+
|
65
|
+
test "text_data" do
|
66
|
+
wiki = Gollum::Wiki.new(testpath("examples/yubiwa.git"))
|
67
|
+
if String.instance_methods.include?(:encoding)
|
68
|
+
utf8 = wiki.page("strider").text_data
|
69
|
+
assert_equal Encoding::UTF_8, utf8.encoding
|
70
|
+
sjis = wiki.page("sjis").text_data(Encoding::SHIFT_JIS)
|
71
|
+
assert_equal Encoding::SHIFT_JIS, sjis.encoding
|
72
|
+
else
|
73
|
+
page = wiki.page("strider")
|
74
|
+
assert_equal page.raw_data, page.text_data
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
test "gets reverse diff" do
|
79
|
+
diff = @wiki.full_reverse_diff('a8ad3c09dd842a3517085bfadd37718856dee813')
|
80
|
+
assert_match "b/Mordor/_Sidebar.md", diff
|
81
|
+
assert_match "b/_Sidebar.md", diff
|
82
|
+
end
|
83
|
+
|
84
|
+
test "gets reverse diff for a page" do
|
85
|
+
diff = @wiki.full_reverse_diff_for('_Sidebar.md', 'a8ad3c09dd842a3517085bfadd37718856dee813')
|
86
|
+
regex = /b\/Mordor\/\_Sidebar\.md/
|
87
|
+
assert_match "b/_Sidebar.md", diff
|
88
|
+
assert_no_match regex, diff
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "Wiki page previewing" do
|
93
|
+
setup do
|
94
|
+
@path = testpath("examples/lotr.git")
|
95
|
+
@wiki = Gollum::Wiki.new(@path)
|
96
|
+
end
|
97
|
+
|
98
|
+
test "preview_page" do
|
99
|
+
page = @wiki.preview_page("Test", "# Bilbo", :markdown)
|
100
|
+
assert_equal "# Bilbo", page.raw_data
|
101
|
+
assert_equal "<h1>Bilbo</h1>", page.formatted_data
|
102
|
+
assert_equal "Test.md", page.filename
|
103
|
+
assert_equal "Test", page.name
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "Wiki page writing" do
|
108
|
+
setup do
|
109
|
+
@path = testpath("examples/test.git")
|
110
|
+
FileUtils.rm_rf(@path)
|
111
|
+
Grit::Repo.init_bare(@path)
|
112
|
+
@wiki = Gollum::Wiki.new(@path)
|
113
|
+
end
|
114
|
+
|
115
|
+
test "write_page" do
|
116
|
+
cd = commit_details
|
117
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", cd)
|
118
|
+
assert_equal 1, @wiki.repo.commits.size
|
119
|
+
assert_equal cd[:message], @wiki.repo.commits.first.message
|
120
|
+
assert_equal cd[:name], @wiki.repo.commits.first.author.name
|
121
|
+
assert_equal cd[:email], @wiki.repo.commits.first.author.email
|
122
|
+
assert @wiki.page("Gollum")
|
123
|
+
|
124
|
+
@wiki.write_page("Bilbo", :markdown, "# Bilbo", commit_details)
|
125
|
+
assert_equal 2, @wiki.repo.commits.size
|
126
|
+
assert @wiki.page("Bilbo")
|
127
|
+
assert @wiki.page("Gollum")
|
128
|
+
end
|
129
|
+
|
130
|
+
test "is not allowed to overwrite file" do
|
131
|
+
@wiki.write_page("Abc-Def", :markdown, "# Gollum", commit_details)
|
132
|
+
assert_raises Gollum::DuplicatePageError do
|
133
|
+
@wiki.write_page("ABC DEF", :textile, "# Gollum", commit_details)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
test "update_page" do
|
138
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", commit_details)
|
139
|
+
|
140
|
+
page = @wiki.page("Gollum")
|
141
|
+
cd = commit_details
|
142
|
+
@wiki.update_page(page, page.name, :markdown, "# Gollum2", cd)
|
143
|
+
|
144
|
+
assert_equal 2, @wiki.repo.commits.size
|
145
|
+
assert_equal "# Gollum2", @wiki.page("Gollum").raw_data
|
146
|
+
assert_equal cd[:message], @wiki.repo.commits.first.message
|
147
|
+
assert_equal cd[:name], @wiki.repo.commits.first.author.name
|
148
|
+
assert_equal cd[:email], @wiki.repo.commits.first.author.email
|
149
|
+
end
|
150
|
+
|
151
|
+
test "update page with format change" do
|
152
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", commit_details)
|
153
|
+
|
154
|
+
assert_equal :markdown, @wiki.page("Gollum").format
|
155
|
+
|
156
|
+
page = @wiki.page("Gollum")
|
157
|
+
@wiki.update_page(page, page.name, :textile, "h1. Gollum", commit_details)
|
158
|
+
|
159
|
+
assert_equal 2, @wiki.repo.commits.size
|
160
|
+
assert_equal :textile, @wiki.page("Gollum").format
|
161
|
+
assert_equal "h1. Gollum", @wiki.page("Gollum").raw_data
|
162
|
+
end
|
163
|
+
|
164
|
+
test "update page with name change" do
|
165
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", commit_details)
|
166
|
+
|
167
|
+
assert_equal :markdown, @wiki.page("Gollum").format
|
168
|
+
|
169
|
+
page = @wiki.page("Gollum")
|
170
|
+
@wiki.update_page(page, 'Smeagol', :markdown, "h1. Gollum", commit_details)
|
171
|
+
|
172
|
+
assert_equal 2, @wiki.repo.commits.size
|
173
|
+
assert_equal "h1. Gollum", @wiki.page("Smeagol").raw_data
|
174
|
+
end
|
175
|
+
|
176
|
+
test "update page with name and format change" do
|
177
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", commit_details)
|
178
|
+
|
179
|
+
assert_equal :markdown, @wiki.page("Gollum").format
|
180
|
+
|
181
|
+
page = @wiki.page("Gollum")
|
182
|
+
@wiki.update_page(page, 'Smeagol', :textile, "h1. Gollum", commit_details)
|
183
|
+
|
184
|
+
assert_equal 2, @wiki.repo.commits.size
|
185
|
+
assert_equal :textile, @wiki.page("Smeagol").format
|
186
|
+
assert_equal "h1. Gollum", @wiki.page("Smeagol").raw_data
|
187
|
+
end
|
188
|
+
|
189
|
+
test "update nested page with format change" do
|
190
|
+
index = @wiki.repo.index
|
191
|
+
index.add("lotr/Gollum.md", "# Gollum")
|
192
|
+
index.commit("Add nested page")
|
193
|
+
|
194
|
+
page = @wiki.page("Gollum")
|
195
|
+
assert_equal :markdown, @wiki.page("Gollum").format
|
196
|
+
@wiki.update_page(page, page.name, :textile, "h1. Gollum", commit_details)
|
197
|
+
|
198
|
+
page = @wiki.page("Gollum")
|
199
|
+
assert_equal "lotr/Gollum.textile", page.path
|
200
|
+
assert_equal :textile, page.format
|
201
|
+
assert_equal "h1. Gollum", page.raw_data
|
202
|
+
end
|
203
|
+
|
204
|
+
test "delete root page" do
|
205
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", commit_details)
|
206
|
+
|
207
|
+
page = @wiki.page("Gollum")
|
208
|
+
@wiki.delete_page(page, commit_details)
|
209
|
+
|
210
|
+
assert_equal 2, @wiki.repo.commits.size
|
211
|
+
assert_nil @wiki.page("Gollum")
|
212
|
+
end
|
213
|
+
|
214
|
+
test "delete nested page" do
|
215
|
+
index = @wiki.repo.index
|
216
|
+
index.add("greek/Bilbo-Baggins.md", "hi")
|
217
|
+
index.add("Gollum.md", "hi")
|
218
|
+
index.commit("Add alpha.jpg")
|
219
|
+
|
220
|
+
page = @wiki.page("Bilbo-Baggins")
|
221
|
+
assert page
|
222
|
+
@wiki.delete_page(page, commit_details)
|
223
|
+
|
224
|
+
assert_equal 2, @wiki.repo.commits.size
|
225
|
+
assert_nil @wiki.page("Bilbo-Baggins")
|
226
|
+
|
227
|
+
assert @wiki.page("Gollum")
|
228
|
+
end
|
229
|
+
|
230
|
+
teardown do
|
231
|
+
FileUtils.rm_r(File.join(File.dirname(__FILE__), *%w[examples test.git]))
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "Wiki page writing with whitespace (filename contains whitespace)" do
|
236
|
+
setup do
|
237
|
+
@path = cloned_testpath("examples/lotr.git")
|
238
|
+
@wiki = Gollum::Wiki.new(@path)
|
239
|
+
end
|
240
|
+
|
241
|
+
test "update_page" do
|
242
|
+
assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format
|
243
|
+
assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename
|
244
|
+
|
245
|
+
page = @wiki.page("Samwise Gamgee")
|
246
|
+
@wiki.update_page(page, page.name, :textile, "h1. Samwise Gamgee2", commit_details)
|
247
|
+
|
248
|
+
assert_equal :textile, @wiki.page("Samwise Gamgee").format
|
249
|
+
assert_equal "h1. Samwise Gamgee2", @wiki.page("Samwise Gamgee").raw_data
|
250
|
+
assert_equal "Samwise Gamgee.textile", @wiki.page("Samwise Gamgee").filename
|
251
|
+
end
|
252
|
+
|
253
|
+
test "update page with format change, verify non-canonicalization of filename, where filename contains Whitespace" do
|
254
|
+
assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format
|
255
|
+
assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename
|
256
|
+
|
257
|
+
page = @wiki.page("Samwise Gamgee")
|
258
|
+
@wiki.update_page(page, page.name, :textile, "h1. Samwise Gamgee", commit_details)
|
259
|
+
|
260
|
+
assert_equal :textile, @wiki.page("Samwise Gamgee").format
|
261
|
+
assert_equal "h1. Samwise Gamgee", @wiki.page("Samwise Gamgee").raw_data
|
262
|
+
assert_equal "Samwise Gamgee.textile", @wiki.page("Samwise Gamgee").filename
|
263
|
+
end
|
264
|
+
|
265
|
+
test "update page with name change, verify canonicalization of filename, where filename contains Whitespace" do
|
266
|
+
assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format
|
267
|
+
assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename
|
268
|
+
|
269
|
+
page = @wiki.page("Samwise Gamgee")
|
270
|
+
@wiki.update_page(page, 'Sam Gamgee', :textile, "h1. Samwise Gamgee", commit_details)
|
271
|
+
|
272
|
+
assert_equal "h1. Samwise Gamgee", @wiki.page("Sam Gamgee").raw_data
|
273
|
+
assert_equal "Sam-Gamgee.textile", @wiki.page("Sam Gamgee").filename
|
274
|
+
end
|
275
|
+
|
276
|
+
test "update page with name and format change, verify canonicalization of filename, where filename contains Whitespace" do
|
277
|
+
assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format
|
278
|
+
assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename
|
279
|
+
|
280
|
+
page = @wiki.page("Samwise Gamgee")
|
281
|
+
@wiki.update_page(page, 'Sam Gamgee', :textile, "h1. Samwise Gamgee", commit_details)
|
282
|
+
|
283
|
+
assert_equal :textile, @wiki.page("Sam Gamgee").format
|
284
|
+
assert_equal "h1. Samwise Gamgee", @wiki.page("Sam Gamgee").raw_data
|
285
|
+
assert_equal "Sam-Gamgee.textile", @wiki.page("Sam Gamgee").filename
|
286
|
+
end
|
287
|
+
|
288
|
+
teardown do
|
289
|
+
FileUtils.rm_rf(@path)
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
context "Wiki sync with working directory" do
|
294
|
+
setup do
|
295
|
+
@path = testpath('examples/wdtest')
|
296
|
+
Grit::Repo.init(@path)
|
297
|
+
@wiki = Gollum::Wiki.new(@path)
|
298
|
+
end
|
299
|
+
|
300
|
+
test "write a page" do
|
301
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
302
|
+
assert_equal "Hi", File.read(File.join(@path, "New-Page.md"))
|
303
|
+
end
|
304
|
+
|
305
|
+
test "update a page with same name and format" do
|
306
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
307
|
+
page = @wiki.page("New Page")
|
308
|
+
@wiki.update_page(page, page.name, page.format, "Bye", commit_details)
|
309
|
+
assert_equal "Bye", File.read(File.join(@path, "New-Page.md"))
|
310
|
+
end
|
311
|
+
|
312
|
+
test "update a page with different name and same format" do
|
313
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
314
|
+
page = @wiki.page("New Page")
|
315
|
+
@wiki.update_page(page, "New Page 2", page.format, "Bye", commit_details)
|
316
|
+
assert_equal "Bye", File.read(File.join(@path, "New-Page-2.md"))
|
317
|
+
assert !File.exist?(File.join(@path, "New-Page.md"))
|
318
|
+
end
|
319
|
+
|
320
|
+
test "update a page with same name and different format" do
|
321
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
322
|
+
page = @wiki.page("New Page")
|
323
|
+
@wiki.update_page(page, page.name, :textile, "Bye", commit_details)
|
324
|
+
assert_equal "Bye", File.read(File.join(@path, "New-Page.textile"))
|
325
|
+
assert !File.exist?(File.join(@path, "New-Page.md"))
|
326
|
+
end
|
327
|
+
|
328
|
+
test "update a page with different name and different format" do
|
329
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
330
|
+
page = @wiki.page("New Page")
|
331
|
+
@wiki.update_page(page, "New Page 2", :textile, "Bye", commit_details)
|
332
|
+
assert_equal "Bye", File.read(File.join(@path, "New-Page-2.textile"))
|
333
|
+
assert !File.exist?(File.join(@path, "New-Page.md"))
|
334
|
+
end
|
335
|
+
|
336
|
+
test "delete a page" do
|
337
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
338
|
+
page = @wiki.page("New Page")
|
339
|
+
@wiki.delete_page(page, commit_details)
|
340
|
+
assert !File.exist?(File.join(@path, "New-Page.md"))
|
341
|
+
end
|
342
|
+
|
343
|
+
teardown do
|
344
|
+
FileUtils.rm_r(@path)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
context "Wiki sync with working directory (filename contains whitespace)" do
|
349
|
+
setup do
|
350
|
+
@path = cloned_testpath("examples/lotr.git")
|
351
|
+
@wiki = Gollum::Wiki.new(@path)
|
352
|
+
end
|
353
|
+
test "update a page with same name and format" do
|
354
|
+
page = @wiki.page("Samwise Gamgee")
|
355
|
+
@wiki.update_page(page, page.name, page.format, "What we need is a few good taters.", commit_details)
|
356
|
+
assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Samwise Gamgee.mediawiki"))
|
357
|
+
end
|
358
|
+
|
359
|
+
test "update a page with different name and same format" do
|
360
|
+
page = @wiki.page("Samwise Gamgee")
|
361
|
+
@wiki.update_page(page, "Sam Gamgee", page.format, "What we need is a few good taters.", commit_details)
|
362
|
+
assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Sam-Gamgee.mediawiki"))
|
363
|
+
assert !File.exist?(File.join(@path, "Samwise Gamgee"))
|
364
|
+
end
|
365
|
+
|
366
|
+
test "update a page with same name and different format" do
|
367
|
+
page = @wiki.page("Samwise Gamgee")
|
368
|
+
@wiki.update_page(page, page.name, :textile, "What we need is a few good taters.", commit_details)
|
369
|
+
assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Samwise Gamgee.textile"))
|
370
|
+
assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki"))
|
371
|
+
end
|
372
|
+
|
373
|
+
test "update a page with different name and different format" do
|
374
|
+
page = @wiki.page("Samwise Gamgee")
|
375
|
+
@wiki.update_page(page, "Sam Gamgee", :textile, "What we need is a few good taters.", commit_details)
|
376
|
+
assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Sam-Gamgee.textile"))
|
377
|
+
assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki"))
|
378
|
+
end
|
379
|
+
|
380
|
+
test "delete a page" do
|
381
|
+
page = @wiki.page("Samwise Gamgee")
|
382
|
+
@wiki.delete_page(page, commit_details)
|
383
|
+
assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki"))
|
384
|
+
end
|
385
|
+
|
386
|
+
teardown do
|
387
|
+
FileUtils.rm_r(@path)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
context "page_file_dir option" do
|
392
|
+
setup do
|
393
|
+
@path = cloned_testpath('examples/page_file_dir')
|
394
|
+
@repo = Grit::Repo.init(@path)
|
395
|
+
@page_file_dir = 'docs'
|
396
|
+
@wiki = Gollum::Wiki.new(@path, :page_file_dir => @page_file_dir)
|
397
|
+
end
|
398
|
+
|
399
|
+
test "write a page in sub directory" do
|
400
|
+
@wiki.write_page("New Page", :markdown, "Hi", commit_details)
|
401
|
+
assert_equal "Hi", File.read(File.join(@path, @page_file_dir, "New-Page.md"))
|
402
|
+
assert !File.exist?(File.join(@path, "New-Page.md"))
|
403
|
+
end
|
404
|
+
|
405
|
+
test "edit a page in a sub directory" do
|
406
|
+
page = @wiki.page('foo')
|
407
|
+
@wiki.update_page(page, page.name, page.format, 'new contents', commit_details)
|
408
|
+
end
|
409
|
+
|
410
|
+
test "a file in page file dir should be found" do
|
411
|
+
assert @wiki.page("foo")
|
412
|
+
end
|
413
|
+
|
414
|
+
test "a file out of page file dir should not be found" do
|
415
|
+
assert !@wiki.page("bar")
|
416
|
+
end
|
417
|
+
|
418
|
+
test "search results should be restricted in page filer dir" do
|
419
|
+
results = @wiki.search("foo")
|
420
|
+
assert_equal 1, results.size
|
421
|
+
assert_equal "foo", results[0][:name]
|
422
|
+
end
|
423
|
+
|
424
|
+
teardown do
|
425
|
+
FileUtils.rm_r(@path)
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
context "Wiki page writing with different branch" do
|
430
|
+
setup do
|
431
|
+
@path = testpath("examples/test.git")
|
432
|
+
FileUtils.rm_rf(@path)
|
433
|
+
@repo = Grit::Repo.init_bare(@path)
|
434
|
+
@wiki = Gollum::Wiki.new(@path)
|
435
|
+
|
436
|
+
# We need an initial commit to create the master branch
|
437
|
+
# before we can create new branches
|
438
|
+
cd = commit_details
|
439
|
+
@wiki.write_page("Gollum", :markdown, "# Gollum", cd)
|
440
|
+
|
441
|
+
# Create our test branch and check it out
|
442
|
+
@repo.update_ref("test", @repo.commits.first.id)
|
443
|
+
@branch = Gollum::Wiki.new(@path, :ref => "test")
|
444
|
+
end
|
445
|
+
|
446
|
+
teardown do
|
447
|
+
FileUtils.rm_rf(@path)
|
448
|
+
end
|
449
|
+
|
450
|
+
test "write_page" do
|
451
|
+
cd = commit_details
|
452
|
+
|
453
|
+
@branch.write_page("Bilbo", :markdown, "# Bilbo", commit_details)
|
454
|
+
assert @branch.page("Bilbo")
|
455
|
+
assert @wiki.page("Gollum")
|
456
|
+
|
457
|
+
assert_equal 1, @wiki.repo.commits.size
|
458
|
+
assert_equal 1, @branch.repo.commits.size
|
459
|
+
|
460
|
+
assert_equal nil, @wiki.page("Bilbo")
|
461
|
+
end
|
462
|
+
end
|