8d419f
From b9724ced388bef0a53be49c4ce45db2c8352f186 Mon Sep 17 00:00:00 2001
8d419f
From: Yu Watanabe <watanabe.yu+github@gmail.com>
8d419f
Date: Tue, 14 Jun 2022 09:03:00 +0900
8d419f
Subject: [PATCH] test: import hostnamed tests from debian/ubuntu test suite
8d419f
8d419f
(cherry picked from commit 39f4546199d6394014cf79b76b9ff22d3c149c54)
8d419f
8d419f
Related: #2087652
8d419f
---
8d419f
 test/TEST-71-HOSTNAME/Makefile  |  1 +
8d419f
 test/TEST-71-HOSTNAME/test.sh   | 10 +++++++
8d419f
 test/units/testsuite-71.service | 10 +++++++
8d419f
 test/units/testsuite-71.sh      | 52 +++++++++++++++++++++++++++++++++
8d419f
 4 files changed, 73 insertions(+)
8d419f
 create mode 120000 test/TEST-71-HOSTNAME/Makefile
8d419f
 create mode 100755 test/TEST-71-HOSTNAME/test.sh
8d419f
 create mode 100644 test/units/testsuite-71.service
8d419f
 create mode 100755 test/units/testsuite-71.sh
8d419f
8d419f
diff --git a/test/TEST-71-HOSTNAME/Makefile b/test/TEST-71-HOSTNAME/Makefile
8d419f
new file mode 120000
8d419f
index 0000000000..e9f93b1104
8d419f
--- /dev/null
8d419f
+++ b/test/TEST-71-HOSTNAME/Makefile
8d419f
@@ -0,0 +1 @@
8d419f
+../TEST-01-BASIC/Makefile
8d419f
\ No newline at end of file
8d419f
diff --git a/test/TEST-71-HOSTNAME/test.sh b/test/TEST-71-HOSTNAME/test.sh
8d419f
new file mode 100755
8d419f
index 0000000000..7b3d2d12d4
8d419f
--- /dev/null
8d419f
+++ b/test/TEST-71-HOSTNAME/test.sh
8d419f
@@ -0,0 +1,10 @@
8d419f
+#!/usr/bin/env bash
8d419f
+# SPDX-License-Identifier: LGPL-2.1-or-later
8d419f
+set -e
8d419f
+
8d419f
+TEST_DESCRIPTION="test hostnamed"
8d419f
+
8d419f
+# shellcheck source=test/test-functions
8d419f
+. "${TEST_BASE_DIR:?}/test-functions"
8d419f
+
8d419f
+do_test "$@"
8d419f
diff --git a/test/units/testsuite-71.service b/test/units/testsuite-71.service
8d419f
new file mode 100644
8d419f
index 0000000000..019e8bff24
8d419f
--- /dev/null
8d419f
+++ b/test/units/testsuite-71.service
8d419f
@@ -0,0 +1,10 @@
8d419f
+# SPDX-License-Identifier: LGPL-2.1-or-later
8d419f
+[Unit]
8d419f
+Description=TEST-71-HOSTNAME
8d419f
+
8d419f
+[Service]
8d419f
+ExecStartPre=rm -f /failed /testok
8d419f
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
8d419f
+StandardOutput=journal+console
8d419f
+StandardError=journal+console
8d419f
+Type=oneshot
8d419f
diff --git a/test/units/testsuite-71.sh b/test/units/testsuite-71.sh
8d419f
new file mode 100755
8d419f
index 0000000000..34fcaad961
8d419f
--- /dev/null
8d419f
+++ b/test/units/testsuite-71.sh
8d419f
@@ -0,0 +1,52 @@
8d419f
+#!/usr/bin/env bash
8d419f
+# SPDX-License-Identifier: LGPL-2.1-or-later
8d419f
+
8d419f
+set -eux
8d419f
+set -o pipefail
8d419f
+
8d419f
+# shellcheck source=test/units/assert.sh
8d419f
+. "$(dirname "$0")"/assert.sh
8d419f
+
8d419f
+restore_hostname() {
8d419f
+    if [[ -e /tmp/hostname.bak ]]; then
8d419f
+        mv /tmp/hostname.bak /etc/hostname
8d419f
+    else
8d419f
+        rm -f /etc/hostname
8d419f
+    fi
8d419f
+}
8d419f
+
8d419f
+test_hostname() {
8d419f
+    local orig=
8d419f
+
8d419f
+    if [[ -f /etc/hostname ]]; then
8d419f
+        cp /etc/hostname /tmp/hostname.bak
8d419f
+        orig=$(cat /etc/hostname)
8d419f
+    fi
8d419f
+
8d419f
+    trap restore_hostname RETURN
8d419f
+
8d419f
+    # should activate daemon and work
8d419f
+    if [[ -n "$orig" ]]; then
8d419f
+        assert_in "Static hostname: $orig" "$(hostnamectl)"
8d419f
+    fi
8d419f
+    assert_in "Kernel: $(uname -s) $(uname -r)" "$(hostnamectl)"
8d419f
+
8d419f
+    # change hostname
8d419f
+    assert_rc 0 hostnamectl set-hostname testhost
8d419f
+    assert_eq "$(cat /etc/hostname)" "testhost"
8d419f
+    assert_in "Static hostname: testhost" "$(hostnamectl)"
8d419f
+
8d419f
+    if [[ -n "$orig" ]]; then
8d419f
+        # reset to original
8d419f
+        assert_rc 0 hostnamectl set-hostname "$orig"
8d419f
+        assert_eq "$(cat /etc/hostname)" "$orig"
8d419f
+        assert_in "Static hostname: $orig" "$(hostnamectl)"
8d419f
+    fi
8d419f
+}
8d419f
+
8d419f
+: >/failed
8d419f
+
8d419f
+test_hostname
8d419f
+
8d419f
+touch /testok
8d419f
+rm /failed