def test_mkdir_in_git_dir(self): current = CurrentView(repo="repo", uid=1, gid=1, repo_path="repo_path", ignore=CachedIgnore()) with pytest.raises(FuseOSError): current.mkdir(".git/", "mode")
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