"""
Pytest 配置和共享 fixtures
"""
import sys
sys.stdout.reconfigure(encoding='utf-8')

import pytest
import tempfile
import shutil
from pathlib import Path


@pytest.fixture
def temp_dir():
    """建立臨時目錄，測試結束後自動清理"""
    temp = tempfile.mkdtemp()
    yield Path(temp)
    shutil.rmtree(temp, ignore_errors=True)


@pytest.fixture
def sample_md_files(temp_dir):
    """建立範例 Markdown 檔案"""
    # 建立輸入目錄
    input_dir = temp_dir / "input"
    input_dir.mkdir()

    # 範例檔案 1
    (input_dir / "測試文件.md").write_text("""# 測試文件標題

這是一段測試內容。

## 第二章節

這是第二章節的內容。

### 小節

- 項目一
- 項目二
""", encoding='utf-8')

    # 範例檔案 2
    (input_dir / "另一個文件.md").write_text("""# 另一個文件

這是另一個測試文件。

> 這是引用區塊

```python
print("Hello, World!")
```
""", encoding='utf-8')

    return input_dir


@pytest.fixture
def output_dir(temp_dir):
    """建立輸出目錄"""
    output = temp_dir / "output"
    output.mkdir()
    return output


@pytest.fixture
def generator_module():
    """載入 md_to_html_site 模組"""
    import importlib.util
    module_path = Path(__file__).parent.parent / "md_to_html_site.py"
    spec = importlib.util.spec_from_file_location("md_to_html_site", module_path)
    module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(module)
    return module
