Skip to content

Commit b0461d0

Browse files
committed
fix(install): support normalized dev deb assets
1 parent 292fad8 commit b0461d0

3 files changed

Lines changed: 124 additions & 3 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.sh lookup tests
63+
run: sh e2e/install/install_dev_lookup_test.sh
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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+
# POSIX sh tests for install-dev.sh release asset lookup.
6+
#
7+
set -eu
8+
9+
. "$(dirname "$0")/helpers.sh"
10+
11+
INSTALL_DEV_SCRIPT="$REPO_ROOT/install-dev.sh"
12+
13+
_TMPDIR="$(mktemp -d)"
14+
trap 'rm -rf "$_TMPDIR"' EXIT
15+
16+
_FUNCTIONS="${_TMPDIR}/install-dev-functions.sh"
17+
awk '$0 == "main \"$@\"" { next } { print }' "$INSTALL_DEV_SCRIPT" > "$_FUNCTIONS"
18+
. "$_FUNCTIONS"
19+
20+
write_checksums() {
21+
_path="$1"
22+
shift
23+
24+
: > "$_path"
25+
for _line in "$@"; do
26+
printf '%s\n' "$_line" >> "$_path"
27+
done
28+
}
29+
30+
assert_deb_asset() {
31+
_label="$1"
32+
_arch="$2"
33+
_expected="$3"
34+
shift 3
35+
36+
_checksums="${_TMPDIR}/${_label}.checksums"
37+
write_checksums "$_checksums" "$@"
38+
39+
_actual="$(find_deb_asset "$_checksums" "$_arch")"
40+
if [ "$_actual" = "$_expected" ]; then
41+
pass "$_label"
42+
else
43+
fail "$_label" "expected '${_expected}', got '${_actual}'"
44+
fi
45+
}
46+
47+
assert_no_deb_asset() {
48+
_label="$1"
49+
_arch="$2"
50+
shift 2
51+
52+
_checksums="${_TMPDIR}/${_label}.checksums"
53+
write_checksums "$_checksums" "$@"
54+
55+
_actual="$(find_deb_asset "$_checksums" "$_arch")"
56+
if [ -z "$_actual" ]; then
57+
pass "$_label"
58+
else
59+
fail "$_label" "expected no match, got '${_actual}'"
60+
fi
61+
}
62+
63+
printf '=== install-dev.sh asset lookup tests ===\n\n'
64+
65+
assert_deb_asset \
66+
"selects normalized amd64 dev asset" \
67+
"amd64" \
68+
"openshell-dev-amd64.deb" \
69+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa openshell-dev-amd64.deb" \
70+
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb openshell-dev-arm64.deb"
71+
72+
assert_deb_asset \
73+
"selects normalized arm64 dev asset with binary marker" \
74+
"arm64" \
75+
"openshell-dev-arm64.deb" \
76+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *openshell-dev-amd64.deb" \
77+
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb *openshell-dev-arm64.deb"
78+
79+
assert_deb_asset \
80+
"keeps legacy Debian package fallback" \
81+
"amd64" \
82+
"openshell_0.1.0~dev_amd64.deb" \
83+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa openshell_0.1.0~dev_amd64.deb"
84+
85+
assert_deb_asset \
86+
"prefers normalized dev asset over legacy fallback" \
87+
"arm64" \
88+
"openshell-dev-arm64.deb" \
89+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa openshell_0.1.0~dev_arm64.deb" \
90+
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb openshell-dev-arm64.deb"
91+
92+
assert_no_deb_asset \
93+
"ignores mismatched architecture" \
94+
"amd64" \
95+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa openshell-dev-arm64.deb"
96+
97+
print_summary

install-dev.sh

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,23 @@ find_deb_asset() {
165165
_arch="$2"
166166

167167
awk -v arch="$_arch" '
168-
$2 ~ "^\\*?openshell_.*_" arch "\\.deb$" {
169-
sub("^\\*", "", $2)
170-
print $2
168+
{
169+
name = $2
170+
sub("^\\*", "", name)
171+
}
172+
name == "openshell-dev-" arch ".deb" {
173+
print name
174+
found = 1
171175
exit
172176
}
177+
legacy == "" && name ~ "^openshell_.*_" arch "\\.deb$" {
178+
legacy = name
179+
}
180+
END {
181+
if (!found && legacy != "") {
182+
print legacy
183+
}
184+
}
173185
' "$_checksums"
174186
}
175187

0 commit comments

Comments
 (0)