Mercurial > crates > nonstick
comparison testharness/install-test-harness.sh @ 165:c4b1e280463c
Make test script really work across platforms (?).
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Mon, 14 Jul 2025 18:56:55 -0400 |
parents | d0bba0117456 |
children | 77470e45e397 |
comparison
equal
deleted
inserted
replaced
164:d0bba0117456 | 165:c4b1e280463c |
---|---|
1 #!/bin/sh | 1 #!/bin/sh |
2 | 2 |
3 set -exo pipefail | 3 set -ex |
4 | 4 |
5 LINUX_BSD_CONF="/etc/pam.d/nonstick-testharness" | 5 LINUX_BSD_CONF="/etc/pam.d/nonstick-testharness" |
6 | 6 |
7 pam_library_path() { | 7 patch_pam_conf() { |
8 SRC="$1" | |
9 DST="$2" | |
10 LIB="$3" | |
11 sed "s#pam_testharness\.so#$LIB#" <"$SRC" >"$DST" | |
12 } | |
13 | |
14 setup_pam_conf() { | |
15 SRC="$1" | |
8 case "$(uname -s)" in | 16 case "$(uname -s)" in |
9 "Linux" | "SunOS") | 17 "Linux" | *BSD) |
10 echo "/usr/lib/security" | 18 # For Linux-PAM and OpenPAM, PAM is configured with the per-service files |
19 # in /etc/pam.d/... | |
20 sudo cp "$SRC" "$LINUX_BSD_CONF" | |
11 ;; | 21 ;; |
12 *BSD) | 22 "SunOS") |
13 echo "/usr/lib" | 23 # On SunOS, PAM has just the one configuration file, |
24 # with the service prepended to each line. | |
25 sudo cp /etc/pam.conf /etc/pam.conf.bak | |
26 sed 's/^\([^#]\)/nonstick-testharness \1/' <"$SRC" \ | |
27 | sudo tee -a /etc/pam.conf >/dev/null | |
14 ;; | 28 ;; |
15 *) | 29 *) |
16 echo "UNKNOWN OS!!!" | 30 echo "UNKNOWN OS!!!" |
17 return 1 | 31 return 1 |
18 ;; | 32 ;; |
19 esac | 33 esac |
20 } | 34 } |
21 | 35 |
22 setup_pam_conf() { | |
23 case "$(uname -s)" in | |
24 "Linux" | *BSD) | |
25 sudo cp nonstick_testharness.conf "$LINUX_BSD_CONF" | |
26 ;; | |
27 "SunOS") | |
28 sudo cp /etc/pam.conf /etc/pam.conf.bak | |
29 sed 's/^\([^#]\)/nonstick-testharness \1/' <./nonstick_testharness.conf \ | |
30 | sudo tee -a /etc/pam.conf >/dev/null | |
31 ;; | |
32 *) | |
33 echo "UNKNOWN OS!!!" | |
34 return 1 | |
35 ;; | |
36 esac | |
37 } | |
38 cleanup_pam_conf() { | 36 cleanup_pam_conf() { |
39 case "$(uname -s)" in | 37 case "$(uname -s)" in |
40 "Linux" | *BSD) | 38 "Linux" | *BSD) |
41 sudo rm "$LINUX_BSD_CONF" | 39 sudo rm "$LINUX_BSD_CONF" |
42 ;; | 40 ;; |
47 } | 45 } |
48 | 46 |
49 HERE="$(dirname -- "$0")" | 47 HERE="$(dirname -- "$0")" |
50 cd "$HERE" | 48 cd "$HERE" |
51 cargo build --release | 49 cargo build --release |
52 PAM_LIBRARY="$(pam_library_path)/pam_testharness.so" | |
53 | 50 |
54 cleanup() { | 51 cleanup() { |
55 sudo rm "$PAM_LIBRARY" | 52 rm -r "$MY_TEMP" |
53 sudo rm -r "$ROOT_TEMP" | |
56 cleanup_pam_conf | 54 cleanup_pam_conf |
57 } | 55 } |
58 | 56 |
57 MY_TEMP="$(mktemp -d -t nonstick-user-XXXXXX)" | |
58 ROOT_TEMP="$(sudo mktemp -d -t nonstick-root-XXXXXX)" | |
59 sudo chmod a+rx "$ROOT_TEMP" | |
60 PAM_LIBRARY="$ROOT_TEMP/pam_nonstick.so" | |
59 sudo cp ../target/release/libnonstick_testharness.so "$PAM_LIBRARY" | 61 sudo cp ../target/release/libnonstick_testharness.so "$PAM_LIBRARY" |
60 setup_pam_conf | 62 patch_pam_conf ./nonstick_testharness.conf "$MY_TEMP/nonstick-testharness" "$PAM_LIBRARY" |
63 setup_pam_conf "$MY_TEMP/nonstick-testharness" | |
61 trap cleanup EXIT | 64 trap cleanup EXIT |
62 "$@" && echo "SUCCESS!!!" || echo "FAILURE: $?" | 65 "$@" && echo "SUCCESS!!!" || echo "FAILURE: $?" |