From: Amitai Schlair <schmonz-web-ikiwiki@schmonz.com>
Date: Sat, 21 Jan 2012 20:00:52 +0000 (-0500)
Subject: Simplify startup: use Test::More unconditionally, then determine
X-Git-Tag: 3.20120202~26^2~9^2~6
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/bcb69f8fed4dbdb9e0ec10955319e17b663eb538?ds=inline

Simplify startup: use Test::More unconditionally, then determine
the test plan at runtime. Use IkiWiki unconditionally too (as that's
not what I'm testing here) to avoid the TAP error of printing a
test result before having printed the plan.
---

diff --git a/t/cvs.t b/t/cvs.t
index 2937ac2ed..fdd26dbc8 100755
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -1,35 +1,30 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
+use Test::More;
+use IkiWiki;
+
 my $dir;
-BEGIN {
-	$dir="/tmp/ikiwiki-test-cvs.$$";
-	my $cvs=`which cvs`;
-	chomp $cvs;
-	my $cvsps=`which cvsps`;
-	chomp $cvsps;
-	if (! -x $cvs || ! -x $cvsps) {
-		eval q{
-			use Test::More skip_all => "cvs or cvsps not available"
-		}
-	}
-	if (! mkdir($dir)) {
-		die $@;
-	}
+
+sub _determine_test_plan {
+
+	my $cvs=`which cvs`; chomp $cvs;
+	my $cvsps=`which cvsps`; chomp $cvsps;
+	return (skip_all => 'cvs or cvsps not available')
+		unless -x $cvs && -x $cvsps;
+
 	foreach my $module ('File::ReadBackwards', 'File::MimeInfo') {
 		eval qq{use $module};
 		if ($@) {
-			eval qq{
-				use Test::More skip_all => "$module not available"
-			}
+			return (skip_all => "$module not available");
 		}
 	}
-}
-use Test::More tests => 12;
 
-BEGIN { use_ok("IkiWiki"); }
+	return (tests => 11);
+}
 
 sub _startup {
+	_mktempdir();
 	_generate_minimal_config();
 	_create_test_repo();
 }
@@ -38,6 +33,13 @@ sub _shutdown {
 	system "rm -rf $dir";
 }
 
+sub _mktempdir {
+	$dir="/tmp/ikiwiki-test-cvs.$$";
+	if (! mkdir($dir)) {
+		die $@;
+	}
+}
+
 sub _generate_minimal_config {
 	%config=IkiWiki::defaultconfig();
 	$config{rcs} = "cvs";
@@ -99,6 +101,7 @@ sub test_manual_commit {
 	is($changes[1]{pages}[0]{"page"}, "test1");
 }
 
+plan(_determine_test_plan());
 _startup();
 test_web_commit();
 test_manual_commit();