chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,638 @@
|
||||
name: Test Installation
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
# Temporary compatibility window: support both legacy v* and package-scoped CLI tags.
|
||||
- 'v*'
|
||||
- '@composio/cli@*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version to test (e.g., 1.0.0 or @composio/cli@1.0.0)'
|
||||
required: true
|
||||
workflow_call:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Release tag or semver version to test'
|
||||
required: false
|
||||
default: 'latest'
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
toolchain-versions:
|
||||
name: Read toolchain test matrix
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
node_install_compat: ${{ steps.versions.outputs.node_install_compat }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Read versions
|
||||
id: versions
|
||||
run: echo "node_install_compat=$(jq -c '.node_install_compat' toolchain-versions.json)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
install-script-unit-tests:
|
||||
name: Install Script Unit Tests
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Test release resolution fallback
|
||||
run: bash test/install-sh-release-resolution.test.sh
|
||||
|
||||
test-install-script:
|
||||
name: Test Install Script
|
||||
needs: install-script-unit-tests
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# Ubuntu x64 versions
|
||||
- os: ubuntu-22.04
|
||||
name: 'Ubuntu 22.04 x64'
|
||||
shell: bash
|
||||
- os: ubuntu-22.04
|
||||
name: 'Ubuntu 22.04 x64 (zsh)'
|
||||
shell: zsh
|
||||
- os: ubuntu-latest
|
||||
name: 'Ubuntu Latest x64'
|
||||
shell: bash
|
||||
|
||||
# Ubuntu ARM64 versions (using Depot)
|
||||
- os: depot-ubuntu-24.04-arm
|
||||
name: 'Ubuntu 24.04 ARM64'
|
||||
shell: bash
|
||||
- os: depot-ubuntu-22.04-arm
|
||||
name: 'Ubuntu 22.04 ARM64'
|
||||
shell: bash
|
||||
- os: depot-ubuntu-22.04-arm
|
||||
name: 'Ubuntu 22.04 ARM64 (zsh)'
|
||||
shell: zsh
|
||||
|
||||
# macOS versions
|
||||
- os: macos-15-intel
|
||||
name: 'macOS 15 (Intel)'
|
||||
shell: bash
|
||||
- os: macos-15-intel
|
||||
name: 'macOS 15 (Intel, zsh)'
|
||||
shell: zsh
|
||||
- os: macos-14
|
||||
name: 'macOS 14 (Sonoma)'
|
||||
shell: bash
|
||||
- os: macos-15
|
||||
name: 'macOS 15 (Apple Silicon)'
|
||||
shell: bash
|
||||
- os: macos-15
|
||||
name: 'macOS 15 (Apple Silicon, zsh)'
|
||||
shell: zsh
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Resolve and validate target release
|
||||
id: release_target
|
||||
shell: bash
|
||||
env:
|
||||
VERSION_INPUT: ${{ inputs.version }}
|
||||
run: |
|
||||
raw_input="$VERSION_INPUT"
|
||||
if [[ -z "$raw_input" || "$raw_input" == "latest" ]]; then
|
||||
echo "use_latest=true" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# For manual runs, accept a full package tag or semver and normalize to a package tag.
|
||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||
if [[ "$raw_input" =~ ^@composio/cli@ ]]; then
|
||||
echo "use_latest=false" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=$raw_input" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
elif [[ "$raw_input" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
|
||||
echo "use_latest=false" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=@composio/cli@$raw_input" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
echo "Invalid version: '$raw_input'"
|
||||
echo "Expected format like: 1.2.3, 1.2.3-beta.1, 1.2.3+build.7, or @composio/cli@1.2.3"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# For workflow_call / push, accept a full package tag, semver, or legacy v* tag.
|
||||
if [[ "$raw_input" =~ ^@composio/cli@ ]]; then
|
||||
echo "use_latest=false" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=$raw_input" >> "$GITHUB_OUTPUT"
|
||||
elif [[ "$raw_input" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
|
||||
echo "use_latest=false" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=@composio/cli@$raw_input" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "use_latest=false" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=$raw_input" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
- name: Setup shell environment
|
||||
run: |
|
||||
if [[ "${{ matrix.shell }}" == "zsh" ]]; then
|
||||
# Install zsh if not present
|
||||
if ! command -v zsh &> /dev/null; then
|
||||
if [[ "${{ runner.os }}" == "Linux" ]]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y zsh
|
||||
elif [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||
# zsh is default on macOS
|
||||
echo "zsh already available"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create .zshrc if it doesn't exist
|
||||
touch ~/.zshrc
|
||||
|
||||
# Set zsh as the shell for this session
|
||||
export SHELL=$(which zsh)
|
||||
echo "SHELL=$(which zsh)" >> $GITHUB_ENV
|
||||
else
|
||||
# Ensure bash is available and create .bashrc
|
||||
touch ~/.bashrc
|
||||
export SHELL=$(which bash)
|
||||
echo "SHELL=$(which bash)" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Test install script (latest version)
|
||||
if: steps.release_target.outputs.use_latest == 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Testing installation with auto-detected latest CLI version..."
|
||||
|
||||
# Test the install script without version (it will auto-detect latest CLI release)
|
||||
bash install.sh
|
||||
|
||||
# Verify installation
|
||||
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
|
||||
export PATH="$HOME/.composio:$PATH"
|
||||
|
||||
# Check if binary exists
|
||||
if [[ -f "$HOME/.composio/composio" ]]; then
|
||||
echo "✅ Binary installed successfully"
|
||||
ls -la "$HOME/.composio/composio"
|
||||
else
|
||||
echo "❌ Binary not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test binary execution
|
||||
if "$HOME/.composio/composio" --version; then
|
||||
echo "✅ Binary executes successfully"
|
||||
else
|
||||
echo "❌ Binary execution failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test install script (specific version)
|
||||
if: steps.release_target.outputs.use_latest != 'true'
|
||||
shell: bash
|
||||
env:
|
||||
RELEASE_TAG: ${{ steps.release_target.outputs.release_tag }}
|
||||
run: |
|
||||
echo "Testing installation with version: ${RELEASE_TAG}"
|
||||
|
||||
# Test the install script with specific version
|
||||
bash install.sh "${RELEASE_TAG}"
|
||||
|
||||
# Verify installation
|
||||
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
|
||||
export PATH="$HOME/.composio:$PATH"
|
||||
|
||||
# Check if binary exists
|
||||
if [[ -f "$HOME/.composio/composio" ]]; then
|
||||
echo "✅ Binary installed successfully"
|
||||
ls -la "$HOME/.composio/composio"
|
||||
else
|
||||
echo "❌ Binary not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test binary execution
|
||||
if "$HOME/.composio/composio" --version; then
|
||||
echo "✅ Binary executes successfully"
|
||||
else
|
||||
echo "❌ Binary execution failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test PATH integration
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Testing PATH integration with ${{ matrix.shell }}..."
|
||||
|
||||
# Debug: Check what files exist and their contents
|
||||
echo "=== DEBUGGING ==="
|
||||
echo "Checking shell config files:"
|
||||
ls -la ~/ | grep -E '\.(bash|zsh)' || echo "No shell config files found"
|
||||
|
||||
if [[ -f ~/.bashrc ]]; then
|
||||
echo "=== ~/.bashrc contents ==="
|
||||
cat ~/.bashrc
|
||||
fi
|
||||
|
||||
if [[ -f ~/.zshrc ]]; then
|
||||
echo "=== ~/.zshrc contents ==="
|
||||
cat ~/.zshrc
|
||||
fi
|
||||
|
||||
echo "=== Installation directory ==="
|
||||
ls -la ~/.composio/ || echo "~/.composio/ not found"
|
||||
|
||||
echo "=== Current PATH before sourcing ==="
|
||||
echo "$PATH"
|
||||
|
||||
if [[ "${{ matrix.shell }}" == "zsh" ]]; then
|
||||
if [[ -f ~/.zshrc ]]; then
|
||||
echo "Testing interactive zsh startup..."
|
||||
if zsh -ic 'echo "PATH after startup: $PATH"; command -v composio; composio --version; composio --help | head -5'; then
|
||||
echo "✅ composio found in PATH via zsh"
|
||||
else
|
||||
echo "❌ composio not found in PATH via zsh"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "❌ ~/.zshrc not found - install script failed to create it"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ -f ~/.bashrc ]]; then
|
||||
echo "Testing interactive bash startup..."
|
||||
if bash -ic 'echo "PATH after startup: $PATH"; command -v composio; composio --version; composio --help | head -5'; then
|
||||
echo "✅ composio found in PATH via bash"
|
||||
else
|
||||
echo "❌ composio not found in PATH via bash"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "❌ ~/.bashrc not found - install script failed to create it"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Test bundled support files
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Checking bundled support files..."
|
||||
|
||||
install_dir="${COMPOSIO_INSTALL_DIR:-$HOME/.composio}"
|
||||
release_tag=$(cat "$install_dir/release-tag.txt")
|
||||
|
||||
platform=$(uname -ms)
|
||||
case $platform in
|
||||
'Darwin x86_64') target=darwin-x64 ;;
|
||||
'Darwin arm64') target=darwin-aarch64 ;;
|
||||
'Linux aarch64' | 'Linux arm64')
|
||||
target=linux-aarch64 ;;
|
||||
'Linux x86_64') target=linux-x64 ;;
|
||||
*) echo "❌ Unsupported platform: $platform"; exit 1 ;;
|
||||
esac
|
||||
|
||||
if [[ $target = darwin-x64 ]]; then
|
||||
if [[ $(sysctl -n sysctl.proc_translated 2>/dev/null) = 1 ]]; then
|
||||
target=darwin-aarch64
|
||||
fi
|
||||
fi
|
||||
|
||||
archive_name="composio-$target.zip"
|
||||
archive_url="https://github.com/ComposioHQ/composio/releases/download/$release_tag/$archive_name"
|
||||
tmpdir="$(mktemp -d)"
|
||||
trap 'rm -rf "$tmpdir"' EXIT
|
||||
|
||||
curl --fail --silent --location --output "$tmpdir/$archive_name" "$archive_url"
|
||||
|
||||
expected_paths="$(
|
||||
unzip -Z1 "$tmpdir/$archive_name" \
|
||||
| grep -v '/$' \
|
||||
| sed "s#^composio-$target/##" \
|
||||
| grep -v '^composio$' \
|
||||
| sort
|
||||
)"
|
||||
|
||||
if [ -z "$expected_paths" ]; then
|
||||
echo "❌ No bundled support files found in $archive_name"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
missing=""
|
||||
echo "$expected_paths" | while IFS= read -r relative_path; do
|
||||
if [ -f "$install_dir/$relative_path" ]; then
|
||||
echo "✅ Found $relative_path"
|
||||
else
|
||||
echo "MISSING:$relative_path"
|
||||
fi
|
||||
done > "$tmpdir/check_output"
|
||||
|
||||
cat "$tmpdir/check_output" | grep -v '^MISSING:' || true
|
||||
|
||||
missing="$(grep '^MISSING:' "$tmpdir/check_output" | sed 's/^MISSING://' || true)"
|
||||
if [ -n "$missing" ]; then
|
||||
printf '❌ Missing bundled support files after install:\n' >&2
|
||||
echo "$missing" | while IFS= read -r p; do
|
||||
printf ' %s\n' "$p" >&2
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test shell config updates
|
||||
run: |
|
||||
echo "Checking shell configuration updates..."
|
||||
|
||||
if [[ "${{ matrix.shell }}" == "zsh" ]]; then
|
||||
config_file=~/.zshrc
|
||||
else
|
||||
config_file=~/.bashrc
|
||||
fi
|
||||
|
||||
if grep -q "COMPOSIO_INSTALL_DIR" "$config_file"; then
|
||||
echo "✅ $config_file updated with COMPOSIO_INSTALL_DIR"
|
||||
else
|
||||
echo "❌ $config_file not updated with COMPOSIO_INSTALL_DIR"
|
||||
echo "=== $config_file contents ==="
|
||||
cat "$config_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -q 'export PATH=.*COMPOSIO_INSTALL_DIR.*PATH' "$config_file"; then
|
||||
echo "✅ $config_file updated with PATH"
|
||||
else
|
||||
echo "❌ $config_file PATH not updated"
|
||||
echo "=== $config_file contents ==="
|
||||
cat "$config_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test custom install directory
|
||||
shell: bash
|
||||
env:
|
||||
USE_LATEST: ${{ steps.release_target.outputs.use_latest }}
|
||||
RELEASE_TAG: ${{ steps.release_target.outputs.release_tag }}
|
||||
run: |
|
||||
echo "Testing custom install directory..."
|
||||
|
||||
# Clean up previous installation
|
||||
rm -rf ~/.composio
|
||||
|
||||
# Test with custom directory using the same version as the workflow
|
||||
export COMPOSIO_INSTALL_DIR="/tmp/custom-composio"
|
||||
if [[ "$USE_LATEST" == "true" ]]; then
|
||||
bash install.sh
|
||||
else
|
||||
bash install.sh "${RELEASE_TAG}"
|
||||
fi
|
||||
|
||||
# Verify custom installation
|
||||
if [[ -f "/tmp/custom-composio/composio" ]]; then
|
||||
echo "✅ Custom directory installation successful"
|
||||
ls -la "/tmp/custom-composio/composio"
|
||||
else
|
||||
echo "❌ Custom directory installation failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test execution
|
||||
if "/tmp/custom-composio/composio" --version; then
|
||||
echo "✅ Custom installation executes successfully"
|
||||
else
|
||||
echo "❌ Custom installation execution failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test uninstallation
|
||||
run: |
|
||||
echo "Testing uninstallation..."
|
||||
|
||||
# Remove binary
|
||||
rm -rf ~/.composio /tmp/custom-composio
|
||||
|
||||
# Check if binary is gone
|
||||
if [[ ! -f "$HOME/.composio/composio" ]]; then
|
||||
echo "✅ Binary removed successfully"
|
||||
else
|
||||
echo "❌ Binary removal failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test error handling
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Testing error handling..."
|
||||
|
||||
# Test with invalid version
|
||||
if bash install.sh v999.999.999 2>&1 | grep -q "Failed"; then
|
||||
echo "✅ Error handling works for invalid version"
|
||||
else
|
||||
echo "❌ Error handling failed"
|
||||
# Don't exit 1 here as this is expected to fail
|
||||
fi
|
||||
|
||||
test-npm-fallback:
|
||||
name: Test npm Installation Fallback
|
||||
needs: toolchain-versions
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-15]
|
||||
node-version: ${{ fromJSON(needs.toolchain-versions.outputs.node_install_compat) }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Test npm installation
|
||||
run: |
|
||||
echo "Testing npm installation as fallback..."
|
||||
|
||||
# This would normally install from npm registry
|
||||
# For testing, we just verify the command works
|
||||
if command -v npm &> /dev/null; then
|
||||
echo "✅ npm is available"
|
||||
npm --version
|
||||
else
|
||||
echo "❌ npm not available"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-architecture-detection:
|
||||
name: Test Architecture Detection
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
arch: x64
|
||||
expected: 'Linux x64'
|
||||
- os: depot-ubuntu-24.04-arm
|
||||
arch: arm64
|
||||
expected: 'Linux ARM64'
|
||||
- os: macos-15-intel
|
||||
arch: x64
|
||||
expected: 'macOS x64'
|
||||
- os: macos-15
|
||||
arch: arm64
|
||||
expected: 'macOS ARM64'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Test architecture detection
|
||||
run: |
|
||||
echo "Testing architecture detection for: ${{ matrix.expected }}"
|
||||
|
||||
platform=$(uname -ms)
|
||||
echo "Detected platform: $platform"
|
||||
|
||||
case $platform in
|
||||
'Darwin x86_64')
|
||||
detected="macOS x64"
|
||||
;;
|
||||
'Darwin arm64')
|
||||
detected="macOS ARM64"
|
||||
;;
|
||||
'Linux x86_64')
|
||||
detected="Linux x64"
|
||||
;;
|
||||
'Linux aarch64'|'Linux arm64')
|
||||
detected="Linux ARM64"
|
||||
;;
|
||||
*)
|
||||
echo "❌ Unknown platform: $platform"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$detected" == "${{ matrix.expected }}" ]]; then
|
||||
echo "✅ Correctly detected: $detected"
|
||||
else
|
||||
echo "❌ Detection mismatch: expected '${{ matrix.expected }}', got '$detected'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-prerequisites:
|
||||
name: Test Prerequisites
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-15]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
|
||||
- name: Test required tools
|
||||
run: |
|
||||
echo "Testing required tools..."
|
||||
|
||||
# Test curl
|
||||
if command -v curl &> /dev/null; then
|
||||
echo "✅ curl available"
|
||||
curl --version | head -1
|
||||
else
|
||||
echo "❌ curl not available"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test unzip
|
||||
if command -v unzip &> /dev/null; then
|
||||
echo "✅ unzip available"
|
||||
unzip -v | head -1
|
||||
else
|
||||
echo "❌ unzip not available"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Test without prerequisites
|
||||
run: |
|
||||
echo "Testing error handling when prerequisites are missing..."
|
||||
|
||||
# Create a version of the script that will fail prerequisite check
|
||||
sed 's/command -v curl/command -v nonexistent-tool/' install.sh > test-install.sh
|
||||
|
||||
if bash test-install.sh 2>&1 | grep -q "required to install"; then
|
||||
echo "✅ Prerequisites check works"
|
||||
else
|
||||
echo "❌ Prerequisites check failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm test-install.sh
|
||||
|
||||
summary:
|
||||
name: Installation Test Summary
|
||||
needs:
|
||||
[
|
||||
install-script-unit-tests,
|
||||
test-install-script,
|
||||
test-npm-fallback,
|
||||
test-architecture-detection,
|
||||
test-prerequisites,
|
||||
]
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Test Results Summary
|
||||
run: |
|
||||
echo "## Installation Test Results" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
if [[ "${{ needs.install-script-unit-tests.result }}" == "success" ]]; then
|
||||
echo "✅ **Install Script Unit Tests**: PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **Install Script Unit Tests**: FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [[ "${{ needs.test-install-script.result }}" == "success" ]]; then
|
||||
echo "✅ **Install Script Tests**: PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **Install Script Tests**: FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [[ "${{ needs.test-npm-fallback.result }}" == "success" ]]; then
|
||||
echo "✅ **npm Fallback Tests**: PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **npm Fallback Tests**: FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [[ "${{ needs.test-architecture-detection.result }}" == "success" ]]; then
|
||||
echo "✅ **Architecture Detection**: PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **Architecture Detection**: FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [[ "${{ needs.test-prerequisites.result }}" == "success" ]]; then
|
||||
echo "✅ **Prerequisites Check**: PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **Prerequisites Check**: FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Test Matrix Coverage:**" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Linux x64**: Ubuntu 22.04, Latest" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Linux ARM64**: Ubuntu 22.04, 24.04 (via Depot)" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **macOS x64**: macOS 15 (Intel)" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **macOS ARM64**: macOS 14, macOS 15 (Apple Silicon)" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Shells**: Bash and Zsh" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Node.js**: 18, 20, 22 (npm fallback)" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Total platforms**: 4 architectures across 15+ environments" >> $GITHUB_STEP_SUMMARY
|
||||
Reference in New Issue
Block a user