Ejemplo n.º 1
0
def test_stow_with_write_only_source(source_a, source_c, dest):
    utils.remove_read_permission(source_a)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a, source_c], dest)
    assert (error.InsufficientPermissionsToSubcmdFrom(subcmd=SUBCMD,
                                                      file=source_a).msg
            in str(e.value))
Ejemplo n.º 2
0
def test_unstow_with_read_only_dest(source_a, dest):
    dploy.stow([source_a], dest)
    utils.remove_write_permission(dest)
    message = str(
        error.InsufficientPermissionsToSubcmdTo(subcmd=SUBCMD, file=dest))
    with pytest.raises(error.InsufficientPermissionsToSubcmdTo, match=message):
        dploy.unstow([source_a], dest)
Ejemplo n.º 3
0
def test_stow_with_non_existant_dest(source_a):
    non_existant_dest = 'dest'
    with pytest.raises(NotADirectoryError) as e:
        dploy.stow([source_a], 'dest')
    assert (error.NoSuchDirectoryToSubcmdInto(subcmd=SUBCMD,
                                              file=non_existant_dest).msg
            in str(e.value))
Ejemplo n.º 4
0
def test_stow_unfolding_with_write_only_source_file(source_a, source_b, dest):
    source_file = os.path.join(source_a, 'aaa')
    utils.remove_read_permission(source_file)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a, source_b], dest)
    assert (error.InsufficientPermissionsToSubcmdFrom(
        subcmd=SUBCMD, file=source_file).msg in str(e.value))
Ejemplo n.º 5
0
def test_unstow_folding_with_existing_file_in_dest(source_a, source_b, dest):
    os.mkdir(os.path.join(dest, 'aaa'))
    a_file = os.path.join(dest, 'aaa', 'a_file')
    utils.create_file(a_file)
    dploy.stow([source_a, source_b], dest)
    dploy.unstow([source_a], dest)
    assert os.path.exists(a_file)
Ejemplo n.º 6
0
def test_ignore_file_by_ignoring_everthing__(source_a, source_c,
                                             file_dploystowignore, dest):
    ignore_patterns = ['*/aaa']
    with open(file_dploystowignore, 'w') as file:
        file.write("\n".join(ignore_patterns))
    dploy.stow([source_a, source_c], dest)
    assert not os.path.exists(os.path.join(dest, 'aaa'))
Ejemplo n.º 7
0
def test_stow_with_source_with_no_executue_permissions(source_a, source_c,
                                                       dest):
    utils.remove_execute_permission(source_a)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a, source_c], dest)
    assert (error.InsufficientPermissionsToSubcmdFrom(
        subcmd=SUBCMD, file=source_a).msg in str(e.value))
Ejemplo n.º 8
0
def test_stow_with_read_only_dest(source_a, dest):
    utils.remove_write_permission(dest)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a], dest)
    assert (error.InsufficientPermissionsToSubcmdTo(subcmd=SUBCMD,
                                                    file=dest).msg in str(
                                                        e.value))
Ejemplo n.º 9
0
def test_stow_with_non_existant_source(dest):
    non_existant_source = 'source'
    with pytest.raises(NotADirectoryError) as e:
        dploy.stow([non_existant_source], dest)
    assert (error.NoSuchDirectory(subcmd=SUBCMD,
                                  file=non_existant_source).msg in str(
                                      e.value))
Ejemplo n.º 10
0
def test_stow_with_non_existant_dest(source_a):
    non_existant_dest = 'dest'
    message = str(
        error.NoSuchDirectoryToSubcmdInto(subcmd=SUBCMD,
                                          file=non_existant_dest))
    with pytest.raises(error.NoSuchDirectoryToSubcmdInto, match=message):
        dploy.stow([source_a], 'dest')
Ejemplo n.º 11
0
def test_stow_with_same_simple_directory_used_as_source_and_dest(
        source_only_files):
    with pytest.raises(ValueError) as e:
        dploy.stow([source_only_files], source_only_files)
    assert (error.SourceIsSameAsDest(subcmd=SUBCMD,
                                     file=source_only_files).msg in str(
                                         e.value))
Ejemplo n.º 12
0
def test_unstow_with_read_only_dest(source_a, dest):
    dploy.stow([source_a], dest)
    utils.remove_write_permission(dest)
    with pytest.raises(PermissionError) as e:
        dploy.unstow([source_a], dest)
    assert error.InsufficientPermissionsToSubcmdTo(
        subcmd=SUBCMD, file=dest).msg in str(e.value)
