Repository navigation
ci(opencode-review): provision LLVM coverage tools #755
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
4e4b99a
c28a16f
2cd3e13
575aa55
3a31af0
6610317
5495d08
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2729,3 +2729,15 @@ def test_r_package_load_deferral_requires_current_head_r_cmd_check(): | |
| assert ( | ||
| "if (!is.na(pkg) && !requireNamespace(pkg, quietly = TRUE))" not in workflow | ||
| ) | ||
|
|
||
|
|
||
| def test_opencode_coverage_image_provisions_compatible_llvm_tools(): | ||
| """Keep Rust coverage independent of a rustup-managed toolchain.""" | ||
| workflow = Path( | ||
| ".github/workflows/opencode-review-dispatch.yml" | ||
| ).read_text(encoding="utf-8") | ||
|
|
||
| assert " llvm-19 " + chr(92) in workflow | ||
| assert "ENV LLVM_COV=/usr/bin/llvm-cov-19" in workflow | ||
| assert "ENV LLVM_PROFDATA=/usr/bin/llvm-profdata-19" in workflow | ||
| assert 'RUN test -x "$LLVM_COV" && test -x "$LLVM_PROFDATA"' in workflow | ||
|
Comment on lines
+2734
to
+2743
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- target test ---'
sed -n '2700,2770p' tests/test_opencode_agent_contract.py
printf '%s\n' '--- workflow coverage job markers ---'
rg -n -A120 -B10 'coverage-evidence:|opencode-review-target:|Dockerfile|llvm-19|LLVM_COV|LLVM_PROFDATA|cargo-llvm-cov' \
.github/workflows/opencode-review-dispatch.yml
printf '%s\n' '--- related contract-test references ---'
rg -n -A20 -B10 'opencode_coverage_image|coverage-evidence|cargo-llvm-cov|LLVM_COV|LLVM_PROFDATA' \
tests/test_opencode_agent_contract.pyRepository: ContextualWisdomLab/.github Length of output: 50383 🏁 Script executed: #!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path
workflow_path = Path(".github/workflows/opencode-review-dispatch.yml")
workflow = workflow_path.read_text(encoding="utf-8")
start_marker = " coverage-evidence:\n"
end_marker = "\n opencode-review-target:"
print("coverage_start_present:", start_marker in workflow)
coverage_start = workflow.index(start_marker)
coverage_end = workflow.index(end_marker, coverage_start)
coverage_job = workflow[coverage_start:coverage_end]
print("coverage_job_length:", len(coverage_job))
docker_start_marker = 'cat >"$coverage_build_dir/Dockerfile" <<\\'DOCKERFILE\\''
docker_end_marker = "\n DOCKERFILE"
print("docker_start_present_in_coverage_job:", docker_start_marker in coverage_job)
print("docker_end_present_in_coverage_job:", docker_end_marker in coverage_job)
dockerfile_start = coverage_job.index(docker_start_marker)
dockerfile_end = coverage_job.index(docker_end_marker, dockerfile_start)
dockerfile = coverage_job[dockerfile_start:dockerfile_end]
needles = [
" llvm-19 " + chr(92),
"ENV LLVM_COV=/usr/bin/llvm-cov-19",
"ENV LLVM_PROFDATA=/usr/bin/llvm-profdata-19",
'RUN test -x "$LLVM_COV" && test -x "$LLVM_PROFDATA"',
"cargo-llvm-cov.tar.gz",
]
for needle in needles:
print(repr(needle), "in_workflow=", needle in workflow,
"in_coverage_job=", needle in coverage_job,
"in_dockerfile=", needle in dockerfile)
for needle in [
'RUN test -x "$LLVM_COV"',
"cargo-llvm-cov.tar.gz",
]:
print("dockerfile_index", repr(needle), dockerfile.find(needle))
print("dockerfile_excerpt:")
print(dockerfile)
PYRepository: ContextualWisdomLab/.github Length of output: 376 🏁 Script executed: #!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path
workflow = Path(".github/workflows/opencode-review-dispatch.yml").read_text(encoding="utf-8")
test = Path("tests/test_opencode_agent_contract.py").read_text(encoding="utf-8")
coverage_start = workflow.index(" coverage-evidence:\n")
coverage_end = workflow.index("\n opencode-review-target:", coverage_start)
coverage_job = workflow[coverage_start:coverage_end]
docker_start_marker = 'cat >"$coverage_build_dir/Dockerfile" <<\\'DOCKERFILE\''
docker_end_marker = "\n DOCKERFILE"
docker_start = coverage_job.index(docker_start_marker)
docker_end = coverage_job.index(docker_end_marker, docker_start)
dockerfile = coverage_job[docker_start:docker_end]
print("workflow_lines:", workflow.count("\n") + 1)
print("test_lines:", test.count("\n") + 1)
print("coverage_job_lines:", coverage_job.count("\n") + 1)
print("dockerfile_lines:", dockerfile.count("\n") + 1)
for name, text in [
("workflow", workflow),
("coverage_job", coverage_job),
("dockerfile", dockerfile),
]:
print(f"\n[{name}]")
for needle in [
" llvm-19 " + chr(92),
"ENV LLVM_COV=/usr/bin/llvm-cov-19",
"ENV LLVM_PROFDATA=/usr/bin/llvm-profdata-19",
'RUN test -x "$LLVM_COV" && test -x "$LLVM_PROFDATA"',
"cargo-llvm-cov.tar.gz",
]:
print(repr(needle), text.find(needle))
check_pos = dockerfile.find('RUN test -x "$LLVM_COV"')
install_pos = dockerfile.find("cargo-llvm-cov.tar.gz")
print("\ncheck_before_install:", 0 <= check_pos < install_pos)
PY
printf '%s\n' '--- exact test function ---'
sed -n '2725,2755p' tests/test_opencode_agent_contract.py
printf '%s\n' '--- exact coverage job ---'
sed -n '/^ coverage-evidence:/,/^ opencode-review-target:/p' \
.github/workflows/opencode-review-dispatch.ymlRepository: ContextualWisdomLab/.github Length of output: 375 🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- test ---'
sed -n '2725,2755p' tests/test_opencode_agent_contract.py
printf '%s\n' '--- workflow relevant lines ---'
rg -n -A100 -B5 'coverage-evidence:|opencode-review-target:|cat >.*Dockerfile|llvm-19|LLVM_COV|LLVM_PROFDATA|cargo-llvm-cov' .github/workflows/opencode-review-dispatch.ymlRepository: ContextualWisdomLab/.github Length of output: 25532 🏁 Script executed: #!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path
workflow = Path(".github/workflows/opencode-review-dispatch.yml").read_text(
encoding="utf-8"
)
coverage_start = workflow.index(" coverage-evidence:\n")
coverage_end = workflow.index("\n opencode-review-target:", coverage_start)
coverage_job = workflow[coverage_start:coverage_end]
docker_start_marker = """cat >"$coverage_build_dir/Dockerfile" <<'DOCKERFILE'"""
docker_end_marker = "\n DOCKERFILE"
docker_start = coverage_job.index(docker_start_marker)
docker_end = coverage_job.index(docker_end_marker, docker_start)
dockerfile = coverage_job[docker_start:docker_end]
needles = [
" llvm-19 " + chr(92),
"ENV LLVM_COV=/usr/bin/llvm-cov-19",
"ENV LLVM_PROFDATA=/usr/bin/llvm-profdata-19",
'RUN test -x "$LLVM_COV" && test -x "$LLVM_PROFDATA"',
]
for label, text in [
("workflow", workflow),
("coverage_job", coverage_job),
("dockerfile", dockerfile),
]:
print(label)
for needle in needles:
print(" ", repr(needle), "count=", text.count(needle))
check_index = dockerfile.index('RUN test -x "$LLVM_COV"')
install_index = dockerfile.index("cargo-llvm-cov.tar.gz")
print("dockerfile_bounds_valid:", docker_start < docker_end)
print("check_before_cargo_llvm_cov_archive:", check_index < install_index)
print("dockerfile_start_line:",
coverage_start + coverage_job[:docker_start].count("\n") + 1)
print("dockerfile_end_line:",
coverage_start + coverage_job[:docker_end].count("\n") + 1)
PYRepository: ContextualWisdomLab/.github Length of output: 947 🏁 Script executed: #!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path
workflow = Path(".github/workflows/opencode-review-dispatch.yml").read_text(
encoding="utf-8"
)
coverage_start = workflow.index(" coverage-evidence:\n")
coverage_end = workflow.index("\n opencode-review-target:", coverage_start)
coverage_job = workflow[coverage_start:coverage_end]
docker_start_marker = """cat >"$coverage_build_dir/Dockerfile" <<'DOCKERFILE"""
docker_end_marker = "\n DOCKERFILE"
docker_start = coverage_job.index(docker_start_marker)
docker_end = coverage_job.index(docker_end_marker, docker_start)
dockerfile = coverage_job[docker_start:docker_end]
needles = [
" llvm-19 " + chr(92),
"ENV LLVM_COV=/usr/bin/llvm-cov-19",
"ENV LLVM_PROFDATA=/usr/bin/llvm-profdata-19",
'RUN test -x "$LLVM_COV" && test -x "$LLVM_PROFDATA"',
]
for label, text in [
("workflow", workflow),
("coverage_job", coverage_job),
("dockerfile", dockerfile),
]:
print(label)
for needle in needles:
print(" ", repr(needle), "count=", text.count(needle))
check_index = dockerfile.index('RUN test -x "$LLVM_COV"')
install_index = dockerfile.index("cargo-llvm-cov.tar.gz")
print("dockerfile_bounds_valid:", docker_start < docker_end)
print("check_before_cargo_llvm_cov_archive:", check_index < install_index)
print("dockerfile_start_line:",
coverage_start + coverage_job[:docker_start].count("\n") + 1)
print("dockerfile_end_line:",
coverage_start + coverage_job[:docker_end].count("\n") + 1)
PYRepository: ContextualWisdomLab/.github Length of output: 947
전체 workflow 대신 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
Repository: ContextualWisdomLab/.github
Length of output: 20474
🏁 Script executed:
Repository: ContextualWisdomLab/.github
Length of output: 17230
🏁 Script executed:
Repository: ContextualWisdomLab/.github
Length of output: 274
🏁 Script executed:
Repository: ContextualWisdomLab/.github
Length of output: 701
APT 패키지 고정을 구현과 문서에서 일치시키세요.
FROM이미지 digest는 고정되어 있지만,apt-get update는llvm-19와rustc의 버전 또는 Debian 저장소 snapshot을 고정하지 않습니다. 따라서 재빌드마다 Rust/LLVM 도구체인과 coverage 결과가 달라질 수 있습니다..github/workflows/opencode-review-dispatch.yml#L655-L663: 호환되는 exact package version 또는 immutable Debian snapshot을 적용하세요.docs/doctoring/opencode-llvm-coverage-toolchain.md#L16-L18: 실제 고정 방식을 문서화하세요. 고정하지 않으면pinned및 exact version 주장을 제거하세요.📍 Affects 2 files
.github/workflows/opencode-review-dispatch.yml#L655-L663(this comment)docs/doctoring/opencode-llvm-coverage-toolchain.md#L16-L18🤖 Prompt for AI Agents