diff options
author | Luke T. Shumaker <lukeshu@parabola.nu> | 2024-02-21 18:39:13 -0700 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@parabola.nu> | 2024-02-21 19:27:19 -0700 |
commit | 497656ccafef59e009525b663f940d7d97f8906d (patch) | |
tree | 2690284cf8519bd0fc93e3cc3665be38d8f341a8 | |
parent | c1920ba5e8888b28d45b74890bd685e916433fd5 (diff) |
fix: librerelease: Fix pbot notification
-rwxr-xr-x | src/abslibre-tools/librerelease | 2 | ||||
-rw-r--r-- | test/cases/librerelease.bats | 59 |
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" +} |