-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathinstall.sh.test
More file actions
executable file
·117 lines (93 loc) · 3.65 KB
/
Copy pathinstall.sh.test
File metadata and controls
executable file
·117 lines (93 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env bash
# install-test.sh - Tests for install.sh
#
# Usage: ./install-test.sh <version>
#
# Requires the release to already be published on GitHub.
set -euo pipefail
VERSION="${1:?Usage: install-test.sh <version>}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_SCRIPT="${SCRIPT_DIR}/install.sh"
PASS=0
FAIL=0
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------
info() { echo ""; echo "=== $* ==="; }
pass() { echo "PASS: $*"; PASS=$((PASS + 1)); }
fail() { echo "FAIL: $*"; FAIL=$((FAIL + 1)); }
assert_version() {
local binary="$1"
local expected="$2"
if "$binary" --version | grep -q "$expected"; then
pass "$binary --version contains '$expected'"
else
fail "$binary --version does not contain '$expected' (got: $("$binary" --version 2>&1))"
fi
}
assert_executable() {
local binary="$1"
if [ -x "$binary" ]; then
pass "$binary is executable"
else
fail "$binary is not executable"
fi
}
cleanup() {
rm -rf "$WORKDIR"
}
WORKDIR=$(mktemp -d)
trap cleanup EXIT
# ---------------------------------------------------------------------------
# Test 1: Install to current directory (default)
# ---------------------------------------------------------------------------
info "Test 1: Default install (current directory)"
TEST_DIR="${WORKDIR}/test-default"
mkdir -p "$TEST_DIR"
(cd "$TEST_DIR" && sh "$INSTALL_SCRIPT" --version "$VERSION")
assert_executable "${TEST_DIR}/streamx"
assert_version "${TEST_DIR}/streamx" "$VERSION"
# ---------------------------------------------------------------------------
# Test 2: Install with --dest flag
# ---------------------------------------------------------------------------
info "Test 2: Install with --dest flag"
DEST_DIR="${WORKDIR}/test-dest/custom/path"
sh "$INSTALL_SCRIPT" --version "$VERSION" --dest "$DEST_DIR"
assert_executable "${DEST_DIR}/streamx"
assert_version "${DEST_DIR}/streamx" "$VERSION"
# ---------------------------------------------------------------------------
# Test 3: Install with -v and -d short flags
# ---------------------------------------------------------------------------
info "Test 3: Install with short flags (-v, -d)"
SHORT_DIR="${WORKDIR}/test-short"
sh "$INSTALL_SCRIPT" -v "$VERSION" -d "$SHORT_DIR"
assert_executable "${SHORT_DIR}/streamx"
assert_version "${SHORT_DIR}/streamx" "$VERSION"
# ---------------------------------------------------------------------------
# Test 4: Overwrite existing installation
# ---------------------------------------------------------------------------
info "Test 4: Overwrite existing installation"
OVERWRITE_DIR="${WORKDIR}/test-overwrite"
mkdir -p "$OVERWRITE_DIR"
echo "placeholder" > "${OVERWRITE_DIR}/streamx"
sh "$INSTALL_SCRIPT" --version "$VERSION" --dest "$OVERWRITE_DIR"
assert_executable "${OVERWRITE_DIR}/streamx"
assert_version "${OVERWRITE_DIR}/streamx" "$VERSION"
# ---------------------------------------------------------------------------
# Test 5: --help flag exits successfully
# ---------------------------------------------------------------------------
info "Test 5: --help flag"
HELP_OUTPUT=$(sh "$INSTALL_SCRIPT" --help 2>&1 || true)
if echo "$HELP_OUTPUT" | grep -q "Usage"; then
pass "--help prints usage"
else
fail "--help did not print usage"
fi
# ---------------------------------------------------------------------------
# Summary
# ---------------------------------------------------------------------------
echo ""
echo "==========================================="
echo "Results: ${PASS} passed, ${FAIL} failed"
echo "==========================================="
[ "$FAIL" -eq 0 ] || exit 1