예제 #1
0
def test_flip_backslashes_false_works(monkeypatch):
    tree = fstree.FsTree(flip_backslashes=False)
    tree.add_dir('C:\\')
    assert tree.as_dict() == {'C:\\': {}}

    tree = fstree.FsTree(flip_backslashes=False)
    tree.add_file('C:\\f')
    assert tree.as_dict() == {'C:\\f': None}
예제 #2
0
def test_flip_backslashes_on_non_windows_defaults_to_false(monkeypatch):
    monkeypatch.setattr(sys, 'platform', 'linux2')

    tree = fstree.FsTree()
    tree.add_dir('C:\\')
    assert tree.as_dict() == {'C:\\': {}}

    tree = fstree.FsTree()
    tree.add_file('C:\\f')
    assert tree.as_dict() == {'C:\\f': None}
예제 #3
0
def test_add_expects_yaml_string_if_multi_lines():
    tree = fstree.FsTree()
    tree.add(r'''
        C:/:
            file: test
    ''')
    assert tree.open('C:/file', 'r').read() == 'test'
예제 #4
0
def test_add_file_and_add_dir(files, dirs, exp):
    tree = fstree.FsTree()
    [tree.add_file(item) for item in files]
    [tree.add_dir(item) for item in dirs]

    res = tree.as_dict()
    assert res == exp
예제 #5
0
def test_add_raises_if_no_known_type():
    tree = fstree.FsTree()
    tree.add(r'''
        C:/:
            file: test
    ''')
    assert tree.open('C:/file', 'r').read() == 'test'
예제 #6
0
def test_open_write_creates_readable_file():
    tree = fstree.FsTree()
    with tree.open('C:/temp/myfile.txt', 'w') as file_:
        pass
    with tree.open('C:/temp/myfile.txt', 'r') as file_:
        data = file_.read()
    assert '' == data
예제 #7
0
def test_open_append_written_test_can_be_read():
    tree = fstree.FsTree()
    with tree.open('C:/temp/myfile.txt', 'a') as file_:
        file_.write('test')
    with tree.open('C:/temp/myfile.txt', 'r') as file_:
        data = file_.read()
    assert 'test' == data
예제 #8
0
def test_add_yaml_creates_files_with_content():
    tree = fstree.FsTree()
    tree.add_yaml(r'''
        C:/:
            file: test
    ''')
    assert tree.open('C:/file', 'r').read() == 'test'
예제 #9
0
def test_get_files_works(paths, exp):
    tree = fstree.FsTree()
    for path in paths:
        tree.add(path)

    res = fstree.utils.get_files(tree)
    assert res == exp
예제 #10
0
def test_walk_finds_roots_dirs_and_files(fsdict, path, exp_roots, exp_dir_lists, exp_file_lists):
    tree = fstree.FsTree()
    tree.add_dict(fsdict)

    gen_walk = tree.walk()
    for exp_dir_list, exp_file_list in zip(exp_dir_lists, exp_file_lists):
        (root, dirs, files) = next(gen_walk)
        # assert root == exp_root
        assert dirs == exp_dir_list
        assert files == exp_file_list
예제 #11
0
def test_add_file_with_content():
    tree = fstree.FsTree()
    path = 'C:/file.txt'
    text = 'hello world'

    tree.add_file(path, text)

    with tree.open(path, 'r') as file_:
        res = file_.read()

    assert res == text
예제 #12
0
def test_open_read_without_file_raises_ioerror(filepath):
    tree = fstree.FsTree()
    with pytest.raises(EnvironmentError):
        tree.open(filepath, 'r')
예제 #13
0
def test_filepaths_and_dirpaths_works(filepaths, dirpaths, exp_filepaths, exp_dirpaths):
    tree = fstree.FsTree()
    [tree.add_file(item) for item in filepaths]
    [tree.add_dir(item) for item in dirpaths]
    assert exp_filepaths == tree.get_fs_filepaths()
    assert exp_dirpaths == tree.get_fs_dirpaths()
예제 #14
0
def test_find(files, path, exp):
    tree = fstree.FsTree()
    tree.add_dict(files)
    res = bool(tree.find(path))
    assert res == exp
예제 #15
0
def test_get_fspath(path):
    tree = fstree.FsTree()
    node = tree.add_file(path)
    assert path == node.get_fspath()
예제 #16
0
def test_add_creates_file_if_no_trailing_backslash():
    tree = fstree.FsTree()
    tree.add('p/p')
    assert tree.as_dict() == {'p': {'p': None}}
예제 #17
0
def test_add_creates_dir_if_trailing_backslash():
    tree = fstree.FsTree()
    tree.add('p/p/')
    assert tree.as_dict() == {'p': {'p': {}}}
예제 #18
0
def test_add_file_flips_fwdslashes_on_win(filepath, exp, monkeypatch):
    monkeypatch.setattr(sys, 'platform', 'win32')
    tree = fstree.FsTree()
    tree.add_file(filepath)
    assert tree.as_dict() == exp
예제 #19
0
def test_add_dir_raises_ioerror_if_file_exists():
    tree = fstree.FsTree()
    tree.add_dir('C:/dir')
    with pytest.raises(IOError):
        tree.add_file('C:/dir')
예제 #20
0
def test_as_list_works(fs_paths, exp, monkeypatch):
    tree = fstree.FsTree()
    for fs_path in fs_paths:
        tree.add(fs_path)
    assert tree.as_list() == exp
예제 #21
0
def test_add_dict_creates_files_with_content():
    tree = fstree.FsTree()
    tree.add_dict({'C:': {'file': 'test'}})
    assert tree.open('C:/file', 'r').read() == 'test'
예제 #22
0
def test_get_fs_filepaths(filepaths,exp):
    tree = fstree.FsTree()
    [tree.add_file(item) for item in filepaths]
    assert exp == tree.get_fs_filepaths()
예제 #23
0
def test_add_dict_converts_paths_with_subdirs_into_nodes(fs_dict, exp_dir_paths):
    tree = fstree.FsTree()
    tree.add_dict(fs_dict)
    assert tree.as_dict() == exp_dir_paths
예제 #24
0
def test_add_dict_adds_directories(fs_dict, exp_dir_paths):
    tree = fstree.FsTree()
    tree.add_dict(fs_dict)
    assert tree.get_fs_dirpaths() == exp_dir_paths