def test_mkdir(self): from gitfs.views import current as current_view old_mkdir = current_view.PassthroughView.mkdir old_chmod = current_view.PassthroughView.chmod mocked_mkdir = lambda self, path, mode: "done" mocked_chmod = MagicMock() mocked_chmod.return_value = None current_view.PassthroughView.mkdir = mocked_mkdir current_view.PassthroughView.chmod = mocked_chmod mocked_release = MagicMock() mocked_full_path = MagicMock() mocked_repo = MagicMock() mocked_full_path.return_value = "full_path" mocked_repo._full_path = mocked_full_path keep_path = '/path/.keep' mode = (os.O_WRONLY | os.O_CREAT) with patch('gitfs.views.current.os') as mocked_os: mocked_os.path.exists.return_value = False mocked_os.open.return_value = 10 mocked_os.O_WRONLY = os.O_WRONLY mocked_os.O_CREAT = os.O_CREAT current = CurrentView(repo=mocked_repo, uid=1, gid=1, repo_path="repo_path", ignore=CachedIgnore()) current.release = mocked_release assert current.mkdir("/path", "mode") == "done" mocked_full_path.assert_called_once_with(keep_path) mocked_os.path.exists.assert_called_once_with(keep_path) mocked_os.open.assert_called_once_with("full_path", mode) mocked_chmod.assert_called_once_with( keep_path, 0o644, ) assert current.dirty == { 10: { 'message': "Create the /path directory", 'stage': True } } mocked_release.assert_called_once_with(keep_path, 10) current_view.PassthroughView.mkdir = old_mkdir current_view.PassthroughView.chmod = old_chmod
def test_release_without_stage(self): message = "No need to stage this" mocked_os = MagicMock() mocked_stage = MagicMock() mocked_os.close.return_value = 0 with patch.multiple('gitfs.views.current', os=mocked_os): current = CurrentView(repo="repo", repo_path="repo_path", ignore=CachedIgnore()) current._stage = mocked_stage current.dirty = {4: {'message': message, 'stage': False}} assert current.release("/path", 4) == 0 mocked_os.close.assert_called_once_with(4) assert mocked_stage.call_count == 0
def test_release_with_stage(self): message = "I need to stage this" mocked_os = MagicMock() mocked_stage = MagicMock() mocked_os.close.return_value = 0 with patch.multiple("gitfs.views.current", os=mocked_os): current = CurrentView(repo="repo", repo_path="repo_path", ignore=CachedIgnore()) current._stage = mocked_stage current.dirty = {4: {"message": message, "stage": True}} assert current.release("/path", 4) == 0 mocked_os.close.assert_called_once_with(4) mocked_stage.assert_called_once_with(add="/path", message=message)
def test_release(self): message = "I need to stage this" mocked_os = MagicMock() mocked_stage = MagicMock() mocked_os.close.return_value = 0 with patch.multiple('gitfs.views.current', os=mocked_os): current = CurrentView(repo="repo", repo_path="repo_path", ignore=CachedIgnore()) current._stage = mocked_stage current.dirty = { 4: { 'message': message } } assert current.release("/path", 4) == 0 mocked_os.close.assert_called_once_with(4) mocked_stage.assert_called_once_with(add="/path", message=message)