Skip to content

Commit

Permalink
fix: only reuse test project when intended.
Browse files Browse the repository at this point in the history
this fixes broken tests in main & multiple PRs
  • Loading branch information
mihow committed Jan 17, 2025
1 parent b08ff18 commit 38c21d5
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 12 deletions.
33 changes: 23 additions & 10 deletions ami/tests/fixtures/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,19 +102,32 @@ def create_deployment(
return deployment


def create_test_project(name: str | None) -> Project:
short_id = uuid.uuid4().hex[:8]
name = name or f"Test Project {short_id}"
project = Project.objects.create(name=name)
data_source = create_storage_source(project, f"Test Data Source {short_id}", prefix=f"{short_id}")
create_deployment(project, data_source, f"Test Deployment {short_id}")
create_ml_pipeline(project)
return project


def setup_test_project(reuse=True) -> tuple[Project, Deployment]:
project = Project.objects.filter(name__startswith="Test Project").first()

if not project or not reuse:
short_id = uuid.uuid4().hex[:8]
project = Project.objects.create(name=f"Test Project {short_id}")
data_source = create_storage_source(project, f"Test Data Source {short_id}")
deployment = create_deployment(project, data_source, f"Test Deployment {short_id}")
create_ml_pipeline(project)
"""
Always return a valid project and deployment, creating them if necessary.
"""
project = None
shared_test_project_name = "Shared Test Project"

if reuse:
project = Project.objects.filter(name=shared_test_project_name).first()
if not project:
project = create_test_project(name=shared_test_project_name)
else:
deployment = Deployment.objects.filter(project=project).first()
assert deployment, "No deployment found for existing project. Create a new project instead."
project = create_test_project(name=None)

deployment = Deployment.objects.filter(project=project).first()
assert deployment, f"No deployment found for project {project}. Recreate the project."
return project, deployment


Expand Down
4 changes: 2 additions & 2 deletions ami/tests/fixtures/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@
)


def create_storage_source(project: Project, name: str) -> S3StorageSource:
def create_storage_source(project: Project, name: str, prefix: str = S3_TEST_CONFIG.prefix) -> S3StorageSource:
s3.create_bucket(config=S3_TEST_CONFIG, bucket_name=S3_TEST_CONFIG.bucket_name)
data_source, _created = S3StorageSource.objects.get_or_create(
project=project,
name=name,
defaults=dict(
bucket=S3_TEST_CONFIG.bucket_name,
prefix=S3_TEST_CONFIG.prefix,
prefix=prefix,
endpoint_url=S3_TEST_CONFIG.endpoint_url,
access_key=S3_TEST_CONFIG.access_key_id,
secret_key=S3_TEST_CONFIG.secret_access_key,
Expand Down

0 comments on commit 38c21d5

Please sign in to comment.