56
const auto result = RunWslc(L"volume prune");
57
result.Verify({.Stderr = L"", .ExitCode = 0});
58
59
- VERIFY_IS_TRUE(result.StdoutContainsSubstring(L"Total reclaimed space:"));
59
+ // The deleted-volume block, and the blank line that follows it, are only written when
60
+ // something was actually removed.
61
+ result.Verify({.Stdout = L"Total reclaimed space: 0B\r\n"});
62
}
63
64
WSLC_TEST_METHOD(WSLCE2E_Volume_Prune_NoAllFlag_PreservesNamedVolumes)
72
result.Verify({.Stderr = L"", .ExitCode = 0});
73
74
auto output = result.GetStdoutLines();
73
- VERIFY_ARE_EQUAL(2u, output.size());
74
- VERIFY_ARE_EQUAL(output[0], L"");
75
- VERIFY_ARE_NOT_EQUAL(std::wstring::npos, output[1].find(L"Total reclaimed space:"));
75
+ VERIFY_ARE_EQUAL(1u, output.size());
76
+ VERIFY_ARE_NOT_EQUAL(std::wstring::npos, output[0].find(L"Total reclaimed space:"));
77
78
VerifyVolumeIsListed(TestVolumeName);
79
}
89
result.Verify({.Stderr = L"", .ExitCode = 0});
90
91
auto output = result.GetStdoutLines();
91
- VERIFY_ARE_EQUAL(3u, output.size());
92
- VERIFY_ARE_NOT_EQUAL(std::wstring::npos, output[0].find(std::format(L"Deleted: {}", TestVolumeName)));
93
- VERIFY_ARE_EQUAL(output[1], L"");
94
- VERIFY_ARE_NOT_EQUAL(std::wstring::npos, output[2].find(L"Total reclaimed space:"));
92
+ VERIFY_ARE_EQUAL(4u, output.size());
93
+ VERIFY_ARE_EQUAL(output[0], L"Deleted Volumes:");
94
+ VERIFY_ARE_EQUAL(output[1], TestVolumeName);
95
+ VERIFY_ARE_EQUAL(output[2], L"");
96
+ VERIFY_ARE_NOT_EQUAL(std::wstring::npos, output[3].find(L"Total reclaimed space:"));
97
98
VerifyVolumeIsNotListed(TestVolumeName);
99
}
113
const auto result = RunWslc(L"volume prune --all");
114
result.Verify({.Stderr = L"", .ExitCode = 0});
115
114
- VERIFY_IS_TRUE(result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)));
115
- VERIFY_IS_TRUE(result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName2)));
116
+ VERIFY_IS_TRUE(result.StdoutContainsLine(L"Deleted Volumes:"));
117
+ VERIFY_IS_TRUE(result.StdoutContainsLine(TestVolumeName));
118
+ VERIFY_IS_TRUE(result.StdoutContainsLine(TestVolumeName2));
119
120
VerifyVolumeIsNotListed(TestVolumeName);
121
VerifyVolumeIsNotListed(TestVolumeName2);
139
const auto result = RunWslc(L"volume prune --all");
140
result.Verify({.Stderr = L"", .ExitCode = 0});
141
139
- VERIFY_IS_FALSE(
140
- result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)),
141
- L"Volume in use by a running container must not be pruned");
142
+ VERIFY_IS_FALSE(result.StdoutContainsLine(TestVolumeName), L"Volume in use by a running container must not be pruned");
143
144
VerifyVolumeIsListed(TestVolumeName);
145
}
155
const auto filteredPrune = RunWslc(L"volume prune --all --filter label=wslc.test.never=present");
156
filteredPrune.Verify({.Stderr = L"", .ExitCode = 0});
157
VERIFY_IS_FALSE(
157
- filteredPrune.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)),
158
- L"Filtered prune should not have deleted the non-matching volume");
158
+ filteredPrune.StdoutContainsLine(TestVolumeName), L"Filtered prune should not have deleted the non-matching volume");
159
VerifyVolumeIsListed(TestVolumeName);
160
161
// Subsequent unfiltered prune --all should still remove it, proving
162
// the filter was the reason it survived.
163
const auto unfilteredPrune = RunWslc(L"volume prune --all");
164
unfilteredPrune.Verify({.Stderr = L"", .ExitCode = 0});
165
- VERIFY_IS_TRUE(unfilteredPrune.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)));
165
+ VERIFY_IS_TRUE(unfilteredPrune.StdoutContainsLine(TestVolumeName));
166
VerifyVolumeIsNotListed(TestVolumeName);
167
}
168
181
const auto result = RunWslc(L"volume prune --all --filter label=wslc.test.prune=keep");
182
result.Verify({.Stderr = L"", .ExitCode = 0});
183
184
- VERIFY_IS_TRUE(result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)));
185
- VERIFY_IS_FALSE(
186
- result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName2)),
187
- L"Volume without the matching label must not be deleted");
184
+ VERIFY_IS_TRUE(result.StdoutContainsLine(TestVolumeName));
185
+ VERIFY_IS_FALSE(result.StdoutContainsLine(TestVolumeName2), L"Volume without the matching label must not be deleted");
186
187
VerifyVolumeIsNotListed(TestVolumeName);
188
VerifyVolumeIsListed(TestVolumeName2);
203
const auto result = RunWslc(L"volume prune --all --filter label!=wslc.test.keep");
204
result.Verify({.Stderr = L"", .ExitCode = 0});
205
208
- VERIFY_IS_TRUE(result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName2)));
206
+ VERIFY_IS_TRUE(result.StdoutContainsLine(TestVolumeName2));
207
VERIFY_IS_FALSE(
210
- result.StdoutContainsLine(std::format(L"Deleted: {}", TestVolumeName)),
211
- L"Labeled volume must be preserved when prune negates that label");
208
+ result.StdoutContainsLine(TestVolumeName), L"Labeled volume must be preserved when prune negates that label");
209
210
VerifyVolumeIsListed(TestVolumeName);
211
VerifyVolumeIsNotListed(TestVolumeName2);