mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
"""
|
|
Test module for verifying dependency compatibility with different package managers.
|
|
These tests ensure that critical dependencies can be installed without conflicts.
|
|
"""
|
|
|
|
import contextlib
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
import pytest
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def temporary_package_environment():
|
|
"""Create an isolated environment for package testing.
|
|
|
|
This context manager creates a temporary directory where package installations
|
|
can be tested in isolation, then cleans up afterward.
|
|
"""
|
|
temp_dir = tempfile.mkdtemp()
|
|
old_cwd = os.getcwd()
|
|
try:
|
|
os.chdir(temp_dir)
|
|
yield temp_dir
|
|
finally:
|
|
os.chdir(old_cwd)
|
|
shutil.rmtree(temp_dir, ignore_errors=True)
|
|
|
|
|
|
def test_pypika_installation():
|
|
"""Test that pypika can be installed without packaging.licenses errors.
|
|
|
|
This test verifies that pypika 0.48.9 (a dependency of chromadb, which is a
|
|
dependency of CrewAI) can be installed without errors related to the
|
|
packaging.licenses module when using the UV package manager.
|
|
"""
|
|
# Check if uv is available
|
|
uv_path = shutil.which("uv")
|
|
if not uv_path:
|
|
pytest.skip("UV package manager not available, skipping test")
|
|
|
|
# Use isolated environment for testing
|
|
with temporary_package_environment():
|
|
# Install pypika using uv
|
|
result = subprocess.run(
|
|
["uv", "pip", "install", "pypika==0.48.9", "--no-deps"],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
assert result.returncode == 0, f"Failed to install pypika: {result.stderr}\nCommand output: {result.stdout}"
|
|
|
|
|
|
def test_chromadb_installation():
|
|
"""Test that chromadb can be installed without packaging.licenses errors.
|
|
|
|
This test verifies that chromadb (a direct dependency of CrewAI) can be
|
|
installed without errors related to the packaging.licenses module when
|
|
using the UV package manager.
|
|
"""
|
|
# Skip this test if running in CI/CD to avoid long test times
|
|
if "CI" in os.environ:
|
|
pytest.skip("Skipping in CI environment to reduce test time")
|
|
|
|
# Check if uv is available
|
|
uv_path = shutil.which("uv")
|
|
if not uv_path:
|
|
pytest.skip("UV package manager not available, skipping test")
|
|
|
|
# Use isolated environment for testing
|
|
with temporary_package_environment():
|
|
# Install chromadb using uv
|
|
result = subprocess.run(
|
|
["uv", "pip", "install", "chromadb>=0.5.23", "--no-deps"],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
assert result.returncode == 0, f"Failed to install chromadb: {result.stderr}\nCommand output: {result.stdout}"
|