How to use the cookiecutter.zipfile.unzip function in cookiecutter

To help you get started, we’ve selected a few cookiecutter examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
def test_non_repo_zip_file(mocker, tmpdir):
    """In `unzip()`, a repository must have a top level directory."""
    mocker.patch(
        'cookiecutter.zipfile.prompt_and_delete',
        return_value=True,
        autospec=True
    )

    clone_to_dir = tmpdir.mkdir('clone')

    with pytest.raises(InvalidZipRepository):
        zipfile.unzip(
            'tests/files/not-a-repo.zip',
            is_url=False,
            clone_to_dir=str(clone_to_dir)
        )
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
def test_unzip_protected_local_file_user_password(mocker, tmpdir):
    """A password-protected local file reference can be unzipped."""
    mock_prompt_and_delete = mocker.patch(
        'cookiecutter.zipfile.prompt_and_delete',
        return_value=True,
        autospec=True
    )
    mocker.patch(
        'cookiecutter.zipfile.read_repo_password',
        return_value='sekrit'
    )

    clone_to_dir = tmpdir.mkdir('clone')

    output_dir = zipfile.unzip(
        'tests/files/protected-fake-repo-tmpl.zip',
        is_url=False,
        clone_to_dir=str(clone_to_dir)
    )

    assert output_dir.startswith(tempfile.gettempdir())
    assert not mock_prompt_and_delete.called
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
def test_unzip_protected_local_file_user_bad_password(mocker, tmpdir):
    """Error in `unzip()`, if user can't provide a valid password."""
    mocker.patch(
        'cookiecutter.zipfile.prompt_and_delete',
        return_value=True,
        autospec=True
    )
    mocker.patch(
        'cookiecutter.zipfile.read_repo_password',
        return_value='not-the-right-password'
    )

    clone_to_dir = tmpdir.mkdir('clone')

    with pytest.raises(InvalidZipRepository):
        zipfile.unzip(
            'tests/files/protected-fake-repo-tmpl.zip',
            is_url=False,
            clone_to_dir=str(clone_to_dir)
        )
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
request = mocker.MagicMock()
    request.iter_content.return_value = mock_download()

    mocker.patch(
        'cookiecutter.zipfile.requests.get',
        return_value=request,
        autospec=True,
    )

    clone_to_dir = tmpdir.mkdir('clone')

    # Create an existing cache of the zipfile
    existing_zip = clone_to_dir.join('fake-repo-tmpl.zip')
    existing_zip.write('This is an existing zipfile')

    output_dir = zipfile.unzip(
        'https://example.com/path/to/fake-repo-tmpl.zip',
        is_url=True,
        clone_to_dir=str(clone_to_dir)
    )

    assert output_dir.startswith(tempfile.gettempdir())
    assert mock_prompt_and_delete.call_count == 1
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
mock_requests_get = mocker.patch(
        'cookiecutter.zipfile.requests.get',
        autospec=True,
    )

    clone_to_dir = tmpdir.mkdir('clone')

    # Create an existing cache of the zipfile
    existing_zip = clone_to_dir.join('fake-repo-tmpl.zip')
    existing_zip.write('This is an existing zipfile')

    zipfile_url = 'https://example.com/path/to/fake-repo-tmpl.zip'

    with pytest.raises(SystemExit):
        zipfile.unzip(zipfile_url, is_url=True, clone_to_dir=str(clone_to_dir))

    assert not mock_requests_get.called
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
def test_bad_zip_file(mocker, tmpdir):
    """In `unzip()`, a corrupted zip file raises an error."""
    mocker.patch(
        'cookiecutter.zipfile.prompt_and_delete',
        return_value=True,
        autospec=True
    )

    clone_to_dir = tmpdir.mkdir('clone')

    with pytest.raises(InvalidZipRepository):
        zipfile.unzip(
            'tests/files/bad-zip-file.zip',
            is_url=False,
            clone_to_dir=str(clone_to_dir)
        )
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
return_value=True,
        autospec=True
    )

    request = mocker.MagicMock()
    request.iter_content.return_value = mock_download()

    mocker.patch(
        'cookiecutter.zipfile.requests.get',
        return_value=request,
        autospec=True,
    )

    clone_to_dir = tmpdir.mkdir('clone')

    output_dir = zipfile.unzip(
        'https://example.com/path/to/fake-repo-tmpl.zip',
        is_url=True,
        clone_to_dir=str(clone_to_dir)
    )

    assert output_dir.startswith(tempfile.gettempdir())
    assert not mock_prompt_and_delete.called
github cookiecutter / cookiecutter / tests / zipfile / test_unzip.py View on Github external
def test_unzip_local_file(mocker, tmpdir):
    """Local file reference can be unzipped."""
    mock_prompt_and_delete = mocker.patch(
        'cookiecutter.zipfile.prompt_and_delete',
        return_value=True,
        autospec=True
    )

    clone_to_dir = tmpdir.mkdir('clone')

    output_dir = zipfile.unzip(
        'tests/files/fake-repo-tmpl.zip',
        is_url=False,
        clone_to_dir=str(clone_to_dir)
    )

    assert output_dir.startswith(tempfile.gettempdir())
    assert not mock_prompt_and_delete.called
github cookiecutter / cookiecutter / cookiecutter / repository.py View on Github external
or a URL to a git repository.
    :param abbreviations: A dictionary of repository abbreviation
        definitions.
    :param clone_to_dir: The directory to clone the repository into.
    :param checkout: The branch, tag or commit ID to checkout after clone.
    :param no_input: Prompt the user at command line for manual configuration?
    :param password: The password to use when extracting the repository.
    :return: A tuple containing the cookiecutter template directory, and
        a boolean descriving whether that directory should be cleaned up
        after the template has been instantiated.
    :raises: `RepositoryNotFound` if a repository directory could not be found.
    """
    template = expand_abbreviations(template, abbreviations)

    if is_zip_file(template):
        unzipped_dir = unzip(
            zip_uri=template,
            is_url=is_repo_url(template),
            clone_to_dir=clone_to_dir,
            no_input=no_input,
            password=password
        )
        repository_candidates = [unzipped_dir]
        cleanup = True
    elif is_repo_url(template):
        cloned_repo = clone(
            repo_url=template,
            checkout=checkout,
            clone_to_dir=clone_to_dir,
            no_input=no_input,
        )
        repository_candidates = [cloned_repo]