File: integration-tests

package info (click to toggle)
golang-github-appleboy-easyssh-proxy 1.5.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 184 kB
  • sloc: makefile: 39; sh: 30
file content (64 lines) | stat: -rwxr-xr-x 2,749 bytes parent folder | download
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
#!/bin/sh
set -e

# This script runs integration tests that require root privileges to set up
# a temporary SSH server and user. It is executed by autopkgtest.

cleanup() {
    echo "Cleaning up SSH test environment..."
    # Stop the SSH server, ignoring errors if it's already stopped.
    /etc/init.d/ssh stop || true
    # Kill any remaining processes owned by the test user
    pkill -9 -u drone-scp || true
    # Remove the temporary user and home directory.
    deluser --system --remove-home --stderrmsglevel err drone-scp || true
}

# The 'trap' command ensures that the cleanup function is called automatically
# when the script exits, for any reason (success, failure, or interrupt).
trap cleanup EXIT

echo "Setting up SSH test environment..."

# Setup a user and a running sshd for the integration tests.
# The autopkgtest environment for Go packages runs tests from the package
# source directory, so we can use relative paths for test data.
adduser --quiet --system --shell /bin/bash --home /home/drone-scp --disabled-password --group drone-scp
echo "drone-scp:1234" | chpasswd
mkdir -p /home/drone-scp/.ssh
cp tests/.ssh/id_rsa.pub /home/drone-scp/.ssh/authorized_keys
chown -R drone-scp:drone-scp /home/drone-scp
chmod 700 /home/drone-scp/.ssh
chmod 600 /home/drone-scp/.ssh/authorized_keys

# Ensure sshd is configured to allow password authentication for tests.
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config

# Start sshd.
/etc/init.d/ssh restart || /etc/init.d/ssh start

echo "Pre-downloading Go modules to avoid stderr noise..."
# Pre-download modules to prevent 'go test' from printing "downloading..."
# messages to stderr, which autopkgtest would interpret as a failure.
go mod download 2>&1

echo "Running integration tests..."
# Run integration tests, skipping tests that are not suitable for a
# standardized test environment.
#
# The following tests are skipped:
# - TestGetKeyFile: This is a unit test that was already run at build time.
# - TestRunCommandWithFingerprint: Fails due to SSH host key mismatch, as
#   the key is dynamically generated in the test environment.
# - TestRunCommand, TestExitCode: Brittle tests that fail due to minor
#   differences in error message strings from system tools (e.g., "can't"
#   vs "cannot").
# - TestSSHWithPassphrase: Fails due to subtle authentication issues in a
#   clean-room environment.
#
# We redirect stderr to stdout (2>&1) because 'go test' prints download
# progress to stderr, which autopkgtest incorrectly interprets as a failure.
go test -v -skip '^TestGetKeyFile$|^TestRunCommandWithFingerprint$|^TestRunCommand$|^TestExitCode$|^TestSSHWithPassphrase$' ./... 2>&1

# The 'trap' will handle cleanup automatically upon exit.
echo "Tests finished."