1#!/usr/bin/perl 2use warnings; 3use strict; 4my $dir; 5BEGIN { 6 $dir="/tmp/ikiwiki-test-svn.$$"; 7 my $svn=`which svn`; 8 chomp $svn; 9 my $svnadmin=`which svnadmin`; 10 chomp $svnadmin; 11 if (! -x $svn || ! -x $svnadmin) { 12 eval q{ 13 use Test::More skip_all => "svn or svnadmin not available" 14 } 15 } 16 if (! mkdir($dir)) { 17 die $@; 18 } 19} 20use Test::More tests => 12; 21 22BEGIN { use_ok("IkiWiki"); } 23 24%config=IkiWiki::defaultconfig(); 25$config{rcs} = "svn"; 26$config{srcdir} = "$dir/src"; 27$config{svnrepo} = "$dir/repo"; 28$config{svnpath} = "trunk"; 29IkiWiki::loadplugins(); 30IkiWiki::checkconfig(); 31 32my $svnrepo = "$dir/repo"; 33 34system "svnadmin create $svnrepo >/dev/null"; 35system "svn mkdir file://$svnrepo/trunk -m add >/dev/null"; 36system "svn co file://$svnrepo/trunk $config{srcdir} >/dev/null"; 37 38# Web commit 39my $test1 = readfile("t/test1.mdwn"); 40writefile('test1.mdwn', $config{srcdir}, $test1); 41IkiWiki::rcs_add("test1.mdwn"); 42IkiWiki::rcs_commit( 43 file => "test1.mdwn", 44 message => "Added the first page", 45 token => "moo", 46); 47 48my @changes; 49@changes = IkiWiki::rcs_recentchanges(3); 50 51is($#changes, 0); 52is($changes[0]{message}[0]{"line"}, "Added the first page"); 53is($changes[0]{pages}[0]{"page"}, "test1"); 54 55# Manual commit 56my $message = "Added the second page"; 57 58my $test2 = readfile("t/test2.mdwn"); 59writefile('test2.mdwn', $config{srcdir}, $test2); 60system "svn add $config{srcdir}/test2.mdwn >/dev/null"; 61system "svn commit $config{srcdir}/test2.mdwn -m \"$message\" >/dev/null"; 62 63@changes = IkiWiki::rcs_recentchanges(3); 64is($#changes, 1); 65is($changes[0]{message}[0]{"line"}, $message); 66is($changes[0]{pages}[0]{"page"}, "test2"); 67is($changes[1]{pages}[0]{"page"}, "test1"); 68 69# extra slashes in the path shouldn't break things 70$config{svnpath} = "/trunk//"; 71IkiWiki::checkconfig(); 72@changes = IkiWiki::rcs_recentchanges(3); 73is($#changes, 1); 74is($changes[0]{message}[0]{"line"}, $message); 75is($changes[0]{pages}[0]{"page"}, "test2"); 76is($changes[1]{pages}[0]{"page"}, "test1"); 77 78system "rm -rf $dir"; 79