import os from dvc.main import main from tests.basic_env import TestDvc class TestUnprotect(TestDvc): def test(self): ret = main(["config", "cache.type", "hardlink"]) self.assertEqual(ret, 0) ret = main(["add", self.FOO]) self.assertEqual(ret, 0) cache = os.path.join( ".dvc", "cache", "ac", "bd18db4cc2f85cedef654fccc4a4d8" ) self.assertFalse(os.access(self.FOO, os.W_OK)) self.assertFalse(os.access(cache, os.W_OK)) ret = main(["unprotect", self.FOO]) self.assertEqual(ret, 0) self.assertTrue(os.access(self.FOO, os.W_OK)) # NOTE: cache is now unprotected, bceause we try to set write perms # on files that we try to delete, as some filesystems require that # (e.g. NTFS). But it should be restored after the next cache check, # hence why we call `dvc status` here. self.assertTrue(os.access(cache, os.W_OK)) ret = main(["status"]) self.assertEqual(ret, 0) self.assertFalse(os.access(cache, os.W_OK))