Patching locally against mirror source svn://svn.clkao.org/svk.
==== Patch <-> level 1
Source: [No source]
Target: 4ccb8a5b-8ae0-0310-9b02-86531366991d:/trunk:2516
        (svn://svn.clkao.org/svk)
Log:
Added (TODO) tests to check for the horrible breakage that results from
'svk rm COPATH', especially when it's a checkout of //.
=== lib/SVK/Test.pm
==================================================================
--- lib/SVK/Test.pm	(revision 2516)
+++ lib/SVK/Test.pm	(patch - level 1)
@@ -293,6 +293,10 @@
 
 sub is_file_content {
     my ($file, $content, $test) = @_;
+    unless (-e $file) {
+	@_ = (undef, $content, $test);
+	goto &is;
+    }
     open my ($fh), '<', $file or confess "Cannot read from $file: $!";
     my $actual_content = do { local $/; <$fh> };
 
=== t/21delete-co.t
==================================================================
--- t/21delete-co.t	(revision 2516)
+++ t/21delete-co.t	(patch - level 1)
@@ -0,0 +1,75 @@
+#!/usr/bin/perl -w
+use Test::More tests => 3;
+use strict;
+use File::Path;
+use SVK::Test;
+our $output;
+my ($xd, $svk) = build_test();
+$svk->mkdir ('-m', 'init', '//V');
+my $tree = create_basic_tree ($xd, '//V');
+my ($copathX, $corpathX) = get_copath ('');
+my ($copathA, $corpathA) = get_copath ('delco-one');
+my ($copathB, $corpathB) = get_copath ('delco-two');
+my ($copathC, $corpathC) = get_copath ('delco-canary');
+$svk->checkout ('//V', $copathA);
+$svk->checkout ('//', $copathB);
+my $canary = "tweet tweet";
+append_file ($copathC, $canary);
+
+# Maybe (probably?) deleting the checkout root should just result in an
+# error. Either way, the current behaviour seems to range from Bad to
+# Disasterous.
+
+TODO: {
+local $TODO = 'Don\'t break horribly upon "svk rm COPATH"';
+
+is_output ($svk, 'rm', [$copathA],
+	   [__"D   $copathA/A/Q/qu",
+	    __"D   $copathA/A/Q/qz",
+	    __"D   $copathA/A/Q",
+	    __"D   $copathA/A/be",
+	    __"D   $copathA/A",
+	    __"D   $copathA/B/S/P/pe",
+	    __"D   $copathA/B/S/P",
+	    __"D   $copathA/B/S/Q/qu",
+	    __"D   $copathA/B/S/Q/qz",
+	    __"D   $copathA/B/S/Q",
+	    __"D   $copathA/B/S/be",
+	    __"D   $copathA/B/S",
+	    __"D   $copathA/B/fe",
+	    __"D   $copathA/B",
+	    __"D   $copathA/C/R",
+	    __"D   $copathA/C",
+	    __"D   $copathA/D/de",
+	    __"D   $copathA/D",
+	    __"D   $copathA/me",
+	    __"D   $copathA",
+	   ]);
+
+is_output ($svk, 'rm', [$copathB],
+	   [__"D   $copathB/V/A/Q/qu",
+	    __"D   $copathB/V/A/Q/qz",
+	    __"D   $copathB/V/A/Q",
+	    __"D   $copathB/V/A/be",
+	    __"D   $copathB/V/A",
+	    __"D   $copathB/V/B/S/P/pe",
+	    __"D   $copathB/V/B/S/P",
+	    __"D   $copathB/V/B/S/Q/qu",
+	    __"D   $copathB/V/B/S/Q/qz",
+	    __"D   $copathB/V/B/S/Q",
+	    __"D   $copathB/V/B/S/be",
+	    __"D   $copathB/V/B/S",
+	    __"D   $copathB/V/B/fe",
+	    __"D   $copathB/V/B",
+	    __"D   $copathB/V/C/R",
+	    __"D   $copathB/V/C",
+	    __"D   $copathB/V/D/de",
+	    __"D   $copathB/V/D",
+	    __"D   $copathB/V/me",
+	    __"D   $copathB/V",
+	   ]);
+
+is_file_content ($copathC, $canary, "Files outside the checkout should be untouched");
+
+}
+

==== BEGIN SVK PATCH BLOCK ====
Version: svk v2.0.99_01 (linux)

eJyFVVtv1EYUTh8CYltVakVIRSU6DQ67UbPx2ms7e4ElydobAoUQCCFZQowvk6yJ17MdjxNCjVRn
N7u5kECl9ie0b32p1Jf+AB76q3rsJAgkWlaWZmbnnO+c8803Z2p0vjwhhJVKLuSEXHh/4VapdNdg
VmMYVpwSYtthhHJy6OIN7HL50CVrnBR6RhPDLjPoGmaVigDOhWNnLXE4BZFiDNNgxPO5YgKmM4ox
J4TKxHg4IYYTeXANBdgkLezplBAGwUQpryiwq8c5WS7xsR77gvGEHNuLnCAdO9gOxRYE3IpTc8wE
69Q/MZU/YCqE7D3DfBxIPgn0rpkQZ5jA5D8AMx5H5KHqJKOPgolvwaTTclcdF8fGJzj8PPbZWKuZ
xPsoXv4YL9k1Wi13S2f4GbOxy4wkRl4MFUkRpaJgiLagFIVxsyhL2LKUcUWxBVOUClxRhFO709cX
vabRz+VP1b43qb6f1L5/mm/6A8/Fvo8yWYy4OM8R9GPq3ISOrqFM4Nl4dRRxFvEY9hjMGCQ+Uk6d
WyOMoCuOX04h+L2YkN49wuNqjzPDecOwC9Z4cVXIiXYRC2IeW6IgKkrOKEpCIa5NiblSuEJo2PZb
qhgvClAjZjhrkbH4HGWdE8Os8N9Eyf9LlKJzRdhIaOh7fXW72bn4h/Zltza6XxvdUQd/V4c6KvlF
jQZ2NPtXLRqtObci9EqL6qrfqUWL7dloNroZ6dFc9HTvdP5w+0L7nXlXjbha1L+vRUiL9Nr2Fw/a
39xsy9F0NFxrD+5rbXqoRtVb257W/uq3mXb6z1qncqgu/a3uTPxVW9lWSUeNzkc32oWjmfb4bq17
JXrQzUaPutV6t7q91K0udqu9pd6g1ptZ7s0td69P755Z6j7Rds8s747Vexfa9V0nqu82wKy9tFdM
ht5gBGO02BuchkHtXNK7/dFCd7j9uHt15mDgYffJ9MHA8sH1xd4F7WCgfvB8pTcz8/K7lZfjKwdf
r+xemTn8fOXw4vLBs6W9T2qHZHHvknZI6kfnl/bmtCOtfvR9fb9fO3pRf9W/uF9qz+7fVztnd9Sd
s/c6n7XVyt6dTmW6M3cIcduXv+UDn/Km4/EtTF2U3UwFPkbxVSiVbhOKUSwuH12roHzZZ9SxWA20
kHSYRtJyyikSUMSRgLUCVk41t1CGe2aDKv2N9RHQqxk4rq1nQJ/ZSnMdlIEy6WwzPYrSjucwnl9I
j3BxVwJTi2KDYd00fMfSMyDwFgRZTKQedzodPCcnQTkWyRIPT02xTVKtWoZn0C2rga11yAFlpgBo
iG1izNBQOQWKw16iX0ggdRndNrZMjDItSkzDdLeuj6BEzo63hlgDo7gDIr9BAtdGTwOfIYr9wGXI
8ZDhgTumlNAxpDlgTNGmsTUaUAqXEJm4YWw4PsZNH8ElpIa3htEqJU00ZdjwD/iqjm/4DFMS+GOp
1PysOluCS+0Sy3ARB0mnVeItpwEKWFhHDUKpAxmioEU8NARkItpE1dm7k/M3htJQi+MDH8AiffR4
NHUO7vsjXR9SEeIn+Tn+h2AIPTfxFH+fv8u3YFit8vdU3labj6em+AX49Lh9jAIwAtZ8x8ZAS+Ax
EgCT9tCLVOqD3UOJu4dYFEVTlq2CaRqyJEk52bbkfCFflHFBKhZySXcXxPFw0raxjTJxqSMnOgJu
kqNCq4QmjJ/UiY/LNoA11jBOefcTClPp96oH6WC/hS3HcIGezQb2kMPSPjLQWxGQVcTzY5BHtlIR
Q04Uj1/H+eTBLJUeeM4Gpr7hDkOTk8JYZfCAUbwBiyBwbHg1eUYDbx3WoixA0UooWZZZMGQzWzBw
LpvLC7ls0cyJ2YIi5wV4KYpFwf4XWq2Q/Q==
==== END SVK PATCH BLOCK ====
