fix(devtools): handle workflow command boundaries

This commit is contained in:
lorenzejay
2026-08-05 15:02:54 -07:00
parent 5e7a18e02a
commit e054285e55
2 changed files with 87 additions and 6 deletions

View File

@@ -75,6 +75,17 @@ def test_deployment_repo_validation_ignores_comments_and_echo(tmp_path: Path) ->
'run: echo "crewai==2.0.0"\n# run: pip install crewai==2.0.0\n'
)
with pytest.raises(RuntimeError, match="No effective CrewAI dependency"):
_validate_deployment_repo_crewai_pin(
tmp_path,
'[project]\ndependencies = ["requests>=2"]\n',
"2.0.0",
)
def test_deployment_repo_validation_ignores_pyproject_comment_pin(
tmp_path: Path,
) -> None:
with pytest.raises(RuntimeError, match=r"must all pin 2\.0\.0"):
_validate_deployment_repo_crewai_pin(
tmp_path,
@@ -120,6 +131,66 @@ def test_deployment_repo_validation_reads_multiline_workflow_install(
)
def test_deployment_repo_validation_reads_install_after_comment(
tmp_path: Path,
) -> None:
workflows = tmp_path / ".github" / "workflows"
workflows.mkdir(parents=True)
(workflows / "test.yml").write_text(
"steps:\n"
" - name: Install\n"
" run: |\n"
" # Install the canary dependency\n"
' uv pip install "crewai==2.0.0"\n',
encoding="utf-8",
)
_validate_deployment_repo_crewai_pin(
tmp_path,
'[project]\ndependencies = ["requests>=2"]\n',
"2.0.0",
)
def test_deployment_repo_validation_reads_folded_workflow_install(
tmp_path: Path,
) -> None:
workflows = tmp_path / ".github" / "workflows"
workflows.mkdir(parents=True)
(workflows / "test.yml").write_text(
"steps:\n"
" - name: Install\n"
" run: >\n"
" uv pip install\n"
' "crewai==2.0.0"\n',
encoding="utf-8",
)
_validate_deployment_repo_crewai_pin(
tmp_path,
'[project]\ndependencies = ["requests>=2"]\n',
"2.0.0",
)
def test_deployment_repo_validation_skips_non_file_workflow_entries(
tmp_path: Path,
) -> None:
workflows = tmp_path / ".github" / "workflows"
workflows.mkdir(parents=True)
(workflows / "ignored.yml").mkdir()
(workflows / "test.yaml").write_text(
'# UTF-8 workflow: déploiement\nrun: uv pip install "crewai==2.0.0"\n',
encoding="utf-8",
)
_validate_deployment_repo_crewai_pin(
tmp_path,
'[project]\ndependencies = ["requests>=2"]\n',
"2.0.0",
)
class TestUpdatePyprojectVersion:
def test_updates_version(self, tmp_path: Path) -> None:
pyproject = tmp_path / "pyproject.toml"