Ejemplo n.º 13
0
def test_clean_after_stow_not_removing_invalid_link_from_other_source(source_a, dest):
    dploy.stow([source_a], dest)
    broken = os.path.join('..', 'source_b', 'bbb')
    dest_path = os.path.join(dest, 'bbb')
    os.symlink(broken, dest_path)
    assert os.readlink(dest_path) == broken
    dploy.clean([source_a], dest)
    assert os.readlink(dest_path) == broken
Ejemplo n.º 14
0
def test_stow_with_write_only_source(source_a, source_c, dest):
    utils.remove_read_permission(source_a)
    message = str(
        error.InsufficientPermissionsToSubcmdFrom(subcmd=SUBCMD,
                                                  file=source_a))
    with pytest.raises(error.InsufficientPermissionsToSubcmdFrom,
                       match=message):
        dploy.stow([source_a, source_c], dest)
Ejemplo n.º 15
0
def test_stow_unfolding_with_first_sources_execute_permission_removed(
        source_a, source_b, dest):
    dploy.stow([source_a], dest)
    utils.remove_execute_permission(source_a)
    dest_dir = os.path.join(dest, 'aaa')
    message = str(error.PermissionDenied(subcmd=SUBCMD, file=dest_dir))
    with pytest.raises(error.PermissionDenied, match=message):
        dploy.stow([source_b], dest)
Ejemplo n.º 16
0
def test_stow_unfolding_with_write_only_source_file(source_a, source_b, dest):
    source_file = os.path.join(source_a, 'aaa')
    utils.remove_read_permission(source_file)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a, source_b], dest)
    assert (error.InsufficientPermissionsToSubcmdFrom(subcmd=SUBCMD,
                                                      file=source_file).msg
            in str(e.value))
Ejemplo n.º 17
0
def test_unstow_folding_with_multiple_sources_with_execute_permission_unset(
        source_a, source_b, dest):
    dploy.stow([source_a, source_b], dest)
    utils.remove_execute_permission(source_b)
    dest_dir = os.path.join(dest, 'aaa', 'ddd')
    message = str(error.PermissionDenied(subcmd=SUBCMD, file=dest_dir))
    with pytest.raises(error.PermissionDenied, match=message):
        dploy.unstow([source_a], dest)
Ejemplo n.º 18
0
def test_stow_with_source_dir_with_no_executue_permissions(
        source_a, source_c, dest):
    source_dir = os.path.join(source_a, 'aaa')
    utils.remove_execute_permission(source_dir)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_a, source_c], dest)
    assert (error.InsufficientPermissionsToSubcmdFrom(subcmd=SUBCMD,
                                                      file=source_dir).msg
            in str(e.value))
Ejemplo n.º 19
0
def test_clean_after_stow_not_removing_invalid_link_from_other_source(
        source_a, dest):
    dploy.stow([source_a], dest)
    broken = os.path.join('..', 'source_b', 'bbb')
    dest_path = os.path.join(dest, 'bbb')
    os.symlink(broken, dest_path)
    assert os.readlink(dest_path) == broken
    dploy.clean([source_a], dest)
    assert os.readlink(dest_path) == broken
Ejemplo n.º 20
0
def test_stow_with_source_conflicts(source_a, source_c, dest):
    with pytest.raises(ValueError) as e:
        dploy.stow([source_a, source_c], dest)
    conflicting_source_files = [
        os.path.join(source_a, 'aaa', 'aaa'),
        os.path.join(source_c, 'aaa', 'aaa'),
    ]
    assert (error.ConflictsWithAnotherSource(
        subcmd=SUBCMD, files=conflicting_source_files).msg in str(e.value))
Ejemplo n.º 21
0
def test_stow_unfolding_with_first_sources_execute_permission_removed(
        source_a, source_b, dest):
    dploy.stow([source_a], dest)
    utils.remove_execute_permission(source_a)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_b], dest)
    dest_dir = os.path.join(dest, 'aaa')
    assert (error.PermissionDenied(subcmd=SUBCMD, file=dest_dir).msg
            in str(e.value))
