Browse Source

Tests: Updating Utils

pull/9/head
Ryan Reed 1 year ago
parent
commit
d68fcd5146
2 changed files with 73 additions and 126 deletions
  1. +22
    -68
      tests/test_utils.py
  2. +51
    -58
      tests/utils.py

+ 22
- 68
tests/test_utils.py View File

@ -1,87 +1,41 @@
import json import json
import pathlib import pathlib
from transpose import version, DEFAULT_CACHE_FILENAME
from transpose.utils import check_path, create_cache, get_cache, move, remove, symlink
from transpose import version
from transpose.utils import move, remove, symlink
from .utils import CACHE_FILE_CONTENTS, STORE_DIR, SYMLINK_DIR, TARGET_DIR, setup_store
@setup_store()
def test_check_path():
existing_dir = pathlib.Path(TARGET_DIR)
nonexisting_dir = pathlib.Path("nonexistent")
symlink_dir = pathlib.Path(SYMLINK_DIR)
cache_path = pathlib.Path(TARGET_DIR).joinpath(DEFAULT_CACHE_FILENAME)
assert check_path(existing_dir) is True
assert check_path(nonexisting_dir) is False
assert check_path(symlink_dir, is_symlink=True) is True
assert check_path(symlink_dir) is False
assert check_path(existing_dir, is_symlink=True) is False
assert check_path(cache_path) is False
@setup_store()
def test_cache_create():
cache_file = "test_cache_file.json"
cache_path = pathlib.Path(TARGET_DIR).joinpath(cache_file)
original_path = pathlib.Path("/tmp/some/random/path")
create_cache(cache_path=cache_path, original_path=original_path)
cache = json.load(open(cache_path, "r"))
assert cache_path.exists()
assert cache["original_path"] == str(original_path)
assert cache["version"] == version
@setup_store()
def test_cache_get():
cache_path = pathlib.Path(TARGET_DIR).joinpath(DEFAULT_CACHE_FILENAME)
cache = get_cache(cache_path)
assert cache["version"] == CACHE_FILE_CONTENTS["version"]
assert cache["original_path"] == CACHE_FILE_CONTENTS["original_path"]
from .utils import (
TARGET_PATH,
ENTRY_STORE_PATH,
STORE_PATH,
SYMLINK_TEST_PATH,
setup_store,
)
@setup_store() @setup_store()
def test_file_move(): def test_file_move():
source_path = pathlib.Path(TARGET_DIR)
destination_path = pathlib.Path(STORE_DIR)
move(source=source_path.absolute(), destination=destination_path.absolute())
assert not source_path.exists()
assert destination_path.exists()
destination = STORE_PATH.joinpath("test_move")
move(source=TARGET_PATH.absolute(), destination=destination.absolute())
assert not TARGET_PATH.exists()
assert destination.exists()
@setup_store() @setup_store()
def test_file_remove(): def test_file_remove():
cache_path = pathlib.Path(TARGET_DIR).joinpath(DEFAULT_CACHE_FILENAME)
symlink_filepath = pathlib.Path(TARGET_DIR).joinpath(SYMLINK_DIR)
target_filepath = pathlib.Path(TARGET_DIR)
SYMLINK_TEST_PATH.symlink_to(ENTRY_STORE_PATH)
remove(path=TARGET_PATH)
remove(path=SYMLINK_TEST_PATH)
remove(path=cache_path)
remove(path=symlink_filepath)
remove(path=target_filepath)
assert not cache_path.exists() # Should be able to remove files
assert not symlink_filepath.exists() # Should be able to remove symlinks
assert target_filepath.exists() # Should not be able to remove directories
assert TARGET_PATH.exists() # Should not be able to remove directories
assert not ENTRY_STORE_PATH.exists() # Should be able to remove symlinks
@setup_store() @setup_store()
def test_file_symlink(): def test_file_symlink():
symlink_name = "test_link"
symlink_filepath = pathlib.Path(symlink_name)
target_filepath = pathlib.Path(TARGET_DIR)
symlink(target_path=target_filepath, symlink_path=symlink_filepath)
symlink(target_path=TARGET_PATH, symlink_path=SYMLINK_TEST_PATH)
assert target_filepath.exists()
assert symlink_filepath.is_symlink()
assert symlink_filepath.readlink() == target_filepath.resolve()
assert TARGET_PATH.exists()
assert SYMLINK_TEST_PATH.is_symlink()
assert SYMLINK_TEST_PATH.readlink() == TARGET_PATH.resolve()

+ 51
- 58
tests/utils.py View File

