This commit is contained in:
97
tests/conftest.py
Normal file
97
tests/conftest.py
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
"""Pytest configuration and fixtures for dev-env-sync tests."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Generator
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_dir() -> Generator[Path, None, None]:
|
||||||
|
"""Create a temporary directory for tests."""
|
||||||
|
with tempfile.TemporaryDirectory() as tmp:
|
||||||
|
yield Path(tmp)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_dotfile_content() -> str:
|
||||||
|
"""Sample dotfile content."""
|
||||||
|
return "# Sample dotfile content\nexport TEST='value'\n"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_settings_json() -> str:
|
||||||
|
"""Sample VS Code settings JSON."""
|
||||||
|
return '{\n "editor.fontSize": 14,\n "editor.tabSize": 2,\n "files.autoSave": "afterDelay"\n}'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_config_yaml() -> str:
|
||||||
|
"""Sample configuration YAML."""
|
||||||
|
return '''
|
||||||
|
version: "1.0"
|
||||||
|
name: "Test Environment"
|
||||||
|
description: "Test configuration"
|
||||||
|
|
||||||
|
dotfiles:
|
||||||
|
bashrc:
|
||||||
|
source: ./dotfiles/.bashrc
|
||||||
|
target: ~/.bashrc
|
||||||
|
backup: true
|
||||||
|
vimrc:
|
||||||
|
source: ./dotfiles/.vimrc
|
||||||
|
target: ~/.vimrc
|
||||||
|
|
||||||
|
shell:
|
||||||
|
shell: bash
|
||||||
|
merge_strategy: replace
|
||||||
|
|
||||||
|
editors:
|
||||||
|
vscode:
|
||||||
|
settings:
|
||||||
|
settings_file: ./editors/vscode/settings.json
|
||||||
|
extensions:
|
||||||
|
- name: ms-python.python
|
||||||
|
|
||||||
|
packages:
|
||||||
|
- name: brew
|
||||||
|
packages:
|
||||||
|
- git
|
||||||
|
- neovim
|
||||||
|
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
directory: ~/.dev-env-sync-backups
|
||||||
|
timestamp_format: "%Y%m%d_%H%M%S"
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_platform_linux(mocker):
|
||||||
|
"""Mock platform detection for Linux."""
|
||||||
|
mocker.patch('platform.system', return_value='Linux')
|
||||||
|
mocker.patch('platform.release', return_value='5.4.0')
|
||||||
|
mocker.patch('platform.version', return_value='#1 SMP')
|
||||||
|
mocker.patch('platform.machine', return_value='x86_64')
|
||||||
|
mocker.patch('pathlib.Path.home', return_value=Path('/home/testuser'))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_platform_macos(mocker):
|
||||||
|
"""Mock platform detection for macOS."""
|
||||||
|
mocker.patch('platform.system', return_value='Darwin')
|
||||||
|
mocker.patch('platform.release', return_value='21.4.0')
|
||||||
|
mocker.patch('platform.version', return_value='Darwin Kernel Version 21.4.0')
|
||||||
|
mocker.patch('platform.machine', return_value='arm64')
|
||||||
|
mocker.patch('pathlib.Path.home', return_value=Path('/Users/testuser'))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_platform_wsl(mocker):
|
||||||
|
"""Mock platform detection for WSL."""
|
||||||
|
mocker.patch('platform.system', return_value='Linux')
|
||||||
|
mocker.patch('platform.release', return_value='5.4.72-microsoft-standard-WSL2')
|
||||||
|
mocker.patch('platform.version', return_value='#1 SMP')
|
||||||
|
mocker.patch('platform.machine', return_value='x86_64')
|
||||||
|
mocker.patch('pathlib.Path.home', return_value=Path('/home/testuser'))
|
||||||
Reference in New Issue
Block a user