Invalid the TestImageRegistry cache after running prune --all (#41442)
Blue committed
Aug 26, 2026 at 18:07 UTC
8af1856f86f09aa099de169932ef95f7a88466c8
3 files changed
+13
-1
test/windows/wslc/e2e/TestImageRegistry.cpp
+6
@@ -83,6 +83,12 @@ void TestImageRegistry::Restore(const TestImage& image, const std::wstring& sess
83
Load(image, sessionName);
84
}
85
86
+void TestImageRegistry::InvalidateSession(const std::wstring& sessionName)
87
+{
88
+ std::erase_if(m_loaded, [&](const auto& image) { return image.SessionName == sessionName; });
89
+ m_seededSessions.erase(sessionName);
90
+}
91
+
92
void TestImageRegistry::Load(const TestImage& image, const std::wstring& sessionName)
93
{
94
auto result = RunWslc(FormatCommand(sessionName, std::format(L"image load --input \"{}\"", image.Path.wstring())));
test/windows/wslc/e2e/TestImageRegistry.h
+3
@@ -44,6 +44,9 @@ public:
44
// through Delete, such as those exercising image prune, call this to restore the session.
45
void Restore(const TestImage& image, const std::wstring& sessionName = L"");
46
47
+ // Discards cached image state for a session after an operation that can remove multiple images.
48
+ void InvalidateSession(const std::wstring& sessionName = L"");
49
+
50
private:
51
TestImageRegistry() = default;
52
test/windows/wslc/e2e/WSLCE2EImagePruneTests.cpp
+4
-1
@@ -93,7 +93,10 @@ class WSLCE2EImagePruneTests
93
94
WSLC_TEST_METHOD(WSLCE2E_Image_Prune_AllFlag)
95
{
96
- auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [&]() { TestImageRegistry::Instance().Restore(DebianImage); });
96
+ auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [&]() {
97
+ TestImageRegistry::Instance().InvalidateSession();
98
+ TestImageRegistry::Instance().Restore(DebianImage);
99
+ });
100
101
// --all should prune unused images (not just dangling)
102
const auto result = RunWslc(L"image prune --all");