Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion .github/workflows/opencode-review-dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,7 @@ jobs:
libcurl4-openssl-dev \
libssl-dev \
libxml2-dev \
llvm \
mesa-vulkan-drivers \
libvulkan1 \
pkg-config \
Expand All @@ -656,7 +657,20 @@ jobs:
util-linux \
vulkan-tools \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
&& rm -rf /var/lib/apt/lists/* \
&& LLVM_COV_BIN="$(command -v llvm-cov || ls /usr/bin/llvm-cov-* 2>/dev/null | sort -V | tail -n1)" \
&& LLVM_PROFDATA_BIN="$(command -v llvm-profdata || ls /usr/bin/llvm-profdata-* 2>/dev/null | sort -V | tail -n1)" \
&& test -n "$LLVM_COV_BIN" && test -n "$LLVM_PROFDATA_BIN" \
&& RUSTC_LLVM_VERSION="$(rustc -vV | sed -n 's/^LLVM version: //p')" \
&& LLVM_COV_VERSION="$(llvm-cov --version | sed -n 's/^LLVM version //p')" \
&& LLVM_PROFDATA_VERSION="$(llvm-profdata --version | sed -n 's/^LLVM version //p')" \
&& test -n "$RUSTC_LLVM_VERSION" \
&& test "$RUSTC_LLVM_VERSION" = "$LLVM_COV_VERSION" \
&& test "$RUSTC_LLVM_VERSION" = "$LLVM_PROFDATA_VERSION" \
&& ln -sf "$LLVM_COV_BIN" /usr/local/bin/llvm-cov \
&& ln -sf "$LLVM_PROFDATA_BIN" /usr/local/bin/llvm-profdata
ENV LLVM_COV=/usr/local/bin/llvm-cov \
LLVM_PROFDATA=/usr/local/bin/llvm-profdata
RUN curl --proto '=https' --tlsv1.2 -fsSLo /tmp/node-linux-x64.tar.xz \
https://nodejs.org/dist/v24.18.0/node-v24.18.0-linux-x64.tar.xz \
&& echo '55aa7153f9d88f28d765fcdad5ae6945b5c0f98a36881703817e4c450fa76742 /tmp/node-linux-x64.tar.xz' | sha256sum -c - \
Expand Down Expand Up @@ -1709,6 +1723,15 @@ jobs:
}

ensure_rust_toolchain() {
# Prefer rustup llvm-tools-preview when present; otherwise use system
# llvm-cov/llvm-profdata installed in the trusted coverage image so
# cargo-llvm-cov can measure line coverage without rustup components.
if [ -z "${LLVM_COV:-}" ] && command -v llvm-cov >/dev/null 2>&1; then
export LLVM_COV="$(command -v llvm-cov)"
fi
if [ -z "${LLVM_PROFDATA:-}" ] && command -v llvm-profdata >/dev/null 2>&1; then
export LLVM_PROFDATA="$(command -v llvm-profdata)"
fi
if ! command -v cargo >/dev/null 2>&1; then
append "### Rust coverage toolchain"
append ""
Expand Down
5 changes: 5 additions & 0 deletions tests/test_opencode_agent_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -2169,6 +2169,11 @@ def test_opencode_privileged_review_security_boundaries_are_fail_closed():
"967b5cc996c29d8baa52bbb4595ef1f53af35255af8e2036ddbc6468d7b523c7"
in coverage_job
)
assert 'rustc -vV | sed -n \'s/^LLVM version: //p\'' in coverage_job
assert 'llvm-cov --version | sed -n \'s/^LLVM version //p\'' in coverage_job
assert 'llvm-profdata --version | sed -n \'s/^LLVM version //p\'' in coverage_job
assert 'test "$RUSTC_LLVM_VERSION" = "$LLVM_COV_VERSION"' in coverage_job
assert 'test "$RUSTC_LLVM_VERSION" = "$LLVM_PROFDATA_VERSION"' in coverage_job
assert "sha256sum -c -" in coverage_job
assert "install.packages(" not in coverage_job

Expand Down
Loading