From b2965a0c2d67f5c113584c92aecb68bd59da469f Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagrant@debian.org>
Date: Tue, 10 Nov 2020 19:26:04 -0800
Subject: [PATCH] tests: Add common functions for to check for network
 reachability.
Bug: https://issues.guix.gnu.org/44491

* tests/common.sh: New file.
* tests/guix-build-branch.sh, tests/guix-pack.sh,
  tests/guix-package-net.sh: Use skip_if_network_unreachable function
  from common.sh.
* tests/guix-environment.sh: Use network_reachable function from
  common.sh.
---
 Makefile.am                |  1 +
 tests/common.sh            | 31 +++++++++++++++++++++++++++++++
 tests/guix-build-branch.sh |  8 ++------
 tests/guix-environment.sh  |  5 ++---
 tests/guix-pack.sh         |  5 ++---
 tests/guix-package-net.sh  |  9 ++-------
 6 files changed, 40 insertions(+), 19 deletions(-)
 create mode 100644 tests/common.sh

Index: guix/Makefile.am
===================================================================
--- guix.orig/Makefile.am
+++ guix/Makefile.am
@@ -702,6 +702,7 @@ EXTRA_DIST +=						\
   tests/keys/rsa.pub					\
   tests/keys/signing-key.pub				\
   tests/keys/signing-key.sec				\
+  tests/common.sh					\
   tests/test.drv					\
   $(TESTS)
 
Index: guix/tests/common.sh
===================================================================
--- /dev/null
+++ guix/tests/common.sh
@@ -0,0 +1,31 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2020 Vagrant Cascadian <vagrant@debian.org>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+network_reachable() {
+    if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null; then
+        return 0
+    fi
+    return 1
+}
+
+skip_if_network_unreachable() {
+	if ! network_reachable ; then
+		exit 77
+	fi
+}
Index: guix/tests/guix-build-branch.sh
===================================================================
--- guix.orig/tests/guix-build-branch.sh
+++ guix/tests/guix-build-branch.sh
@@ -24,12 +24,8 @@ guix build --version
 
 # 'guix build --with-branch' requires access to the network to clone the
 # Git repository below.
-
-if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
-then
-    # Skipping.
-    exit 77
-fi
+. $(dirname $0)/common.sh
+skip_if_network_unreachable
 
 orig_drv="`guix build guile-gcrypt -d`"
 latest_drv="`guix build guile-gcrypt --with-branch=guile-gcrypt=master -d`"
Index: guix/tests/guix-environment.sh
===================================================================
--- guix.orig/tests/guix-environment.sh
+++ guix/tests/guix-environment.sh
@@ -187,9 +187,8 @@ case "$transformed_drv" in
     *)           false;;
 esac
 
-
-if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
-then
+. $(dirname $0)/common.sh
+if network_reachable ; then
     # Compute the build environment for the initial GNU Make.
     guix environment --bootstrap --no-substitutes --search-paths --pure \
          -e '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/a"
Index: guix/tests/guix-pack.sh
===================================================================
--- guix.orig/tests/guix-pack.sh
+++ guix/tests/guix-pack.sh
@@ -23,9 +23,8 @@
 
 # A network connection is required to build %bootstrap-coreutils&co,
 # which is required to run these tests with the --bootstrap option.
-if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null; then
-    exit 77
-fi
+. $(dirname $0)/common.sh
+skip_if_network_unreachable
 
 guix pack --version
 
Index: guix/tests/guix-package-net.sh
===================================================================
--- guix.orig/tests/guix-package-net.sh
+++ guix/tests/guix-package-net.sh
@@ -38,13 +38,8 @@ shebang_too_long ()
 	 -ge 128
 }
 
-if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null \
-	|| shebang_too_long
-then
-    # Skipping.
-    exit 77
-fi
-
+. $(dirname $0)/common.sh
+skip_if_network_unreachable
 
 profile="t-profile-$$"
 profile_alt="t-profile-alt-$$"
