diff --git a/test/examples/lotr.git/COMMIT_EDITMSG b/test/examples/lotr.git/COMMIT_EDITMSG index 25541c25..82ab9c99 100644 --- a/test/examples/lotr.git/COMMIT_EDITMSG +++ b/test/examples/lotr.git/COMMIT_EDITMSG @@ -1 +1 @@ -add sidebars +Test out whitespace with Sam diff --git a/test/examples/lotr.git/ORIG_HEAD b/test/examples/lotr.git/ORIG_HEAD new file mode 100644 index 00000000..c64ca983 --- /dev/null +++ b/test/examples/lotr.git/ORIG_HEAD @@ -0,0 +1 @@ +a8ad3c09dd842a3517085bfadd37718856dee813 diff --git a/test/examples/lotr.git/index b/test/examples/lotr.git/index index cc6fa46e..d9383503 100644 Binary files a/test/examples/lotr.git/index and b/test/examples/lotr.git/index differ diff --git a/test/examples/lotr.git/logs/HEAD b/test/examples/lotr.git/logs/HEAD index 99c12840..49e8ffa8 100644 --- a/test/examples/lotr.git/logs/HEAD +++ b/test/examples/lotr.git/logs/HEAD @@ -1,2 +1,3 @@ 0000000000000000000000000000000000000000 60f12f4254f58801b9ee7db7bca5fa8aeefaa56b rick 1291341857 -0800 clone: from /Users/rick/p/gollum/test/examples/lotr.git 60f12f4254f58801b9ee7db7bca5fa8aeefaa56b a8ad3c09dd842a3517085bfadd37718856dee813 rick 1291341922 -0800 commit: add sidebars +a8ad3c09dd842a3517085bfadd37718856dee813 1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 Arran Cudbard-Bell 1309107565 +0200 commit: Test out whitespace with Sam diff --git a/test/examples/lotr.git/logs/refs/heads/master b/test/examples/lotr.git/logs/refs/heads/master index 99c12840..49e8ffa8 100644 --- a/test/examples/lotr.git/logs/refs/heads/master +++ b/test/examples/lotr.git/logs/refs/heads/master @@ -1,2 +1,3 @@ 0000000000000000000000000000000000000000 60f12f4254f58801b9ee7db7bca5fa8aeefaa56b rick 1291341857 -0800 clone: from /Users/rick/p/gollum/test/examples/lotr.git 60f12f4254f58801b9ee7db7bca5fa8aeefaa56b a8ad3c09dd842a3517085bfadd37718856dee813 rick 1291341922 -0800 commit: add sidebars +a8ad3c09dd842a3517085bfadd37718856dee813 1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 Arran Cudbard-Bell 1309107565 +0200 commit: Test out whitespace with Sam diff --git a/test/examples/lotr.git/objects/12/629d666c5e3178f82f533f543d61b53dc78c0b b/test/examples/lotr.git/objects/12/629d666c5e3178f82f533f543d61b53dc78c0b new file mode 100644 index 00000000..0a5598ef Binary files /dev/null and b/test/examples/lotr.git/objects/12/629d666c5e3178f82f533f543d61b53dc78c0b differ diff --git a/test/examples/lotr.git/objects/1d/b89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 b/test/examples/lotr.git/objects/1d/b89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 new file mode 100644 index 00000000..e4e70372 --- /dev/null +++ b/test/examples/lotr.git/objects/1d/b89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 @@ -0,0 +1,2 @@ +xKN0 a9QGH#p'vht,ͯn pS~]Z` gKqX]X|Yc1YO $1k|C +wyz|]^ڏ,~3mSG5;'p}3|jKWo \ No newline at end of file diff --git a/test/examples/lotr.git/objects/25/4bdc1ba27d8b8a794538a8522d9a2b56ec2dd9 b/test/examples/lotr.git/objects/25/4bdc1ba27d8b8a794538a8522d9a2b56ec2dd9 new file mode 100644 index 00000000..3bd3f345 Binary files /dev/null and b/test/examples/lotr.git/objects/25/4bdc1ba27d8b8a794538a8522d9a2b56ec2dd9 differ diff --git a/test/examples/lotr.git/objects/a6/59b3763b822dd97544621fd0beef162ea37b14 b/test/examples/lotr.git/objects/a6/59b3763b822dd97544621fd0beef162ea37b14 new file mode 100644 index 00000000..0c574549 --- /dev/null +++ b/test/examples/lotr.git/objects/a6/59b3763b822dd97544621fd0beef162ea37b14 @@ -0,0 +1,4 @@ +xRMK1b +eTPO%4;6Yh-;[mK!LGt)cH]M,ǧp(@e#4SP> +OʳShA \ No newline at end of file diff --git a/test/examples/lotr.git/objects/bc/4b5fc0ce2c2ba3acef6647e4f67256ee45ab60 b/test/examples/lotr.git/objects/bc/4b5fc0ce2c2ba3acef6647e4f67256ee45ab60 new file mode 100644 index 00000000..27e90b1f Binary files /dev/null and b/test/examples/lotr.git/objects/bc/4b5fc0ce2c2ba3acef6647e4f67256ee45ab60 differ diff --git a/test/examples/lotr.git/objects/f4/84ebb1f40f8eb20d1bcd8d1d71934d2b8ae961 b/test/examples/lotr.git/objects/f4/84ebb1f40f8eb20d1bcd8d1d71934d2b8ae961 new file mode 100644 index 00000000..a4132483 Binary files /dev/null and b/test/examples/lotr.git/objects/f4/84ebb1f40f8eb20d1bcd8d1d71934d2b8ae961 differ diff --git a/test/examples/lotr.git/refs/heads/master b/test/examples/lotr.git/refs/heads/master index c64ca983..2fe813ff 100644 --- a/test/examples/lotr.git/refs/heads/master +++ b/test/examples/lotr.git/refs/heads/master @@ -1 +1 @@ -a8ad3c09dd842a3517085bfadd37718856dee813 +1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 diff --git a/test/test_committer.rb b/test/test_committer.rb index 5b605843..e9e41bbc 100644 --- a/test/test_committer.rb +++ b/test/test_committer.rb @@ -50,7 +50,7 @@ context "Wiki" do end test "parents with default master ref" do - ref = 'a8ad3c09dd842a3517085bfadd37718856dee813' + ref = '1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3' committer = Gollum::Committer.new(@wiki) assert_equal ref, committer.parents.first.sha end diff --git a/test/test_git_access.rb b/test/test_git_access.rb index fed55270..3f94a3df 100644 --- a/test/test_git_access.rb +++ b/test/test_git_access.rb @@ -18,9 +18,9 @@ context "GitAccess" do assert @access.ref_map.empty? assert @access.tree_map.empty? @access.tree 'master' - assert_equal({"master"=>"a8ad3c09dd842a3517085bfadd37718856dee813"}, @access.ref_map) + assert_equal({"master"=>"1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3"}, @access.ref_map) - map = @access.tree_map['a8ad3c09dd842a3517085bfadd37718856dee813'] + map = @access.tree_map['1db89ebba7e2c14d93b94ff98cfa3708a4f0d4e3'] assert_equal 'Bilbo-Baggins.md', map[0].path assert_equal '', map[0].dir assert_equal map[0].path, map[0].name diff --git a/test/test_page.rb b/test/test_page.rb index 0a2631b3..083a4338 100644 --- a/test/test_page.rb +++ b/test/test_page.rb @@ -25,7 +25,27 @@ context "Page" do test "get existing page case insensitive" do assert_equal @wiki.page('Bilbo Baggins').path, @wiki.page('bilbo baggins').path end + + test "get existing page with hyphen" do + assert_equal @wiki.page('Bilbo Baggins').path, @wiki.page('Bilbo-Baggins').path + end + test "get existing page with underscore" do + assert_nil @wiki.page('Bilbo_Baggins') + end + + test "get existing page where filename contains whitespace, with hypen" do + assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise-Gamgee').path + end + + test "get existing page where filename contains whitespace, with underscore" do + assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise_Gamgee').path + end + + test "get existing page where filename contains whitespace, with whitespace" do + assert_equal @wiki.page('Samwise Gamgee').path, @wiki.page('Samwise Gamgee').path + end + test "get nested page" do page = @wiki.page('Eye Of Sauron') assert_equal 'Mordor/Eye-Of-Sauron.md', page.path diff --git a/test/test_wiki.rb b/test/test_wiki.rb index 5b9b486c..a19be569 100644 --- a/test/test_wiki.rb +++ b/test/test_wiki.rb @@ -36,12 +36,12 @@ context "Wiki" do test "list pages" do pages = @wiki.pages assert_equal \ - %w(Bilbo-Baggins.md Eye-Of-Sauron.md Home.textile My-Precious.md), + ['Bilbo-Baggins.md', 'Eye-Of-Sauron.md', 'Home.textile', 'My-Precious.md', 'Samwise Gamgee.mediawiki'], pages.map { |p| p.filename }.sort end test "counts pages" do - assert_equal 4, @wiki.size + assert_equal 5, @wiki.size end test "text_data" do @@ -214,6 +214,64 @@ context "Wiki page writing" do end end +context "Wiki page writing with whitespace (filename contains whitespace)" do + setup do + @path = cloned_testpath("examples/lotr.git") + @wiki = Gollum::Wiki.new(@path) + end + + test "update_page" do + assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format + assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename + + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, page.name, :textile, "h1. Samwise Gamgee2", commit_details) + + assert_equal :textile, @wiki.page("Samwise Gamgee").format + assert_equal "h1. Samwise Gamgee2", @wiki.page("Samwise Gamgee").raw_data + assert_equal "Samwise Gamgee.textile", @wiki.page("Samwise Gamgee").filename + end + + test "update page with format change, verify non-canonicalization of filename, where filename contains Whitespace" do + assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format + assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename + + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, page.name, :textile, "h1. Samwise Gamgee", commit_details) + + assert_equal :textile, @wiki.page("Samwise Gamgee").format + assert_equal "h1. Samwise Gamgee", @wiki.page("Samwise Gamgee").raw_data + assert_equal "Samwise Gamgee.textile", @wiki.page("Samwise Gamgee").filename + end + + test "update page with name change, verify canonicalization of filename, where filename contains Whitespace" do + assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format + assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename + + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, 'Sam Gamgee', :textile, "h1. Samwise Gamgee", commit_details) + + assert_equal "h1. Samwise Gamgee", @wiki.page("Sam Gamgee").raw_data + assert_equal "Sam-Gamgee.textile", @wiki.page("Sam Gamgee").filename + end + + test "update page with name and format change, verify canonicalization of filename, where filename contains Whitespace" do + assert_equal :mediawiki, @wiki.page("Samwise Gamgee").format + assert_equal "Samwise Gamgee.mediawiki", @wiki.page("Samwise Gamgee").filename + + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, 'Sam Gamgee', :textile, "h1. Samwise Gamgee", commit_details) + + assert_equal :textile, @wiki.page("Sam Gamgee").format + assert_equal "h1. Samwise Gamgee", @wiki.page("Sam Gamgee").raw_data + assert_equal "Sam-Gamgee.textile", @wiki.page("Sam Gamgee").filename + end + + teardown do + FileUtils.rm_rf(@path) + end +end + context "Wiki sync with working directory" do setup do @path = testpath('examples/wdtest') @@ -269,6 +327,49 @@ context "Wiki sync with working directory" do end end +context "Wiki sync with working directory (filename contains whitespace)" do + setup do + @path = cloned_testpath("examples/lotr.git") + @wiki = Gollum::Wiki.new(@path) + end + test "update a page with same name and format" do + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, page.name, page.format, "What we need is a few good taters.", commit_details) + assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Samwise Gamgee.mediawiki")) + end + + test "update a page with different name and same format" do + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, "Sam Gamgee", page.format, "What we need is a few good taters.", commit_details) + assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Sam-Gamgee.mediawiki")) + assert !File.exist?(File.join(@path, "Samwise Gamgee")) + end + + test "update a page with same name and different format" do + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, page.name, :textile, "What we need is a few good taters.", commit_details) + assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Samwise Gamgee.textile")) + assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki")) + end + + test "update a page with different name and different format" do + page = @wiki.page("Samwise Gamgee") + @wiki.update_page(page, "Sam Gamgee", :textile, "What we need is a few good taters.", commit_details) + assert_equal "What we need is a few good taters.", File.read(File.join(@path, "Sam-Gamgee.textile")) + assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki")) + end + + test "delete a page" do + page = @wiki.page("Samwise Gamgee") + @wiki.delete_page(page, commit_details) + assert !File.exist?(File.join(@path, "Samwise Gamgee.mediawiki")) + end + + teardown do + FileUtils.rm_r(@path) + end +end + context "page_file_dir option" do setup do @path = cloned_testpath('examples/page_file_dir')