diff --git a/Makefile b/Makefile index a73dc2b9..d369933a 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,27 @@ -# Comprehensive Makefile for LetzShop API +# Comprehensive Makefile for LetzShop API (Windows Compatible) .PHONY: install install-test install-dev install-all dev test test-unit test-integration test-coverage test-fast test-slow test-auth test-products test-stock lint format check docker-build docker-up docker-down migrate clean check-tools setup setup-test -# Check if required tools are installed +# Check if required tools are installed (Windows compatible) check-tools: - @command -v black >/dev/null 2>&1 || { echo >&2 "black is required but not installed. Run 'make install-dev' first."; exit 1; } - @command -v isort >/dev/null 2>&1 || { echo >&2 "isort is required but not installed. Run 'make install-dev' first."; exit 1; } - @command -v flake8 >/dev/null 2>&1 || { echo >&2 "flake8 is required but not installed. Run 'make install-dev' first."; exit 1; } - @command -v mypy >/dev/null 2>&1 || { echo >&2 "mypy is required but not installed. Run 'make install-dev' first."; exit 1; } + @where black >nul 2>&1 || (echo black is required but not installed. Run 'make install-dev' first. && exit 1) + @where isort >nul 2>&1 || (echo isort is required but not installed. Run 'make install-dev' first. && exit 1) + @where flake8 >nul 2>&1 || (echo flake8 is required but not installed. Run 'make install-dev' first. && exit 1) + @where mypy >nul 2>&1 || (echo mypy is required but not installed. Run 'make install-dev' first. && exit 1) -# Production setup +# Development setup install: pip install -r requirements.txt -# Development setup -install-dev-deps: - pip install -r requirements-dev.txt - -# Testing setup -install-test-deps: +install-test: pip install -r tests/requirements-test.txt +install-dev: + pip install -r requirements.txt + pip install -r tests/requirements-test.txt + pip install black isort flake8 mypy flake8-docstrings + +install-all: install install-test install-dev + # Development server dev: uvicorn main:app --reload --host 0.0.0.0 --port 8000 @@ -59,17 +61,17 @@ test-marketplace: test-admin: pytest tests/test_admin.py -v -# Code quality -lint: check-tools - @echo "Running flake8..." +# Code quality (skip check-tools for now) +lint: + @echo Running flake8... flake8 . --max-line-length=88 --extend-ignore=E203,W503 --exclude=venv,__pycache__,.git - @echo "Running mypy..." + @echo Running mypy... mypy . --ignore-missing-imports --exclude venv -format: check-tools - @echo "Running black..." +format: + @echo Running black... black . --exclude venv - @echo "Running isort..." + @echo Running isort... isort . --skip venv # Combined format and lint @@ -114,57 +116,61 @@ deploy-staging: deploy-prod: docker-compose -f docker-compose.prod.yml up -d -# Clean up +# Clean up (Windows compatible) clean: - rm -rf htmlcov/ - rm -rf .pytest_cache/ - rm -rf .coverage - rm -rf .mypy_cache/ - find . -type d -name "__pycache__" -exec rm -rf {} + - find . -type f -name "*.pyc" -delete - find . -type d -name "*.egg-info" -exec rm -rf {} + + @if exist htmlcov rmdir /s /q htmlcov + @if exist .pytest_cache rmdir /s /q .pytest_cache + @if exist .coverage del .coverage + @if exist .mypy_cache rmdir /s /q .mypy_cache + @for /d /r . %%d in (__pycache__) do @if exist "%%d" rmdir /s /q "%%d" + @del /s /q *.pyc 2>nul || echo No .pyc files found # Development workflow shortcuts -setup: install install-dev-deps install-test-deps migrate-up - @echo "Development environment setup complete!" +setup: install-dev migrate-up + @echo Development environment setup complete! + +setup-test: install-test + @echo Test environment setup complete! full-test: format lint test-coverage - @echo "Full test suite completed!" + @echo Full test suite completed! # Help command help: - @echo "Available commands:" - @echo " install - Install production dependencies" - @echo " install-dev-deps - Install development dependencies" - @echo " install-test-deps - Install testing dependencies" - @echo " setup - Complete development setup" - @echo " dev - Start development server" - @echo "" - @echo "Testing:" - @echo " test - Run all tests" - @echo " test-unit - Run unit tests only" - @echo " test-integration - Run integration tests only" - @echo " test-coverage - Run tests with coverage report" - @echo " test-fast - Run fast tests (exclude slow ones)" - @echo " test-slow - Run slow tests only" - @echo " full-test - Format, lint, and test with coverage" - @echo "" - @echo "Code Quality:" - @echo " format - Format code with black and isort" - @echo " lint - Run linting with flake8 and mypy" - @echo " check - Format and lint code" - @echo " ci - Full CI pipeline (format, lint, test)" - @echo "" - @echo "Database:" - @echo " migrate-up - Run database migrations" - @echo " migrate-down - Rollback last migration" - @echo " migrate-reset - Reset and rerun all migrations" - @echo "" - @echo "Docker:" - @echo " docker-build - Build Docker containers" - @echo " docker-up - Start Docker containers" - @echo " docker-down - Stop Docker containers" - @echo " docker-restart - Restart Docker containers" - @echo "" - @echo "Cleanup:" - @echo " clean - Remove test artifacts and cache files" + @echo Available commands: + @echo install - Install production dependencies + @echo install-test - Install test dependencies only + @echo install-dev - Install all development dependencies + @echo install-all - Install everything + @echo setup - Complete development setup + @echo setup-test - Setup test environment only + @echo dev - Start development server + @echo. + @echo Testing: + @echo test - Run all tests + @echo test-unit - Run unit tests only + @echo test-integration - Run integration tests only + @echo test-coverage - Run tests with coverage report + @echo test-fast - Run fast tests (exclude slow ones) + @echo test-slow - Run slow tests only + @echo full-test - Format, lint, and test with coverage + @echo. + @echo Code Quality: + @echo format - Format code with black and isort + @echo lint - Run linting with flake8 and mypy + @echo check - Format and lint code + @echo ci - Full CI pipeline (format, lint, test) + @echo. + @echo Database: + @echo migrate-up - Run database migrations + @echo migrate-down - Rollback last migration + @echo migrate-reset - Reset and rerun all migrations + @echo. + @echo Docker: + @echo docker-build - Build Docker containers + @echo docker-up - Start Docker containers + @echo docker-down - Stop Docker containers + @echo docker-restart - Restart Docker containers + @echo. + @echo Cleanup: + @echo clean - Remove test artifacts and cache files diff --git a/requirements-test.txt b/requirements-test.txt deleted file mode 100644 index 3e0fe59d..00000000 --- a/requirements-test.txt +++ /dev/null @@ -1,9 +0,0 @@ -# tests/requirements-test.txt -# Testing dependencies -pytest>=7.4.0 -pytest-cov>=4.1.0 -pytest-asyncio>=0.21.0 -pytest-mock>=3.11.0 -httpx>=0.24.0 -faker>=19.0.0 -pytest-repeat>=0.9.4