read-only-gollum 1.4.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 +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
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/remotes/origin/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
initial commit
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/heads/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Unnamed repository; edit this file 'description' to name the repository.
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 22b404803c966dd92865614d86ff22ca12e50c1e rick <technoweenie@gmail.com> 1295287591 -0800 commit (initial): initial commit
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 22b404803c966dd92865614d86ff22ca12e50c1e rick <technoweenie@gmail.com> 1295287591 -0800 commit (initial): initial commit
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
22b404803c966dd92865614d86ff22ca12e50c1e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
add footer and sidebar
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/heads/master
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[core]
|
|
2
|
+
repositoryformatversion = 0
|
|
3
|
+
filemode = true
|
|
4
|
+
bare = false
|
|
5
|
+
logallrefupdates = true
|
|
6
|
+
ignorecase = true
|
|
7
|
+
[remote "origin"]
|
|
8
|
+
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
9
|
+
url = /Users/rick/p/gollum/test/examples/revert.git
|
|
10
|
+
[branch "master"]
|
|
11
|
+
remote = origin
|
|
12
|
+
merge = refs/heads/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Unnamed repository; edit this file 'description' to name the repository.
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 7c45b5f16ff3bae2a0063191ef832701214d4df5 rick <technoweenie@gmail.com> 1291942707 -0800 clone: from /Users/rick/p/gollum/test/examples/revert.git
|
|
2
|
+
7c45b5f16ff3bae2a0063191ef832701214d4df5 f403b791119f8232b7cb0ba455c624ac6435f433 rick <technoweenie@gmail.com> 1291942743 -0800 commit: add footer and sidebar
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 7c45b5f16ff3bae2a0063191ef832701214d4df5 rick <technoweenie@gmail.com> 1291942707 -0800 clone: from /Users/rick/p/gollum/test/examples/revert.git
|
|
2
|
+
7c45b5f16ff3bae2a0063191ef832701214d4df5 f403b791119f8232b7cb0ba455c624ac6435f433 rick <technoweenie@gmail.com> 1291942743 -0800 commit: add footer and sidebar
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f403b791119f8232b7cb0ba455c624ac6435f433
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/remotes/origin/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/heads/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Unnamed repository; edit this file 'description' to name the repository.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
x��Aj�0E��)���Ȓ��PJC�4�i${ �Y��A��-ދ�m�`��jJ�s���{�4�@��;���i��G����O[��S���J�����7��Fr{��������̌g3�=�c�ҿ݉91wZ����FRv-8]ϗ�ሸR�شÄT������[N�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8964ed1b4e21aa90e831763bbce9034bfda81b70
|
data/test/helper.rb
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rack/test'
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'shoulda'
|
|
5
|
+
require 'mocha'
|
|
6
|
+
require 'fileutils'
|
|
7
|
+
|
|
8
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
|
9
|
+
$LOAD_PATH.unshift(File.join(dir, '..', 'lib'))
|
|
10
|
+
$LOAD_PATH.unshift(dir)
|
|
11
|
+
|
|
12
|
+
ENV['RACK_ENV'] = 'test'
|
|
13
|
+
require 'gollum'
|
|
14
|
+
require 'gollum/frontend/app'
|
|
15
|
+
|
|
16
|
+
# Make sure we're in the test dir, the tests expect that to be the current
|
|
17
|
+
# directory.
|
|
18
|
+
TEST_DIR = File.join(File.dirname(__FILE__), *%w[.])
|
|
19
|
+
|
|
20
|
+
def testpath(path)
|
|
21
|
+
File.join(TEST_DIR, path)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def cloned_testpath(path)
|
|
25
|
+
repo = File.expand_path(testpath(path))
|
|
26
|
+
path = File.dirname(repo)
|
|
27
|
+
cloned = File.join(path, self.class.name)
|
|
28
|
+
FileUtils.rm_rf(cloned)
|
|
29
|
+
Dir.chdir(path) do
|
|
30
|
+
%x{git clone #{File.basename(repo)} #{self.class.name} 2>/dev/null}
|
|
31
|
+
end
|
|
32
|
+
cloned
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def commit_details
|
|
36
|
+
{ :message => "Did something at #{Time.now}",
|
|
37
|
+
:name => "Tom Preston-Werner",
|
|
38
|
+
:email => "tom@github.com" }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def normal(text)
|
|
42
|
+
text.gsub!(' ', '')
|
|
43
|
+
text.gsub!("\n", '')
|
|
44
|
+
text
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# test/spec/mini 3
|
|
48
|
+
# http://gist.github.com/25455
|
|
49
|
+
# chris@ozmm.org
|
|
50
|
+
# file:lib/test/spec/mini.rb
|
|
51
|
+
def context(*args, &block)
|
|
52
|
+
return super unless (name = args.first) && block
|
|
53
|
+
require 'test/unit'
|
|
54
|
+
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
|
|
55
|
+
def self.test(name, &block)
|
|
56
|
+
define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
|
|
57
|
+
end
|
|
58
|
+
def self.xtest(*args) end
|
|
59
|
+
def self.setup(&block) define_method(:setup, &block) end
|
|
60
|
+
def self.teardown(&block) define_method(:teardown, &block) end
|
|
61
|
+
end
|
|
62
|
+
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
|
|
63
|
+
$contexts << klass
|
|
64
|
+
klass.class_eval &block
|
|
65
|
+
end
|
|
66
|
+
$contexts = []
|
data/test/test_app.rb
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# ~*~ encoding: utf-8 ~*~
|
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
|
3
|
+
|
|
4
|
+
context "Frontend" do
|
|
5
|
+
include Rack::Test::Methods
|
|
6
|
+
|
|
7
|
+
setup do
|
|
8
|
+
@path = cloned_testpath("examples/revert.git")
|
|
9
|
+
@wiki = Gollum::Wiki.new(@path)
|
|
10
|
+
Precious::App.set(:gollum_path, @path)
|
|
11
|
+
Precious::App.set(:wiki_options, {})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
teardown do
|
|
15
|
+
FileUtils.rm_rf(@path)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "edits page" do
|
|
19
|
+
page_1 = @wiki.page('A')
|
|
20
|
+
post "/edit/A", :content => 'abc',
|
|
21
|
+
:format => page_1.format, :message => 'def'
|
|
22
|
+
follow_redirect!
|
|
23
|
+
assert last_response.ok?
|
|
24
|
+
|
|
25
|
+
@wiki.clear_cache
|
|
26
|
+
page_2 = @wiki.page(page_1.name)
|
|
27
|
+
assert_equal 'abc', page_2.raw_data
|
|
28
|
+
assert_equal 'def', page_2.version.message
|
|
29
|
+
assert_not_equal page_1.version.sha, page_2.version.sha
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "edits page footer and sidebar" do
|
|
33
|
+
commits = @wiki.repo.commits('master').size
|
|
34
|
+
page_1 = @wiki.page('A')
|
|
35
|
+
foot_1 = page_1.footer
|
|
36
|
+
side_1 = page_1.sidebar
|
|
37
|
+
|
|
38
|
+
post "/edit/A",
|
|
39
|
+
:footer => 'footer', :page => "A", :sidebar => 'sidebar', :message => 'def'
|
|
40
|
+
follow_redirect!
|
|
41
|
+
assert_equal "/A", last_request.fullpath
|
|
42
|
+
assert last_response.ok?
|
|
43
|
+
|
|
44
|
+
@wiki.clear_cache
|
|
45
|
+
page_2 = @wiki.page(page_1.name)
|
|
46
|
+
foot_2 = page_2.footer
|
|
47
|
+
side_2 = page_2.sidebar
|
|
48
|
+
assert_equal page_1.raw_data, page_2.raw_data
|
|
49
|
+
|
|
50
|
+
assert_equal 'footer', foot_2.raw_data
|
|
51
|
+
assert_equal 'def', foot_2.version.message
|
|
52
|
+
assert_not_equal foot_1.version.sha, foot_2.version.sha
|
|
53
|
+
|
|
54
|
+
assert_equal 'sidebar', side_2.raw_data
|
|
55
|
+
assert_equal 'def', side_2.version.message
|
|
56
|
+
assert_not_equal side_1.version.sha, side_2.version.sha
|
|
57
|
+
assert_equal commits+1, @wiki.repo.commits('master').size
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
test "renames page" do
|
|
61
|
+
page_1 = @wiki.page('B')
|
|
62
|
+
post "/edit/B", :content => 'abc',
|
|
63
|
+
:rename => "C",
|
|
64
|
+
:format => page_1.format, :message => 'def'
|
|
65
|
+
follow_redirect!
|
|
66
|
+
assert_equal "/C", last_request.fullpath
|
|
67
|
+
assert last_response.ok?
|
|
68
|
+
|
|
69
|
+
@wiki.clear_cache
|
|
70
|
+
assert_nil @wiki.page("B")
|
|
71
|
+
page_2 = @wiki.page('C')
|
|
72
|
+
assert_equal 'abc', page_2.raw_data
|
|
73
|
+
assert_equal 'def', page_2.version.message
|
|
74
|
+
assert_not_equal page_1.version.sha, page_2.version.sha
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
test "creates page" do
|
|
78
|
+
post "/create", :content => 'abc', :page => "D",
|
|
79
|
+
:format => 'markdown', :message => 'def'
|
|
80
|
+
follow_redirect!
|
|
81
|
+
assert last_response.ok?
|
|
82
|
+
|
|
83
|
+
page = @wiki.page('D')
|
|
84
|
+
assert_equal 'abc', page.raw_data
|
|
85
|
+
assert_equal 'def', page.version.message
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
test "creates pages with escaped characters in title" do
|
|
89
|
+
post "/create", :content => 'abc', :page => 'Title with spaces',
|
|
90
|
+
:format => 'markdown', :message => 'foo'
|
|
91
|
+
assert_equal 'http://example.org/Title-with-spaces', last_response.headers['Location']
|
|
92
|
+
get "/Title-with-spaces"
|
|
93
|
+
assert_match /abc/, last_response.body
|
|
94
|
+
|
|
95
|
+
post "/create", :content => 'ghi', :page => 'Title/with/slashes',
|
|
96
|
+
:format => 'markdown', :message => 'bar'
|
|
97
|
+
assert_equal 'http://example.org/Title-with-slashes', last_response.headers['Location']
|
|
98
|
+
get "/Title-with-slashes"
|
|
99
|
+
assert_match /ghi/, last_response.body
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
test "guards against creation of existing page" do
|
|
103
|
+
name = "A"
|
|
104
|
+
post "/create", :content => 'abc', :page => name,
|
|
105
|
+
:format => 'markdown', :message => 'def'
|
|
106
|
+
assert last_response.ok?
|
|
107
|
+
|
|
108
|
+
@wiki.clear_cache
|
|
109
|
+
page = @wiki.page(name)
|
|
110
|
+
assert_not_equal 'abc', page.raw_data
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test "previews content" do
|
|
114
|
+
post "/preview", :content => 'abc', :format => 'markdown'
|
|
115
|
+
assert last_response.ok?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
test "previews content on the first page of an empty wiki" do
|
|
119
|
+
@path = cloned_testpath("examples/empty.git")
|
|
120
|
+
@wiki = Gollum::Wiki.new(@path)
|
|
121
|
+
Precious::App.set(:gollum_path, @path)
|
|
122
|
+
Precious::App.set(:wiki_options, {})
|
|
123
|
+
|
|
124
|
+
post "/preview", :content => 'abc', :format => 'markdown'
|
|
125
|
+
assert last_response.ok?
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
test "reverts single commit" do
|
|
130
|
+
page1 = @wiki.page('B')
|
|
131
|
+
|
|
132
|
+
post "/revert/B/7c45b5f16ff3bae2a0063191ef832701214d4df5"
|
|
133
|
+
follow_redirect!
|
|
134
|
+
assert last_response.ok?
|
|
135
|
+
|
|
136
|
+
@wiki.clear_cache
|
|
137
|
+
page2 = @wiki.page('B')
|
|
138
|
+
assert_not_equal page1.version.sha, page2.version.sha
|
|
139
|
+
assert_equal "INITIAL", page2.raw_data.strip
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
test "reverts multiple commits" do
|
|
143
|
+
page1 = @wiki.page('A')
|
|
144
|
+
|
|
145
|
+
post "/revert/A/fc66539528eb96f21b2bbdbf557788fe8a1196ac/b26b791cb7917c4f37dd9cb4d1e0efb24ac4d26f"
|
|
146
|
+
follow_redirect!
|
|
147
|
+
assert last_response.ok?
|
|
148
|
+
|
|
149
|
+
@wiki.clear_cache
|
|
150
|
+
page2 = @wiki.page('A')
|
|
151
|
+
assert_not_equal page1.version.sha, page2.version.sha
|
|
152
|
+
assert_equal "INITIAL", page2.raw_data.strip
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
test "cannot revert conflicting commit" do
|
|
156
|
+
page1 = @wiki.page('A')
|
|
157
|
+
|
|
158
|
+
post "/revert/A/302a5491a9a5ba12c7652ac831a44961afa312d2"
|
|
159
|
+
assert last_response.ok?
|
|
160
|
+
|
|
161
|
+
@wiki.clear_cache
|
|
162
|
+
page2 = @wiki.page('A')
|
|
163
|
+
assert_equal page1.version.sha, page2.version.sha
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def app
|
|
167
|
+
Precious::App
|
|
168
|
+
end
|
|
169
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
end
|
|
8
|
+
|
|
9
|
+
test "normalizes commit hash" do
|
|
10
|
+
commit = {:message => 'abc'}
|
|
11
|
+
name = @wiki.repo.config['user.name']
|
|
12
|
+
email = @wiki.repo.config['user.email']
|
|
13
|
+
committer = Gollum::Committer.new(@wiki, commit)
|
|
14
|
+
assert_equal name, committer.actor.name
|
|
15
|
+
assert_equal email, committer.actor.email
|
|
16
|
+
|
|
17
|
+
commit[:name] = 'bob'
|
|
18
|
+
commit[:email] = ''
|
|
19
|
+
committer = Gollum::Committer.new(@wiki, commit)
|
|
20
|
+
assert_equal 'bob', committer.actor.name
|
|
21
|
+
assert_equal email, committer.actor.email
|
|
22
|
+
|
|
23
|
+
commit[:email] = 'foo@bar.com'
|
|
24
|
+
committer = Gollum::Committer.new(@wiki, commit)
|
|
25
|
+
assert_equal 'bob', committer.actor.name
|
|
26
|
+
assert_equal 'foo@bar.com', committer.actor.email
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test "yield after_commit callback" do
|
|
30
|
+
@path = cloned_testpath('examples/lotr.git')
|
|
31
|
+
yielded = nil
|
|
32
|
+
begin
|
|
33
|
+
wiki = Gollum::Wiki.new(@path)
|
|
34
|
+
committer = Gollum::Committer.new(wiki)
|
|
35
|
+
committer.after_commit do |index, sha1|
|
|
36
|
+
yielded = sha1
|
|
37
|
+
assert_equal committer, index
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
res = wiki.write_page("Gollum", :markdown, "# Gollum",
|
|
41
|
+
:committer => committer)
|
|
42
|
+
|
|
43
|
+
assert_equal committer, res
|
|
44
|
+
|
|
45
|
+
sha1 = committer.commit
|
|
46
|
+
assert_equal sha1, yielded
|
|
47
|
+
ensure
|
|
48
|
+
FileUtils.rm_rf(@path)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test "parents with default master ref" do
|
|
53
|
+
ref = '1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3'
|
|
54
|
+
committer = Gollum::Committer.new(@wiki)
|
|
55
|
+
assert_equal ref, committer.parents.first.sha
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test "parents with custom ref" do
|
|
59
|
+
ref = '60f12f4254f58801b9ee7db7bca5fa8aeefaa56b'
|
|
60
|
+
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"), :ref => ref)
|
|
61
|
+
committer = Gollum::Committer.new(@wiki)
|
|
62
|
+
assert_equal ref, committer.parents.first.sha
|
|
63
|
+
end
|
|
64
|
+
end
|