Ejemplo n.º 22
0
def test_unstow_with_dest_dir_with_no_executue_permissions(
        source_a, source_b, dest):
    dest_dir = os.path.join(dest, 'aaa')
    dploy.stow([source_a, source_b], dest)
    utils.remove_execute_permission(os.path.join(dest, 'aaa'))
    message = str(
        error.InsufficientPermissionsToSubcmdTo(subcmd=SUBCMD, file=dest_dir))
    with pytest.raises(error.InsufficientPermissionsToSubcmdTo, match=message):
        dploy.unstow([source_a, source_b], dest)
Ejemplo n.º 23
0
def test_stow_with_existing_file_conflicts(source_a, source_c, dest):
    dploy.stow([source_a], dest)
    with pytest.raises(ValueError) as e:
        dploy.stow([source_c], dest)
    source_file = os.path.join(source_c, 'aaa', 'aaa')
    conflicting_file = os.path.join(dest, 'aaa', 'aaa')
    assert (error.ConflictsWithExistingFile(
        subcmd=SUBCMD, source=source_file, dest=conflicting_file).msg in str(
            e.value))
Ejemplo n.º 24
0
def test_stow_with_source_conflicts(source_a, source_c, dest):
    with pytest.raises(ValueError) as e:
        dploy.stow([source_a, source_c], dest)
    conflicting_source_files = [
        os.path.join(source_a, 'aaa', 'aaa'),
        os.path.join(source_c, 'aaa', 'aaa'),
    ]
    assert (error.ConflictsWithAnotherSource(
        subcmd=SUBCMD, files=conflicting_source_files).msg in str(e.value))
Ejemplo n.º 25
0
def test_stow_unfolding_with_first_sources_execute_permission_removed(
        source_a, source_b, dest):
    dploy.stow([source_a], dest)
    utils.remove_execute_permission(source_a)
    with pytest.raises(PermissionError) as e:
        dploy.stow([source_b], dest)
    dest_dir = os.path.join(dest, 'aaa')
    assert (error.PermissionDenied(subcmd=SUBCMD, file=dest_dir).msg in str(
        e.value))
Ejemplo n.º 26
0
def test_unstow_folding_with_multiple_sources_with_execute_permission_unset(
        source_a, source_b, dest):
    dploy.stow([source_a, source_b], dest)
    utils.remove_execute_permission(source_b)
    with pytest.raises(PermissionError) as e:
        dploy.unstow([source_a], dest)
    dest_dir = os.path.join(dest, 'aaa', 'ddd')
    assert error.PermissionDenied(subcmd=SUBCMD,
                                  file=dest_dir).msg in str(e.value)
Ejemplo n.º 27
0
def test_stow_with_existing_broken_link(source_a, dest):
    conflicting_link = os.path.join(dest, 'aaa')
    os.symlink('non_existant_source', conflicting_link)
    with pytest.raises(ValueError) as e:
        dploy.stow([source_a], dest)
    source_file = os.path.join(source_a, 'aaa')
    assert (error.ConflictsWithExistingLink(
        subcmd=SUBCMD, source=source_file, dest=conflicting_link).msg in str(
            e.value))
Ejemplo n.º 28
0
def test_stow_with_source_conflicts(source_a, source_c, dest):
    conflicting_source_files = [
        os.path.join(source_a, 'aaa', 'aaa'),
        os.path.join(source_c, 'aaa', 'aaa'),
    ]
    message = str(
        error.ConflictsWithAnotherSource(subcmd=SUBCMD,
                                         files=conflicting_source_files))
    with pytest.raises(error.ConflictsWithAnotherSource, match=message):
        dploy.stow([source_a, source_c], dest)
Ejemplo n.º 29
0
def test_unstow_with_dest_dir_with_no_executue_permissions(
        source_a, source_b, dest):
    dest_dir = os.path.join(dest, 'aaa')
    dploy.stow([source_a, source_b], dest)
    utils.remove_execute_permission(os.path.join(dest, 'aaa'))
    with pytest.raises(PermissionError) as e:
        dploy.unstow([source_a, source_b], dest)
    assert error.InsufficientPermissionsToSubcmdTo(subcmd=SUBCMD,
                                                   file=dest_dir).msg in str(
                                                       e.value)
