Skip to content
Open
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
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ markers = [
"unit: Solitary unit tests - test a layer of a module in isolation with all dependencies mocked, except interaction with shared utils and the systems module. Unit tests must be able to pass offline, i.e. not calls to external services. The timeout should not be bigger than the default 10s, and must be <5 min.",
"integration: Sociable integration tests - test interactions across architectural layers (e.g. CLI/GUI→Service, Service→Utils) or between modules (e.g. Application→Platform), using real SDK collaborators, real file I/O, real subprocesses, and real Docker containers. Integration test must be able to pass offline, i.e. mock external services (Aignostics Platform API, Auth0, S3/GCS buckets, IDC). The timeout should not be bigger than the default 10s, and must be <5 min.",
"e2e: End-to-end tests - test complete workflows with real external network services (Aignostics Platform API, cloud storage, IDC, etc). If the test timeout is >= 5 min and < 60 min, additionally mark as `long_running`, if >= 60min mark as 'very_long_running'.",
"slim: Tests for the aignostics-sdk slim package distribution.",
]
md_report = true
md_report_output = "reports/pytest.md"
Expand Down
1 change: 1 addition & 0 deletions tests/aignostics_sdk/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Tests for the aignostics-sdk slim package distribution."""
92 changes: 92 additions & 0 deletions tests/aignostics_sdk/smoke_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
"""Smoke tests for the aignostics-sdk slim package.

These tests verify the slim distribution works in isolation:
- Correct imports resolve
- Core constants are accessible

Note: The aignostics-sdk CLI entry point (aignostics_sdk.cli) is pending
PYSDK-137 (CLI carve-out). The test_slim_cli_entry_point test is marked
xfail until that phase lands.

Note: Dependency slimming (removal of heavy deps such as openslide, nicegui,
etc.) is pending PYSDK-138 (dependency split). Until that phase merges,
aignostics-sdk carries the full dependency tree.
"""

from __future__ import annotations

import subprocess
import sys

import pytest


@pytest.mark.unit
@pytest.mark.slim
def test_platform_client_importable() -> None:
"""Core import from aignostics_sdk.platform works."""
from aignostics_sdk.platform import Client

assert Client is not None


@pytest.mark.unit
@pytest.mark.slim
def test_utils_importable() -> None:
"""Core imports from aignostics_sdk.utils work."""
from aignostics_sdk.utils import BaseService, Health

assert BaseService is not None
assert Health is not None


@pytest.mark.unit
@pytest.mark.slim
def test_aignx_codegen_importable() -> None:
"""Bundled codegen is accessible."""
from aignx.codegen.exceptions import ApiException

assert ApiException is not None


@pytest.mark.unit
@pytest.mark.slim
@pytest.mark.xfail(
reason="aignostics_sdk.cli module does not exist yet — pending PYSDK-137 (CLI carve-out)",
strict=True,
)
def test_slim_cli_entry_point() -> None:
"""aignostics-sdk CLI entry point exits 0.

This test is xfail until PYSDK-137 creates the aignostics_sdk.cli module
that aggregates the slim subcommands (user, sdk).
"""
result = subprocess.run(
[sys.executable, "-m", "aignostics_sdk.cli", "--help"],
Comment on lines +64 to +65
capture_output=True,
text=True,
timeout=30,
check=False,
)
assert result.returncode == 0
assert "user" in result.stdout
assert "sdk" in result.stdout


@pytest.mark.unit
@pytest.mark.slim
def test_project_name_preserved() -> None:
"""__project_name__ is 'aignostics' for backward compat (env vars, token cache)."""
from aignostics_sdk.utils._constants import __project_name__

assert __project_name__ == "aignostics"


@pytest.mark.unit
@pytest.mark.slim
def test_version_available() -> None:
"""Package version is accessible."""
from aignostics_sdk.utils._constants import __version__

assert __version__ is not None
assert len(__version__) > 0