Mercurial > crates > nonstick
annotate testharness/install-test-harness.sh @ 171:e27c5c667a5a
Create full new types for return code and flags, separate end to end.
This plumbs the ReturnCode and RawFlags types through the places where
we call into or are called from PAM.
Also adds Sun documentation to the project.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Fri, 25 Jul 2025 20:52:14 -0400 |
parents | 77470e45e397 |
children |
rev | line source |
---|---|
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
1 #!/bin/sh |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
2 |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
3 set -ex |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
4 |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
5 LINUX_BSD_CONF="/etc/pam.d/nonstick-testharness" |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
6 |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
7 patch_pam_conf() { |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
8 SRC="$1" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
9 DST="$2" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
10 LIB="$3" |
169
77470e45e397
Set up stuff to work the way Sun expects it to.
Paul Fisher <paul@pfish.zone>
parents:
165
diff
changeset
|
11 SUN_PATCH="" |
77470e45e397
Set up stuff to work the way Sun expects it to.
Paul Fisher <paul@pfish.zone>
parents:
165
diff
changeset
|
12 if [ "$(uname -s)" = "SunOS" ]; then |
77470e45e397
Set up stuff to work the way Sun expects it to.
Paul Fisher <paul@pfish.zone>
parents:
165
diff
changeset
|
13 SUN_PATCH="s/^#Sun#//" |
77470e45e397
Set up stuff to work the way Sun expects it to.
Paul Fisher <paul@pfish.zone>
parents:
165
diff
changeset
|
14 fi |
77470e45e397
Set up stuff to work the way Sun expects it to.
Paul Fisher <paul@pfish.zone>
parents:
165
diff
changeset
|
15 sed -e "s#pam_testharness\.so#$LIB#" -e "$SUN_PATCH" <"$SRC" >"$DST" |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
16 } |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
17 |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
18 setup_pam_conf() { |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
19 SRC="$1" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
20 case "$(uname -s)" in |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
21 "Linux" | *BSD) |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
22 # For Linux-PAM and OpenPAM, PAM is configured with the per-service files |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
23 # in /etc/pam.d/... |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
24 sudo cp "$SRC" "$LINUX_BSD_CONF" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
25 ;; |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
26 "SunOS") |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
27 # On SunOS, PAM has just the one configuration file, |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
28 # with the service prepended to each line. |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
29 sudo cp /etc/pam.conf /etc/pam.conf.bak |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
30 sed 's/^\([^#]\)/nonstick-testharness \1/' <"$SRC" \ |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
31 | sudo tee -a /etc/pam.conf >/dev/null |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
32 ;; |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
33 *) |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
34 echo "UNKNOWN OS!!!" |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
35 return 1 |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
36 ;; |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
37 esac |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
38 } |
163
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
39 |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
40 cleanup_pam_conf() { |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
41 case "$(uname -s)" in |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
42 "Linux" | *BSD) |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
43 sudo rm "$LINUX_BSD_CONF" |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
44 ;; |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
45 "SunOS") |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
46 sudo mv /etc/pam.conf.bak /etc/pam.conf |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
47 ;; |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
48 esac |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
49 } |
163
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
50 |
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
51 HERE="$(dirname -- "$0")" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
52 cd "$HERE" |
163
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
53 cargo build --release |
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
54 |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
55 cleanup() { |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
56 rm -r "$MY_TEMP" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
57 sudo rm -r "$ROOT_TEMP" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
58 cleanup_pam_conf |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
59 } |
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
60 |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
61 MY_TEMP="$(mktemp -d -t nonstick-user-XXXXXX)" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
62 ROOT_TEMP="$(sudo mktemp -d -t nonstick-root-XXXXXX)" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
63 sudo chmod a+rx "$ROOT_TEMP" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
64 PAM_LIBRARY="$ROOT_TEMP/pam_nonstick.so" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
65 sudo cp ../target/release/libnonstick_testharness.so "$PAM_LIBRARY" |
165
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
66 patch_pam_conf ./nonstick_testharness.conf "$MY_TEMP/nonstick-testharness" "$PAM_LIBRARY" |
c4b1e280463c
Make test script really work across platforms (?).
Paul Fisher <paul@pfish.zone>
parents:
164
diff
changeset
|
67 setup_pam_conf "$MY_TEMP/nonstick-testharness" |
164
d0bba0117456
make test script more cross platform?
Paul Fisher <paul@pfish.zone>
parents:
163
diff
changeset
|
68 trap cleanup EXIT |
163
a75a66cb4181
Add end-to-end tests; fix issues found by tests.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
69 "$@" && echo "SUCCESS!!!" || echo "FAILURE: $?" |