Ejemplo n.º 30
0
def test_stow_with_existing_broken_link(source_a, dest):
    conflicting_link = os.path.join(dest, 'aaa')
    os.symlink('non_existant_source', conflicting_link)
    with pytest.raises(ValueError) as e:
        dploy.stow([source_a], dest)
    source_file = os.path.join(source_a, 'aaa')
    assert (error.ConflictsWithExistingLink(subcmd=SUBCMD,
                                            source=source_file,
                                            dest=conflicting_link).msg
            in str(e.value))
Ejemplo n.º 31
0
def test_stow_with_source_dir_with_no_executue_permissions(
        source_a, source_c, dest):
    source_dir = os.path.join(source_a, 'aaa')
    utils.remove_execute_permission(source_dir)
    message = str(
        error.InsufficientPermissionsToSubcmdFrom(subcmd=SUBCMD,
                                                  file=source_dir))
    with pytest.raises(error.InsufficientPermissionsToSubcmdFrom,
                       match=message):
        dploy.stow([source_a, source_c], dest)
Ejemplo n.º 32
0
def test_stow_with_existing_broken_link(source_a, dest):
    conflicting_link = os.path.join(dest, 'aaa')
    os.symlink('non_existant_source', conflicting_link)
    source_file = os.path.join(source_a, 'aaa')
    message = str(
        error.ConflictsWithExistingLink(subcmd=SUBCMD,
                                        source=source_file,
                                        dest=conflicting_link))
    with pytest.raises(error.ConflictsWithExistingLink):
        dploy.stow([source_a], dest)
Ejemplo n.º 33
0
def test_stow_with_existing_file_conflicts(source_a, source_c, dest):
    dploy.stow([source_a], dest)
    with pytest.raises(ValueError) as e:
        dploy.stow([source_c], dest)
    source_file = os.path.join(source_c, 'aaa', 'aaa')
    conflicting_file = os.path.join(dest, 'aaa', 'aaa')
    assert (error.ConflictsWithExistingFile(subcmd=SUBCMD,
                                            source=source_file,
                                            dest=conflicting_file).msg
            in str(e.value))
Ejemplo n.º 34
0
def test_stow_with_existing_file_conflicts(source_a, source_c, dest):
    dploy.stow([source_a], dest)
    source_file = os.path.join(source_c, 'aaa', 'aaa')
    conflicting_file = os.path.join(dest, 'aaa', 'aaa')
    message = str(
        error.ConflictsWithExistingFile(subcmd=SUBCMD,
                                        source=source_file,
                                        dest=conflicting_file))
    with pytest.raises(error.ConflictsWithExistingFile, match=message):
        dploy.stow([source_c], dest)
Ejemplo n.º 35
0
def test_unstow_folding_with_stray_symlink_in_unfolded_dest_dir(
        source_a, source_b, source_d, dest):
    """
    Given a dest directory with stowed packages that share a unfolded directory,
    that also contains a stray link along with the links created by stowing.

    When the stowed packages are unstowed

    Then the folded directory remains with the single stray symlink
    """
    stray_path = os.path.join(dest, 'aaa', 'ggg')
    dploy.stow([source_a, source_b], dest)
    dploy.link(os.path.join(source_d, 'aaa', 'ggg'), stray_path)
    dploy.unstow([source_a, source_b], dest)
    assert os.path.islink(stray_path)
Ejemplo n.º 36
0
 def use(self, package=None, **_kwargs):
     self.check_if_r2env_initialized()
     if not package:
         self.list_installed_packages()
         raise R2EnvException("Package not defined.")
     if package not in self._package_manager.list_installed_packages():
         raise R2EnvException(f"Package {package} not installed.")
     cur_ver = self._get_current_version()
     new_dst_dir = self._package_manager.get_package_path(package)
     if cur_ver:
         unstow([self._package_manager.get_package_path(cur_ver)],
                self._r2env_path)
     stow([new_dst_dir], self._r2env_path)
     self._set_current_version(package)
     print_console(f"[*] Using {package} package")
Ejemplo n.º 37
0
def test_stow_with_the_same_tree_twice(source_a, dest):
    dploy.stow([source_a], dest)
    dploy.stow([source_a], dest)
    assert os.readlink(os.path.join(dest, 'aaa')) == os.path.join(
        '..', 'source_a', 'aaa')
