Skip to content

Commit eadddbe

Browse files
committed
fix(installer): detect dev Debian package assets
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
1 parent 49cc5a0 commit eadddbe

3 files changed

Lines changed: 135 additions & 4 deletions

File tree

.github/workflows/test-install.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ on:
44
pull_request:
55
paths:
66
- 'install.sh'
7+
- 'install-dev.sh'
78
- 'e2e/install/**'
89
- '.github/workflows/test-install.yml'
910
push:
1011
branches: [main]
1112
paths:
1213
- 'install.sh'
14+
- 'install-dev.sh'
1315
- 'e2e/install/**'
1416
- '.github/workflows/test-install.yml'
1517
workflow_dispatch:
@@ -49,3 +51,13 @@ jobs:
4951

5052
- name: Run tests (${{ matrix.shell }})
5153
run: ${{ matrix.run }}
54+
55+
test-install-dev:
56+
name: install-dev.sh lookup
57+
runs-on: ubuntu-latest
58+
59+
steps:
60+
- uses: actions/checkout@v6
61+
62+
- name: Run install-dev lookup tests
63+
run: sh e2e/install/install_dev_lookup_test.sh
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/bin/sh
2+
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
# SPDX-License-Identifier: Apache-2.0
4+
#
5+
# Unit-level checks for install-dev.sh release asset lookup.
6+
7+
set -eu
8+
9+
TEST_DIR="$(cd "$(dirname "$0")" && pwd)"
10+
REPO_ROOT="$(cd "$TEST_DIR/../.." && pwd)"
11+
INSTALL_DEV_SCRIPT="$REPO_ROOT/install-dev.sh"
12+
13+
_PASS=0
14+
_FAIL=0
15+
16+
pass() {
17+
_PASS=$((_PASS + 1))
18+
printf ' PASS: %s\n' "$1"
19+
}
20+
21+
fail() {
22+
_FAIL=$((_FAIL + 1))
23+
printf ' FAIL: %s\n' "$1" >&2
24+
if [ -n "${2:-}" ]; then
25+
printf ' %s\n' "$2" >&2
26+
fi
27+
}
28+
29+
assert_equal() {
30+
_expected="$1"
31+
_actual="$2"
32+
_label="$3"
33+
34+
if [ "$_actual" = "$_expected" ]; then
35+
pass "$_label"
36+
else
37+
fail "$_label" "expected '$_expected', got '$_actual'"
38+
fi
39+
}
40+
41+
print_summary() {
42+
printf '\n=== Results: %d passed, %d failed ===\n' "$_PASS" "$_FAIL"
43+
[ "$_FAIL" -eq 0 ]
44+
}
45+
46+
eval "$(sed -n '/^find_deb_asset() {$/,/^}$/p' "$INSTALL_DEV_SCRIPT")"
47+
48+
TMPDIR="$(mktemp -d)"
49+
trap 'rm -rf "$TMPDIR"' EXIT
50+
51+
printf '=== install-dev.sh asset lookup tests ===\n\n'
52+
53+
cat >"$TMPDIR/dev-checksums.txt" <<'EOF'
54+
111111 openshell-x86_64-unknown-linux-musl.tar.gz
55+
222222 openshell-dev-amd64.deb
56+
333333 openshell-dev-arm64.deb
57+
EOF
58+
59+
assert_equal \
60+
"openshell-dev-arm64.deb" \
61+
"$(find_deb_asset "$TMPDIR/dev-checksums.txt" arm64)" \
62+
"finds normalized dev arm64 Debian package"
63+
64+
assert_equal \
65+
"openshell-dev-amd64.deb" \
66+
"$(find_deb_asset "$TMPDIR/dev-checksums.txt" amd64)" \
67+
"finds normalized dev amd64 Debian package"
68+
69+
cat >"$TMPDIR/versioned-checksums.txt" <<'EOF'
70+
111111 openshell_0.0.37~dev145+gd2e80d1c9_amd64.deb
71+
222222 *openshell_0.0.37~dev145+gd2e80d1c9_arm64.deb
72+
EOF
73+
74+
assert_equal \
75+
"openshell_0.0.37~dev145+gd2e80d1c9_arm64.deb" \
76+
"$(find_deb_asset "$TMPDIR/versioned-checksums.txt" arm64)" \
77+
"finds versioned arm64 Debian package"
78+
79+
assert_equal \
80+
"openshell_0.0.37~dev145+gd2e80d1c9_amd64.deb" \
81+
"$(find_deb_asset "$TMPDIR/versioned-checksums.txt" amd64)" \
82+
"finds versioned amd64 Debian package"
83+
84+
cat >"$TMPDIR/both-checksums.txt" <<'EOF'
85+
111111 openshell_0.0.37~dev145+gd2e80d1c9_arm64.deb
86+
222222 openshell-dev-arm64.deb
87+
EOF
88+
89+
assert_equal \
90+
"openshell-dev-arm64.deb" \
91+
"$(find_deb_asset "$TMPDIR/both-checksums.txt" arm64)" \
92+
"prefers normalized dev Debian package"
93+
94+
cat >"$TMPDIR/no-deb-checksums.txt" <<'EOF'
95+
111111 openshell-aarch64-unknown-linux-musl.tar.gz
96+
EOF
97+
98+
assert_equal \
99+
"" \
100+
"$(find_deb_asset "$TMPDIR/no-deb-checksums.txt" arm64)" \
101+
"returns empty result when no matching Debian package exists"
102+
103+
print_summary

install-dev.sh

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,26 @@ find_deb_asset() {
227227
_arch="$2"
228228

229229
awk -v arch="$_arch" '
230-
$2 ~ "^\\*?openshell_.*_" arch "\\.deb$" {
231-
sub("^\\*", "", $2)
232-
print $2
233-
exit
230+
{
231+
name = $2
232+
sub("^\\*", "", name)
233+
234+
if (name == "openshell-dev-" arch ".deb") {
235+
selected = name
236+
found = 1
237+
exit
238+
}
239+
240+
if (fallback == "" && name ~ "^openshell_.*_" arch "\\.deb$") {
241+
fallback = name
242+
}
243+
}
244+
END {
245+
if (found) {
246+
print selected
247+
} else if (fallback != "") {
248+
print fallback
249+
}
234250
}
235251
' "$_checksums"
236252
}

0 commit comments

Comments
 (0)