mirror of
https://github.com/codeflash-ai/codeflash.git
synced 2026-05-04 18:25:17 +00:00
style: remove redundant local import re and fix test conventions
- Remove redundant `import re` inside _is_vitest_workspace() since re is already imported at module level - Convert tests to use pytest tmp_path fixture instead of tempfile.TemporaryDirectory() - Add missing return type annotations and encoding= parameters - Remove unused pytest import and docstrings Co-authored-by: mohammed ahmed <undefined@users.noreply.github.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
08b9fe8d7f
commit
d8c2b94359
2 changed files with 35 additions and 63 deletions
|
|
@ -176,8 +176,6 @@ def _is_vitest_workspace(project_root: Path) -> bool:
|
|||
# - defineWorkspace() function call
|
||||
# - workspace: [ array config
|
||||
# - separate vitest.workspace.ts/js file
|
||||
import re
|
||||
|
||||
# Match defineWorkspace calls or workspace: property assignments
|
||||
workspace_pattern = re.compile(
|
||||
r"(?:^|[^a-zA-Z_])defineWorkspace\s*\(|" # defineWorkspace( function call
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
"""Test that Codeflash Vitest config properly overrides coverage settings."""
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
|
@ -8,24 +7,12 @@ import pytest
|
|||
from codeflash.languages.javascript.vitest_runner import _ensure_codeflash_vitest_config
|
||||
|
||||
|
||||
def test_codeflash_vitest_config_overrides_coverage():
|
||||
"""Test that generated config overrides coverage reporter to json.
|
||||
def test_codeflash_vitest_config_overrides_coverage(tmp_path: Path) -> None:
|
||||
project_root = tmp_path.resolve()
|
||||
|
||||
This is a regression test for the bug where Codeflash would pass
|
||||
--coverage.reporter=json on command line, but if the project's
|
||||
vitest.config.ts had coverage.reporter set (e.g., ["text", "lcov"]),
|
||||
Vitest's mergeConfig wouldn't properly handle the nested coverage
|
||||
object merge, resulting in coverage files not being written.
|
||||
|
||||
The fix is to explicitly override coverage settings in the generated
|
||||
codeflash.vitest.config.mjs file.
|
||||
"""
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
project_root = Path(tmpdir)
|
||||
|
||||
# Create a vitest.config.ts with coverage settings like openclaw project
|
||||
vitest_config = project_root / "vitest.config.ts"
|
||||
vitest_config.write_text("""
|
||||
vitest_config.write_text(
|
||||
"""
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
|
|
@ -42,46 +29,35 @@ export default defineConfig({
|
|||
},
|
||||
},
|
||||
});
|
||||
""")
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
# Generate the codeflash config
|
||||
config_path = _ensure_codeflash_vitest_config(project_root)
|
||||
|
||||
assert config_path is not None, "Config should be created"
|
||||
assert config_path.exists(), "Config file should exist"
|
||||
|
||||
# Read and verify the generated config
|
||||
config_content = config_path.read_text()
|
||||
config_content = config_path.read_text(encoding="utf-8")
|
||||
|
||||
# Check that it merges with original config
|
||||
assert "mergeConfig" in config_content, "Should use mergeConfig"
|
||||
assert "import originalConfig from './vitest.config.ts'" in config_content
|
||||
|
||||
# CRITICAL: Check that coverage settings are explicitly overridden
|
||||
# This is the fix for the bug - without this, coverage files aren't written
|
||||
assert "coverage:" in config_content, (
|
||||
"Config must explicitly override coverage settings to ensure "
|
||||
"json reporter is used regardless of project config"
|
||||
)
|
||||
assert "reporter:" in config_content, (
|
||||
"Config must override coverage.reporter to ['json']"
|
||||
)
|
||||
# The config should set reporter to json (as array or string)
|
||||
# Note: We're checking the config override, not the command-line flag
|
||||
assert "reporter:" in config_content, "Config must override coverage.reporter to ['json']"
|
||||
assert "['json']" in config_content or '["json"]' in config_content, (
|
||||
"Coverage reporter must be set to ['json'] to ensure coverage "
|
||||
"files are written in the expected format"
|
||||
"Coverage reporter must be set to ['json'] to ensure coverage files are written in the expected format"
|
||||
)
|
||||
|
||||
|
||||
def test_codeflash_vitest_config_without_original_coverage():
|
||||
"""Test generated config when original has no coverage settings."""
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
project_root = Path(tmpdir)
|
||||
def test_codeflash_vitest_config_without_original_coverage(tmp_path: Path) -> None:
|
||||
project_root = tmp_path.resolve()
|
||||
|
||||
# Create a minimal vitest.config.ts without coverage settings
|
||||
vitest_config = project_root / "vitest.config.ts"
|
||||
vitest_config.write_text("""
|
||||
vitest_config.write_text(
|
||||
"""
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
|
|
@ -89,17 +65,15 @@ export default defineConfig({
|
|||
include: ['test/**/*.test.ts'],
|
||||
},
|
||||
});
|
||||
""")
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
# Generate the codeflash config
|
||||
config_path = _ensure_codeflash_vitest_config(project_root)
|
||||
|
||||
assert config_path is not None
|
||||
assert config_path.exists()
|
||||
|
||||
config_content = config_path.read_text()
|
||||
config_content = config_path.read_text(encoding="utf-8")
|
||||
|
||||
# Should still override coverage settings explicitly
|
||||
assert "coverage:" in config_content, (
|
||||
"Config must explicitly set coverage even when original doesn't have it"
|
||||
)
|
||||
assert "coverage:" in config_content, "Config must explicitly set coverage even when original doesn't have it"
|
||||
|
|
|
|||
Loading…
Reference in a new issue