summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@parabola.nu>2024-02-21 18:39:13 -0700
committerLuke T. Shumaker <lukeshu@parabola.nu>2024-02-21 19:27:19 -0700
commit497656ccafef59e009525b663f940d7d97f8906d (patch)
tree2690284cf8519bd0fc93e3cc3665be38d8f341a8
parentc1920ba5e8888b28d45b74890bd685e916433fd5 (diff)
fix: librerelease: Fix pbot notification
-rwxr-xr-xsrc/abslibre-tools/librerelease2
-rw-r--r--test/cases/librerelease.bats59
2 files changed, 60 insertions, 1 deletions
diff --git a/src/abslibre-tools/librerelease b/src/abslibre-tools/librerelease
index a887ce4..b441a4c 100755
--- a/src/abslibre-tools/librerelease
+++ b/src/abslibre-tools/librerelease
@@ -301,7 +301,7 @@ release_packages() {
local packages=${file_list} # TODO: parse package names? - this is gonna be messy
local login=${REPODEST_userinfo:-somebody} ; login=${login%%:*} ;
ssh ${REPODEST_port:+-p "$REPODEST_port"} "${REPODEST_userhost}" \
- "if type pbot-say &>/dev/null-say; then pbot-say ${login} just published: ${packages}; fi"
+ "if type pbot-say &>/dev/null; then pbot-say ${login} just published: ${packages}; fi"
return $EXIT_SUCCESS
}
diff --git a/test/cases/librerelease.bats b/test/cases/librerelease.bats
index 3b83651..a984d73 100644
--- a/test/cases/librerelease.bats
+++ b/test/cases/librerelease.bats
@@ -165,3 +165,62 @@ teardown() {
diff -u "$tmpdir/pwd.txt" "$tmpdir/prerelease.txt"
diff -u "$tmpdir/pwd.txt" "$tmpdir/postrelease.txt"
}
+
+@test "librerelease notifies pbot" {
+ # Add a stub db-update pbot-say so that when we ssh to localhost it has
+ # something to run.
+ install -Dm755 /dev/stdin "$tmpdir/bin/db-update" <<-eot
+ #!/bin/bash
+ {
+ printf '%s\n' "\$DBSCRIPTS_CONFIG"
+ readlink -f -- "\$STAGING"
+ find "\$STAGING" -printf '%P\n' | LC_COLLATE=C sort
+ } > ${tmpdir@Q}/log.txt
+ eot
+ install -Dm755 /dev/stdin "$tmpdir/bin/pbot-say" <<-eot
+ #!/bin/bash
+ echo "\$*" >${tmpdir@Q}/pbot.txt
+ eot
+ PATH=$tmpdir/bin:$PATH
+
+ # Log which directories the hooks are run in.
+ cat >> "$XDG_CONFIG_HOME/libretools/libretools.conf" <<-eot
+ HOOKPRERELEASE='pwd > ${tmpdir@Q}/prerelease.txt'
+ HOOKPOSTRELEASE='pwd > ${tmpdir@Q}/postrelease.txt'
+ eot
+
+ # Make some files to stage
+ local workdir="$tmpdir/workdir"
+ mkdir -p "$workdir/staging/repo1" "$workdir/staging/repo2/sub"
+ touch \
+ "$workdir/staging/repo1/file1" \
+ "$workdir/staging/repo1/file2" \
+ "$workdir/staging/repo2/file with spaces" \
+ "$workdir/staging/repo2/sub/subfolder"
+
+ # Run
+ librerelease
+
+ # Make sure everything went OK
+ pwd > "$tmpdir/pwd.txt"
+ cat > "$tmpdir/log-correct.txt" <<-eot
+ /etc/dbscripts/config.local.phony
+ $(readlink -f -- "$tmpdir/srv-staging")
+
+ repo1
+ repo1/file1
+ repo1/file1.sig
+ repo1/file2
+ repo1/file2.sig
+ repo2
+ repo2/file with spaces
+ repo2/file with spaces.sig
+ repo2/sub
+ repo2/sub/subfolder
+ repo2/sub/subfolder.sig
+ eot
+ diff -u "$tmpdir/log-correct.txt" "$tmpdir/log.txt"
+ diff -u "$tmpdir/pwd.txt" "$tmpdir/prerelease.txt"
+ diff -u "$tmpdir/pwd.txt" "$tmpdir/postrelease.txt"
+ grep 'just published' "$tmpdir/pbot.txt"
+}