@ -1,101 +1,94 @@
import os
import json import json
import pathlib
from contextlib import contextmanager from contextlib import contextmanager
from pathlib import Path
from shutil import rmtree
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from transpose import DEFAULT_CACHE_FILENAME, version
from transpose import version
STORE_DIR = "store"
STORED_DIR = "my_app" # Directory already in storage
SYMLINK_DIR = "symlink_test"
TARGET_DIR = "source"
ENTRY_NAME = "MyName"
TESTS_PATH = Path("tests-temp")
STORE_PATH = TESTS_PATH.joinpath("store")
TARGET_PATH = TESTS_PATH.joinpath("source")
SYMLINK_TEST_PATH = TESTS_PATH.joinpath("symlink_test")
CACHE_FILE_CONTENTS = {"version": version, "original_path": TARGET_DIR}
ENTRY_STORE_PATH = STORE_PATH.joinpath(ENTRY_NAME)
TRANSPOSE_CONFIG_PATH = STORE_PATH.joinpath("transpose.json")
TRANSPOSE_CONFIG = {
"version": version,
"entries": {ENTRY_NAME: {"name": ENTRY_NAME, "path": str(TARGET_PATH)}},
}
@contextmanager @contextmanager
def setup_apply(): def setup_apply():
""" """
Create the following directory structure: Create the following directory structure:
temp/
tests-temp/
store/
transpose.json
target/ target/
.transpose.json # contains {"version": version, "original_path": "source/"}
symlink_test/ -> source/ symlink_test/ -> source/
""" """
old_dir = os.getcwd()
with TemporaryDirectory("tests-temp") as td:
try:
os.chdir(td)
os.mkdir(STORE_DIR)
os.symlink(STORE_DIR, SYMLINK_DIR)
try:
with TemporaryDirectory(str(TESTS_PATH)):
STORE_PATH.mkdir(parents=True, exist_ok=True)
TARGET_PATH.mkdir(parents=True, exist_ok=True)
SYMLINK_TEST_PATH.symlink_to(TARGET_PATH.resolve())
target_cache_path = pathlib.Path(STORE_DIR).joinpath(DEFAULT_CACHE_FILENAME)
with open(str(target_cache_path), "w") as f:
json.dump(CACHE_FILE_CONTENTS, f)
with open(str(TRANSPOSE_CONFIG_PATH), "w") as f:
json.dump(TRANSPOSE_CONFIG, f)
yield yield
finally:
os.chdir(old_dir)
finally:
# This shouldn't be necessary but is for some reason
rmtree(TESTS_PATH)
@contextmanager @contextmanager
def setup_restore(): def setup_restore():
""" """
Create the following directory structure: Create the following directory structure:
temp/
source/
tests-temp/
store/ store/
my_app/
.transpose.json # contains {"version": version, "original_path": "source/"}
MyName/
transpose.json
""" """
old_dir = os.getcwd()
with TemporaryDirectory("tests-temp") as td:
try:
os.chdir(td)
try:
with TemporaryDirectory(str(TESTS_PATH)):
ENTRY_STORE_PATH.mkdir(parents=True, exist_ok=True)
TARGET_PATH.mkdir(parents=True, exist_ok=True)
os.mkdir(TARGET_DIR)
os.mkdir(STORE_DIR)
os.mkdir(f"{STORE_DIR}/{STORED_DIR}")
target_cache_path = pathlib.Path(f"{STORE_DIR}/{STORED_DIR}").joinpath(
DEFAULT_CACHE_FILENAME
)
with open(str(target_cache_path), "w") as f:
json.dump(CACHE_FILE_CONTENTS, f)
with open(str(TRANSPOSE_CONFIG_PATH), "w") as f:
json.dump(TRANSPOSE_CONFIG, f)
yield yield
finally:
os.chdir(old_dir)
finally:
# This shouldn't be necessary but is for some reason
rmtree(TESTS_PATH)
@contextmanager @contextmanager
def setup_store(): def setup_store():
""" """
Create the following directory structure: Create the following directory structure:
temp/
tests-temp/
source/ source/
.transpose.json # contains {"version": version, "original_path": "source/"}
store/ store/
transpose.json
""" """
old_dir = os.getcwd()
with TemporaryDirectory("tests-temp") as td:
try:
os.chdir(td)
os.mkdir(TARGET_DIR)
os.mkdir(STORE_DIR)
os.symlink(TARGET_DIR, SYMLINK_DIR)
try:
with TemporaryDirectory(str(TESTS_PATH)):
TARGET_PATH.mkdir(parents=True, exist_ok=True)
STORE_PATH.mkdir(parents=True, exist_ok=True)
target_cache_path = pathlib.Path(TARGET_DIR).joinpath(
DEFAULT_CACHE_FILENAME
)
with open(str(target_cache_path), "w") as f:
json.dump(CACHE_FILE_CONTENTS, f)
with open(str(TRANSPOSE_CONFIG_PATH), "w") as f:
json.dump(TRANSPOSE_CONFIG, f)
yield yield
finally:
os.chdir(old_dir)
finally:
# This shouldn't be necessary but is for some reason
rmtree(TESTS_PATH)

Loading…
Cancel
Save