summaryrefslogtreecommitdiffstats
path: root/tests/test_subcmds_sync.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_subcmds_sync.py')
-rw-r--r--tests/test_subcmds_sync.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/test_subcmds_sync.py b/tests/test_subcmds_sync.py
index 71e40489..af6bbef7 100644
--- a/tests/test_subcmds_sync.py
+++ b/tests/test_subcmds_sync.py
@@ -265,6 +265,44 @@ class LocalSyncState(unittest.TestCase):
265 self.assertIsNone(self.state.GetFetchTime(projA)) 265 self.assertIsNone(self.state.GetFetchTime(projA))
266 self.assertEqual(self.state.GetFetchTime(projB), 7) 266 self.assertEqual(self.state.GetFetchTime(projB), 7)
267 267
268 def test_prune_removed_and_symlinked_projects(self):
269 """Removed projects that still exists on disk as symlink are pruned."""
270 with open(self.state._path, "w") as f:
271 f.write(
272 """
273 {
274 "projA": {
275 "last_fetch": 5
276 },
277 "projB": {
278 "last_fetch": 7
279 }
280 }
281 """
282 )
283
284 def mock_exists(path):
285 return True
286
287 def mock_islink(path):
288 if "projB" in path:
289 return True
290 return False
291
292 projA = mock.MagicMock(relpath="projA")
293 projB = mock.MagicMock(relpath="projB")
294 self.state = self._new_state()
295 self.assertEqual(self.state.GetFetchTime(projA), 5)
296 self.assertEqual(self.state.GetFetchTime(projB), 7)
297 with mock.patch("os.path.exists", side_effect=mock_exists):
298 with mock.patch("os.path.islink", side_effect=mock_islink):
299 self.state.PruneRemovedProjects()
300 self.assertIsNone(self.state.GetFetchTime(projB))
301
302 self.state = self._new_state()
303 self.assertIsNone(self.state.GetFetchTime(projB))
304 self.assertEqual(self.state.GetFetchTime(projA), 5)
305
268 306
269class GetPreciousObjectsState(unittest.TestCase): 307class GetPreciousObjectsState(unittest.TestCase):
270 """Tests for _GetPreciousObjectsState.""" 308 """Tests for _GetPreciousObjectsState."""