Skip to content

Commit

Permalink
Move test setup code into fixtures so that pytest runs them in the co…
Browse files Browse the repository at this point in the history
…rrect order.
  • Loading branch information
LTLA committed Apr 23, 2024
1 parent d4382b3 commit 34a9cf6
Show file tree
Hide file tree
Showing 8 changed files with 160 additions and 97 deletions.
28 changes: 17 additions & 11 deletions tests/test_clone_version.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
import pygobbler as pyg
import tempfile
import os
import pytest

_, staging, registry, url = pyg.start_gobbler()
pyg.remove_project("test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)

src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")
@pytest.fixture(scope="module")
def setup():
_, staging, registry, url = pyg.start_gobbler()
pyg.remove_project("test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)

pyg.upload_directory("test", "clone", "v1", src, staging=staging, url=url)
src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")

pyg.upload_directory("test", "clone", "v1", src, staging=staging, url=url)


def test_clone_version(setup):
_, staging, registry, url = pyg.start_gobbler()

def test_clone_version():
dest = tempfile.mkdtemp()
out = pyg.clone_version("test", "clone", "v1", dest, registry=registry)

Expand Down
3 changes: 2 additions & 1 deletion tests/test_create_project.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import pygobbler as pyg
import datetime

_, staging, registry, url = pyg.start_gobbler()

def test_create_project():
_, staging, registry, url = pyg.start_gobbler()

pyg.create_project(
project="test-create",
owners=["LTLA", "jkanche"],
Expand Down
50 changes: 33 additions & 17 deletions tests/test_fetch.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
import pygobbler as pyg
import tempfile
import os
import pytest

_, staging, registry, url = pyg.start_gobbler()

pyg.remove_project("test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)
@pytest.fixture(scope="module")
def setup():
_, staging, registry, url = pyg.start_gobbler()

src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")
pyg.remove_project("test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)

pyg.upload_directory("test", "fetch", "v1", src, staging=staging, url=url)
pyg.upload_directory("test", "fetch", "v2", src, staging=staging, url=url)
src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")

pyg.upload_directory("test", "fetch", "v1", src, staging=staging, url=url)
pyg.upload_directory("test", "fetch", "v2", src, staging=staging, url=url)


def test_fetch_manifest(setup):
_, staging, registry, url = pyg.start_gobbler()

def test_fetch_manifest():
man = pyg.fetch_manifest("test", "fetch", "v1", registry=registry, url=url)
assert man["foo"]["size"] == 3
assert man["whee/blah"]["size"] == 5
Expand All @@ -28,7 +34,9 @@ def test_fetch_manifest():
assert man == rman


def test_fetch_summary():
def test_fetch_summary(setup):
_, staging, registry, url = pyg.start_gobbler()

summ = pyg.fetch_summary("test", "fetch", "v1", registry=registry, url=url)
assert isinstance(summ["upload_user_id"], str)
assert isinstance(summ["upload_start"], str)
Expand All @@ -39,19 +47,25 @@ def test_fetch_summary():
assert summ == rsumm


def test_fetch_latest():
def test_fetch_latest(setup):
_, staging, registry, url = pyg.start_gobbler()

assert pyg.fetch_latest("test", "fetch", registry=registry, url=url) == "v2"
assert pyg.fetch_latest("test", "missing", registry=registry, url=url) is None
assert pyg.fetch_latest("test", "fetch", registry=registry, url=url, force_remote=True) == "v2"
assert pyg.fetch_latest("test", "missing", registry=registry, url=url, force_remote=True) is None


def test_fetch_usage():
def test_fetch_usage(setup):
_, staging, registry, url = pyg.start_gobbler()

assert pyg.fetch_usage("test", registry=registry, url=url) > 0
assert pyg.fetch_usage("test", registry=registry, url=url, force_remote=True) > 0


def test_fetch_permissions():
def test_fetch_permissions(setup):
_, staging, registry, url = pyg.start_gobbler()

perms = pyg.fetch_permissions("test", registry=registry, url=url)
assert isinstance(perms["owners"], list)
assert isinstance(perms["uploaders"], list)
Expand All @@ -60,7 +74,9 @@ def test_fetch_permissions():
assert perms == rperms


def test_fetch_directory():
def test_fetch_directory(setup):
_, staging, registry, url = pyg.start_gobbler()

dir = pyg.fetch_directory("test/fetch/v2", registry=registry, url=url)
assert dir.startswith(registry)
with open(os.path.join(dir, "foo"), "r") as handle:
Expand Down
54 changes: 33 additions & 21 deletions tests/test_list.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,35 @@
import pygobbler as pyg
import os
import pytest

_, staging, registry, url = pyg.start_gobbler()

pyg.remove_project("test", staging=staging, url=url)
pyg.remove_project("more-list-test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)
pyg.create_project("more-list-test", staging=staging, url=url)
@pytest.fixture(scope="module")
def setup():
_, staging, registry, url = pyg.start_gobbler()

src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")
with open(os.path.join(src, "whee2"), "w") as f:
f.write("ABCDEFGHIJK")
pyg.remove_project("test", staging=staging, url=url)
pyg.remove_project("more-list-test", staging=staging, url=url)
pyg.create_project("test", staging=staging, url=url)
pyg.create_project("more-list-test", staging=staging, url=url)

pyg.upload_directory("test", "list", "v1", src, staging=staging, url=url)
pyg.upload_directory("test", "list", "v2", src, staging=staging, url=url)
pyg.upload_directory("test", "more-list", "foo", src, staging=staging, url=url)
pyg.upload_directory("more-list-test", "list", "bar", src, staging=staging, url=url)
src = pyg.allocate_upload_directory(staging)
with open(os.path.join(src, "foo"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(src, "whee"))
with open(os.path.join(src, "whee", "blah"), "w") as f:
f.write("stuff")
with open(os.path.join(src, "whee2"), "w") as f:
f.write("ABCDEFGHIJK")

pyg.upload_directory("test", "list", "v1", src, staging=staging, url=url)
pyg.upload_directory("test", "list", "v2", src, staging=staging, url=url)
pyg.upload_directory("test", "more-list", "foo", src, staging=staging, url=url)
pyg.upload_directory("more-list-test", "list", "bar", src, staging=staging, url=url)


def test_list_projects(setup):
_, staging, registry, url = pyg.start_gobbler()

def test_list_projects():
projects = pyg.list_projects(registry=registry, url=url)
assert "test" in projects
assert "more-list-test" in projects
Expand All @@ -32,7 +38,9 @@ def test_list_projects():
assert sorted(projects) == sorted(rprojects)


def test_list_assets():
def test_list_assets(setup):
_, staging, registry, url = pyg.start_gobbler()

assets = pyg.list_assets("test", registry=registry, url=url)
assert "list" in assets
assert "more-list" in assets
Expand All @@ -41,7 +49,9 @@ def test_list_assets():
assert sorted(assets) == sorted(rassets)


def test_list_versions():
def test_list_versions(setup):
_, staging, registry, url = pyg.start_gobbler()

versions = pyg.list_versions("test", "list", registry=registry, url=url)
assert "v1" in versions
assert "v2" in versions
Expand All @@ -50,7 +60,9 @@ def test_list_versions():
assert sorted(versions) == sorted(rversions)


def test_list_files():
def test_list_files(setup):
_, staging, registry, url = pyg.start_gobbler()

files = sorted(pyg.list_files("test", "list", "v1", registry=registry, url=url))
assert files == sorted(["..summary", "..manifest", "foo", "whee/blah", "whee2"])
rfiles = sorted(pyg.list_files("test", "list", "v1", registry=registry, url=url, force_remote=True))
Expand Down
27 changes: 17 additions & 10 deletions tests/test_remove.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,38 @@
import tempfile
import os
import time
import pytest

_, staging, registry, url = pyg.start_gobbler()

pyg.remove_project("test-R-remove", staging=staging, url=url)
pyg.create_project("test-R-remove", staging=staging, url=url)
@pytest.fixture(scope="module")
def setup():
_, staging, registry, url = pyg.start_gobbler()

src = pyg.allocate_upload_directory(staging)
pyg.upload_directory("test-R-remove", "sacrifice", "v1", src, staging=staging, url=url)
time.sleep(1.1) # force timestamps to be different for next versions.
pyg.upload_directory("test-R-remove", "sacrifice", "v2", src, staging=staging, url=url)
pyg.remove_project("test-R-remove", staging=staging, url=url)
pyg.create_project("test-R-remove", staging=staging, url=url)

src = pyg.allocate_upload_directory(staging)
pyg.upload_directory("test-R-remove", "sacrifice", "v1", src, staging=staging, url=url)
time.sleep(1.1) # force timestamps to be different for next versions.
pyg.upload_directory("test-R-remove", "sacrifice", "v2", src, staging=staging, url=url)


def test_remove_version():
def test_remove_version(setup):
_, staging, registry, url = pyg.start_gobbler()
assert os.path.exists(os.path.join(registry, "test-R-remove", "sacrifice", "v2"))
pyg.remove_version("test-R-remove", "sacrifice", "v2", staging=staging, url=url)
assert not os.path.exists(os.path.join(registry, "test-R-remove", "sacrifice", "v2"))


def test_remove_asset():
def test_remove_asset(setup):
_, staging, registry, url = pyg.start_gobbler()
assert os.path.exists(os.path.join(registry, "test-R-remove", "sacrifice"))
pyg.remove_asset("test-R-remove", "sacrifice", staging=staging, url=url)
assert not os.path.exists(os.path.join(registry, "test-R-remove", "sacrifice"))


def test_remove_project():
def test_remove_project(setup):
_, staging, registry, url = pyg.start_gobbler()
assert os.path.exists(os.path.join(registry, "test-R-remove"))
pyg.remove_project("test-R-remove", staging=staging, url=url)
assert not os.path.exists(os.path.join(registry, "test-R-remove"))
3 changes: 1 addition & 2 deletions tests/test_service_info.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import pygobbler as pyg

_, staging, registry, url = pyg.start_gobbler()


def test_service_info():
_, staging, registry, url = pyg.start_gobbler()
payload = pyg.service_info(url)
assert payload["staging"] == staging
assert payload["registry"] == registry
47 changes: 30 additions & 17 deletions tests/test_upload_directory.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
import pygobbler as pyg
import tempfile
import os
import pytest

_, staging, registry, url = pyg.start_gobbler()
pyg.remove_project("test-upload", staging=staging, url=url)
pyg.remove_project("test-more-upload", staging=staging, url=url)
pyg.remove_project("test-upload-perms", staging=staging, url=url)
pyg.create_project("test-upload", staging=staging, url=url)
pyg.create_project("test-more-upload", staging=staging, url=url)
pyg.create_project("test-upload-perms", staging=staging, url=url)

tmp = tempfile.mkdtemp()
with open(os.path.join(tmp, "blah.txt"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(tmp, "foo"))
with open(os.path.join(tmp, "foo", "bar.txt"), "w") as f:
f.write("1 2 3 4 5 6 7 8 9 10")
@pytest.fixture(scope="module")
def setup():
_, staging, registry, url = pyg.start_gobbler()

pyg.remove_project("test-upload", staging=staging, url=url)
pyg.remove_project("test-more-upload", staging=staging, url=url)
pyg.remove_project("test-upload-perms", staging=staging, url=url)
pyg.create_project("test-upload", staging=staging, url=url)
pyg.create_project("test-more-upload", staging=staging, url=url)
pyg.create_project("test-upload-perms", staging=staging, url=url)

tmp = tempfile.mkdtemp()
with open(os.path.join(tmp, "blah.txt"), "w") as f:
f.write("BAR")
os.mkdir(os.path.join(tmp, "foo"))
with open(os.path.join(tmp, "foo", "bar.txt"), "w") as f:
f.write("1 2 3 4 5 6 7 8 9 10")

def test_upload_directory_simple():
pyg.upload_directory(
project="test-upload",
asset="jennifer",
Expand All @@ -28,6 +31,12 @@ def test_upload_directory_simple():
url=url
)

return tmp


def test_upload_directory_simple(setup):
_, staging, registry, url = pyg.start_gobbler()

# Checking that the files were, in fact, correctly uploaded.
man = pyg.fetch_manifest("test-upload", "jennifer", "1", registry=registry, url=url)
assert sorted(man.keys()) == ["blah.txt", "foo/bar.txt"]
Expand All @@ -39,7 +48,7 @@ def test_upload_directory_simple():
project="test-upload",
asset="jennifer",
version="2",
directory=tmp,
directory=setup, # i.e., the 'tmp' returned by the setup.
staging=staging,
url=url
)
Expand All @@ -50,7 +59,9 @@ def test_upload_directory_simple():
assert "link" in v


def test_upload_directory_links():
def test_upload_directory_links(setup):
_, staging, registry, url = pyg.start_gobbler()

dest = tempfile.mkdtemp()
pyg.clone_version("test-upload", "jennifer", "2", dest, registry=registry)
with open(os.path.join(dest, "whee"), "w") as f:
Expand All @@ -72,7 +83,9 @@ def test_upload_directory_links():
assert "link" not in man["whee"]


def test_upload_directory_staging():
def test_upload_directory_staging(setup):
_, staging, registry, url = pyg.start_gobbler()

dir = pyg.allocate_upload_directory(staging)
with open(os.path.join(dir, "blah.txt"), "w") as f:
f.write("A B C D E")
Expand Down
Loading

0 comments on commit 34a9cf6

Please sign in to comment.