Ejemplo n.º 38
0
def test_stow_with_non_existant_dest(source_a):
    non_existant_dest = 'dest'
    with pytest.raises(NotADirectoryError) as e:
        dploy.stow([source_a], 'dest')
    assert (error.NoSuchDirectoryToSubcmdInto(
        subcmd=SUBCMD, file=non_existant_dest).msg in str(e.value))
Ejemplo n.º 39
0
def test_stow_with_duplicate_source(source_a, dest):
    with pytest.raises(ValueError) as e:
        dploy.stow([source_a, source_a], dest)
    assert error.DuplicateSource(
        subcmd=SUBCMD, file=source_a).msg in str(e.value)
Ejemplo n.º 40
0
def test_ignore_by_ignoring_only_subdirectory(source_a, source_c, dest):
    dploy.stow([source_a, source_c], dest, ignore_patterns=['aaa'])
    assert not os.path.exists(os.path.join(dest, 'aaa'))
Ejemplo n.º 41
0
def test_stow_with_file_as_source(file_a, dest):
    with pytest.raises(NotADirectoryError) as e:
        dploy.stow([file_a], dest)
    assert (error.NoSuchDirectory(subcmd=SUBCMD, file=file_a).msg in str(
        e.value))
Ejemplo n.º 42
0
def test_stow_with_basic_senario(source_a, dest):
    dploy.stow([source_a], dest)
    assert os.readlink(os.path.join(dest, 'aaa')) == os.path.join(
        '..', 'source_a', 'aaa')
Ejemplo n.º 43
0
def test_stow_with_simple_senario(source_only_files, dest):
    dploy.stow([source_only_files], dest)
    assert os.readlink(os.path.join(dest, 'aaa')) == os.path.join(
        '..', 'source_only_files', 'aaa')
Ejemplo n.º 44
0
def test_stow_with_file_as_dest(source_a, file_a):
    with pytest.raises(NotADirectoryError) as e:
        dploy.stow([source_a], file_a)
    assert (error.NoSuchDirectoryToSubcmdInto(subcmd=SUBCMD,
                                              file=file_a).msg in str(e.value))
Ejemplo n.º 45
0
def test_stow_unfolding_with_two_invocations(source_a, source_b, dest):
    dploy.stow([source_a], dest)
    assert os.readlink(os.path.join(dest, 'aaa')) == os.path.join(
        '..', 'source_a', 'aaa')
    dploy.stow([source_b], dest)
    verify_unfolded_source_a_and_source_b(dest)
Ejemplo n.º 46
0
def test_stow_with_non_existant_source(dest):
    non_existant_source = 'source'
    message = str(
        error.NoSuchDirectory(subcmd=SUBCMD, file=non_existant_source))
    with pytest.raises(error.NoSuchDirectory, match=message):
        dploy.stow([non_existant_source], dest)
Ejemplo n.º 47
0
def test_ignore_by_ignoring_everthing__(source_a, source_c, dest):
    dploy.stow([source_a, source_c], dest, ignore_patterns=['*/aaa'])
    assert not os.path.exists(os.path.join(dest, 'aaa'))
Ejemplo n.º 48
0
def test_stow_with_write_only_source_file(source_a, dest):
    source_file = os.path.join(source_a, 'aaa')
    utils.remove_read_permission(source_file)
    dploy.stow([source_a], dest)
Ejemplo n.º 49
0
def test_stow_with_duplicate_source(source_a, dest):
    message = str(error.DuplicateSource(subcmd=SUBCMD, file=source_a))
    with pytest.raises(error.DuplicateSource, match=message):
        dploy.stow([source_a, source_a], dest)
Ejemplo n.º 50
0
def test_stow_unfolding_with_mutliple_sources(source_a, source_b, dest):
    dploy.stow([source_a, source_b], dest)
    verify_unfolded_source_a_and_source_b(dest)
Ejemplo n.º 51
0
def test_stow_with_file_as_source(file_a, dest):
    message = str(error.NoSuchDirectory(subcmd=SUBCMD, file=file_a))
    with pytest.raises(error.NoSuchDirectory, match=message):
        dploy.stow([file_a], dest)
Ejemplo n.º 52
0
def test_stow_with_the_same_tree_twice(source_a, dest):
    dploy.stow([source_a], dest)
    dploy.stow([source_a], dest)
    assert os.readlink(os.path.join(dest, 'aaa')) == os.path.join(
        '..', 'source_a', 'aaa')