aboutsummaryrefslogtreecommitdiff
path: root/t/cvs.t
diff options
context:
space:
mode:
authorAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2012-02-05 16:33:49 -0500
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2012-02-05 16:33:49 -0500
commite45175d5454cc72b261507260accb309f13b5e8b (patch)
tree53e103da360b53029458514b178cd8d990b9f7d9 /t/cvs.t
parent414ccfb1e298a722d2afa8b8540ca84dc1ccc6f2 (diff)
downloadikiwiki-e45175d5454cc72b261507260accb309f13b5e8b.tar
ikiwiki-e45175d5454cc72b261507260accb309f13b5e8b.tar.gz
More testings and fixings:
* Test that adding a text file under a name formerly tracked as binary (and vice versa) gets the right keyword-substitution behavior. * Explicitly set -kkv for text files to make the tests pass. * CVS warns in these cases about "changing keyword expansion mode", but this is correct behavior, so filter it from stderr. Filter stdout the same way in case we ever want to keep any of it. * In rcs_add(), replace comments with obviousness.
Diffstat (limited to 't/cvs.t')
-rwxr-xr-xt/cvs.t54
1 files changed, 43 insertions, 11 deletions
diff --git a/t/cvs.t b/t/cvs.t
index 12afc6687..363fcfa98 100755
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More; my $total_tests = 57;
+use Test::More; my $total_tests = 69;
use IkiWiki;
my $default_test_methods = '^test_*';
@@ -195,7 +195,7 @@ sub test_rcs_add {
my $file = q{test0.mdwn};
add_and_commit($file, $message, qq{# \$Id\$\n* some plain ASCII text});
is_newly_added($file);
- is_in_keyword_substitution_mode($file, undef);
+ is_in_keyword_substitution_mode($file, q{-kkv});
like(
readfile($config{srcdir} . "/$file"),
qr/^# \$Id: $file,v 1.1 .+\$$/m,
@@ -226,7 +226,7 @@ sub test_rcs_add {
$file = q{test4/test5/test1.mdwn};
add_and_commit($file, $message, readfile("t/test1.mdwn"));
is_newly_added($file);
- is_in_keyword_substitution_mode($file, undef);
+ is_in_keyword_substitution_mode($file, q{-kkv});
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 2);
is_most_recent_change(\@changes, stripext($file), $message);
@@ -263,8 +263,8 @@ sub test_rcs_add {
IkiWiki::rcs_add($_) for ($file1, $file2);
IkiWiki::rcs_commit_staged(message => $message);
is_newly_added($_) for ($file1, $file2);
- is_in_keyword_substitution_mode($file1, undef);
- is_in_keyword_substitution_mode($file2, '-kb');
+ is_in_keyword_substitution_mode($file1, q{-kkv});
+ is_in_keyword_substitution_mode($file2, q{-kb});
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 3);
@changes = IkiWiki::rcs_recentchanges(4);
@@ -272,6 +272,29 @@ sub test_rcs_add {
# XXX test for both files in the commit, and no other files
is_most_recent_change(\@changes, $file2, $message);
+ $message = "remove the UTF-8 and binary files we just added";
+ IkiWiki::rcs_remove($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+ ok(-d "$config{srcdir}/test8", q{empty dir not pruned (1)});
+ @changes = IkiWiki::rcs_recentchanges(11);
+ ok(-d "$config{srcdir}/test8", q{empty dir not pruned (2)});
+ is_total_number_of_changes(\@changes, 5);
+ # XXX test for both files in the commit, and no other files
+ is_most_recent_change(\@changes, $file2, $message);
+
+ $message = "re-add UTF-8 and binary files with names swapped";
+ writefile($file2, $config{srcdir}, readfile('t/test2.mdwn'));
+ writefile($file1, $config{srcdir}, $bindata_in, 1);
+ IkiWiki::rcs_add($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+ isnt_newly_added($_) for ($file1, $file2);
+ is_in_keyword_substitution_mode($file2, q{-kkv});
+ is_in_keyword_substitution_mode($file1, q{-kb});
+ @changes = IkiWiki::rcs_recentchanges(11);
+ is_total_number_of_changes(\@changes, 6);
+ # XXX test for both files in the commit, and no other files
+ is_most_recent_change(\@changes, $file2, $message);
+
# prevent web edits from attempting to create .../CVS/foo.mdwn
# on case-insensitive filesystems, also prevent .../cvs/foo.mdwn
# unless your "CVS" is something else and we've made it configurable
@@ -519,7 +542,6 @@ sub _setup {
}
sub _teardown {
- # XXX does srcdir persist between test subs?
system "rm -rf $dir";
}
@@ -581,18 +603,28 @@ sub can_mkdir {
);
}
-sub is_newly_added {
- my $file = shift;
- is(
+sub is_newly_added { _newly_added_or_not(shift, 1) }
+sub isnt_newly_added { _newly_added_or_not(shift, 0) }
+sub _newly_added_or_not {
+ my ($file, $expected_new) = @_;
+ my ($func, $word);
+ if ($expected_new) {
+ $func = \&Test::More::is;
+ $word = q{is};
+ }
+ else {
+ $func = \&Test::More::isnt;
+ $word = q{isn't};
+ }
+ $func->(
IkiWiki::Plugin::cvs::cvs_info("Repository revision", $file),
'1.1',
- qq{$file is newly added to CVS},
+ qq{$file $word newly added to CVS},
);
}
sub is_in_keyword_substitution_mode {
my ($file, $mode) = @_;
- $mode = '(none)' unless defined $mode;
is(
IkiWiki::Plugin::cvs::cvs_info("Sticky Options", $file),
$mode,