Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move seeding tests functionality into test module #925

Merged
merged 2 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 0 additions & 117 deletions conda-store-server/conda_store_server/_internal/testing.py

This file was deleted.

116 changes: 113 additions & 3 deletions conda-store-server/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,28 @@
# license that can be found in the LICENSE file.

import datetime
import json
import pathlib
import sys
import typing
import uuid

import pytest
import yaml

from fastapi.testclient import TestClient
from sqlalchemy.orm import Session

from conda_store_server import api, app, storage


from conda_store_server._internal import ( # isort:skip
action,
dbutil,
schema,
testing,
utils,
conda_utils,
orm,
schema,
)

from conda_store_server._internal.server import app as server_app # isort:skip
Expand Down Expand Up @@ -118,7 +123,7 @@ def authenticate(testclient):

@pytest.fixture
def seed_conda_store(db, conda_store):
testing.seed_conda_store(
_seed_conda_store(
db,
conda_store,
{
Expand Down Expand Up @@ -275,3 +280,108 @@ def conda_prefix(conda_store, tmp_path, request):
conda_prefix=conda_prefix,
)
yield conda_prefix


def _seed_conda_store(
db: Session,
conda_store,
config: typing.Dict[str, typing.Dict[str, schema.CondaSpecification]] = {},
):
for namespace_name in config:
namespace = api.ensure_namespace(db, name=namespace_name)
for environment_name, specification in config[namespace_name].items():
environment = api.ensure_environment(
db,
name=specification.name,
namespace_id=namespace.id,
)
specification = api.ensure_specification(db, specification)
build = api.create_build(db, environment.id, specification.id)
db.commit()

environment.current_build_id = build.id
db.commit()

_create_build_artifacts(db, conda_store, build)
_create_build_packages(db, conda_store, build)

api.create_solve(db, specification.id)
db.commit()


def _create_build_packages(db: Session, conda_store, build: orm.Build):
channel_name = conda_utils.normalize_channel_name(
conda_store.conda_channel_alias, "conda-forge"
)
channel = api.ensure_conda_channel(db, channel_name)

conda_package = orm.CondaPackage(
name=f"madeup-{uuid.uuid4()}",
version="1.2.3",
channel_id=channel.id,
)
db.add(conda_package)
db.commit()

conda_package_build = orm.CondaPackageBuild(
package_id=conda_package.id,
build="fakebuild",
build_number=1,
constrains=[],
depends=[],
md5=str(uuid.uuid4()),
sha256=str(uuid.uuid4()),
size=123456,
subdir="noarch",
timestamp=12345667,
)
db.add(conda_package_build)
db.commit()

build.package_builds.append(conda_package_build)
db.commit()


def _create_build_artifacts(db: Session, conda_store, build: orm.Build):
conda_store.storage.set(
db,
build.id,
build.log_key,
b"fake logs",
content_type="text/plain",
artifact_type=schema.BuildArtifactType.LOGS,
)

directory_build_artifact = orm.BuildArtifact(
build_id=build.id,
artifact_type=schema.BuildArtifactType.DIRECTORY,
key=str(build.build_path(conda_store)),
)
db.add(directory_build_artifact)

lockfile_build_artifact = orm.BuildArtifact(
build_id=build.id, artifact_type=schema.BuildArtifactType.LOCKFILE, key=""
)
db.add(lockfile_build_artifact)

conda_store.storage.set(
db,
build.id,
build.conda_env_export_key,
json.dumps(
dict(name="testing", channels=["conda-forge"], dependencies=["numpy"])
).encode("utf-8"),
content_type="text/yaml",
artifact_type=schema.BuildArtifactType.YAML,
)

conda_store.storage.set(
db,
build.id,
build.conda_pack_key,
b"testing-conda-package",
content_type="application/gzip",
artifact_type=schema.BuildArtifactType.CONDA_PACK,
)

# have not included docker at the moment
38 changes: 0 additions & 38 deletions conda-store-server/tests/test_testing.py

This file was deleted.

Loading