Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
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)
Пример #5
0
    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)