@@ -15,6 +15,9 @@ def test_clean_cache_when_cache_exists(tmp_path, monkeypatch, capfd):
15
15
fake_cache_dir .mkdir (parents = True , exist_ok = True )
16
16
assert fake_cache_dir .exists ()
17
17
18
+ cibw_sentinel = fake_cache_dir / ".cibuildwheel_cached"
19
+ cibw_sentinel .write_text ("# Created by cibuildwheel automatically" , encoding = "utf-8" )
20
+
18
21
dummy_file = fake_cache_dir / "dummy.txt"
19
22
dummy_file .write_text ("hello" )
20
23
@@ -53,6 +56,9 @@ def test_clean_cache_with_error(tmp_path, monkeypatch, capfd):
53
56
fake_cache_dir .mkdir (parents = True , exist_ok = True )
54
57
assert fake_cache_dir .exists ()
55
58
59
+ cibw_sentinel = fake_cache_dir / ".cibuildwheel_cached"
60
+ cibw_sentinel .write_text ("# Created by cibuildwheel automatically\n " )
61
+
56
62
monkeypatch .setattr (sys , "argv" , ["cibuildwheel" , "--clean-cache" ])
57
63
58
64
def fake_rmtree (path ): # noqa: ARG001
@@ -68,3 +74,21 @@ def fake_rmtree(path): # noqa: ARG001
68
74
out , err = capfd .readouterr ()
69
75
assert f"Clearing cache directory: { fake_cache_dir } " in out
70
76
assert "Error clearing cache:" in err
77
+
78
+
79
+ def test_clean_cache_without_sentinel (tmp_path , monkeypatch , capfd ):
80
+ fake_cache_dir = (tmp_path / "not_a_cache" ).resolve ()
81
+ monkeypatch .setattr (main_module , "CIBW_CACHE_PATH" , fake_cache_dir )
82
+
83
+ fake_cache_dir .mkdir (parents = True , exist_ok = True )
84
+
85
+ monkeypatch .setattr (sys , "argv" , ["cibuildwheel" , "--clean-cache" ])
86
+
87
+ with pytest .raises (SystemExit ) as e :
88
+ main ()
89
+
90
+ assert e .value .code == 1
91
+
92
+ out , err = capfd .readouterr ()
93
+ assert "does not appear to be a cibuildwheel cache directory" in err
94
+ assert fake_cache_dir .exists ()
0 commit comments