aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--src/Makefile3
-rwxr-xr-xsrc/ipcalc-tests86
3 files changed, 90 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 6331a381..c79f44e6 100644
--- a/Makefile
+++ b/Makefile
@@ -128,6 +128,7 @@ check:
bash -n $$afile || { echo $$afile ; exit 1 ; } ; \
fi ;\
done
+ make check -C src
changelog:
@rm -f ChangeLog
diff --git a/src/Makefile b/src/Makefile
index 0577adcd..248855b2 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -12,6 +12,9 @@ mandir=/usr/share/man
all: $(PROGS)
+check: all
+ ./ipcalc-tests
+
clean:
rm -f $(PROGS) *.o
diff --git a/src/ipcalc-tests b/src/ipcalc-tests
new file mode 100755
index 00000000..0cedbc43
--- /dev/null
+++ b/src/ipcalc-tests
@@ -0,0 +1,86 @@
+#!/bin/bash
+#
+# Run some simple ipcalc tests.
+#
+# Adapted from: Matej Susta <msusta@redhat.com>
+#
+# Copyright (c) 2009 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program 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 this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+exitcode=0
+
+ok() {
+ echo "ok."
+}
+
+fail() {
+ echo "FAILED!"
+ exitcode=$((exitcode+1))
+ echo -e "Output was:\n$output"
+}
+
+TestSuccess() {
+ echo -n "Checking $@... "
+ output=$(sh -c "$1" 2>&1)
+ rc=$?
+ [ $rc -eq 0 ] && ok || fail $output
+}
+
+TestFailure() {
+ echo -n "Checking $@... "
+ output=$(sh -c "$1" 2>&1)
+ rc=$?
+ [ $rc -eq 0 ] && fail $output || ok
+}
+
+TestOutput() {
+ echo -n "Checking $1... "
+ output=$(sh -c "$1" 2>&1)
+ rc=$?
+ [ "$output" = "$2" ] && ok || fail $output
+}
+
+echo -n "Checking for ipcalc binary... "
+[ -x ./ipcalc ] || { fail ; exit $exitcode ; }
+
+TestSuccess "ipcalc --help"
+
+TestSuccess "ipcalc -c 127.0.0.1"
+TestSuccess "ipcalc -c -6 ::1"
+TestSuccess "ipcalc -c ::1"
+
+TestSuccess "ipcalc -c 192.168.1.1"
+TestSuccess "ipcalc -c -6 2a01:198:200:300::2"
+TestSuccess "ipcalc -c -6 2a01:198:200:300:0000:0000:0000:2"
+TestSuccess "ipcalc -c -6 2a01:0198:0200:0300:0000:0000:0000:0002"
+
+TestFailure "ipcalc -c -6 gggg::"
+TestFailure "ipcalc -b -6 ::1/128"
+
+TestOutput "ipcalc -b 192.168.1.1/24" "BROADCAST=192.168.1.255"
+TestOutput "ipcalc -b 192.168.1.1 255.255.255.0" "BROADCAST=192.168.1.255"
+TestOutput "ipcalc -m 192.168.1.1/24" "NETMASK=255.255.255.0"
+TestOutput "ipcalc -p 192.168.1.1 255.255.255.0" "PREFIX=24"
+TestOutput "ipcalc -p 192.168.1.1 255.255.255.255" "PREFIX=32"
+TestOutput "ipcalc -p 192.168.1.1 0.0.0.0" "PREFIX=0"
+TestOutput "ipcalc -p 172.16.59.222 255.255.252.0" "PREFIX=22"
+TestOutput "ipcalc -m 172.16.59.222/22" "NETMASK=255.255.252.0"
+TestOutput "ipcalc -m 192.168.1.1" "NETMASK=255.255.255.0"
+TestOutput "ipcalc -m 10.1.2.3" "NETMASK=255.0.0.0"
+TestOutput "ipcalc -m 129.22.4.3" "NETMASK=255.255.0.0"
+
+echo "$exitcode tests failed."
+exit $exitcode