]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Add tests for the --barriers option.
authorMichael Orlitzky <michael@orlitzky.com>
Mon, 14 Oct 2013 15:19:38 +0000 (11:19 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Mon, 14 Oct 2013 15:19:38 +0000 (11:19 -0400)
Update the manpage for 0.0.6.

doc/man1/hath.1
test/shell/manpage-barriers.test [new file with mode: 0644]

index c0d6bc004f8eb5f552049e75004ef6aa562cce8b..57684f5d2d34a3df75cde65e9ecf409637c82018 100644 (file)
@@ -4,12 +4,12 @@
 hath \- Manipulate network blocks in CIDR notation
 .SH SYNOPSIS
 
-\fBhath\fR [\fBregexed|reduced|duped|diffed\fR] [\fB\-h\fR] [\fB-i \fIFILE\fR] \fI<input>\fR
+\fBhath\fR [\fBregexed|reduced|duped|diffed|listed|reversed\fR] [\fB\-hb\fR] \fI<input>\fR
 .SH INPUT
 .P
-The \fIinput\fR (default: stdin) should be a list of CIDR blocks,
-separated by whitespace. Empty lines will be ignored, but otherwise,
-malformed entries will cause an error to be displayed.
+The \fIinput\fR (stdin) should be a list of CIDR blocks, separated by
+whitespace. Empty lines will be ignored, but otherwise, malformed
+entries will cause an error to be displayed.
 .SH DESCRIPTION
 .P
 Hath is a Haskell program for working with network blocks in CIDR
@@ -120,13 +120,37 @@ runtime on the command line; for example, the following will perform
 198.41.0.6: rs.internic.net.
 \(pc\(pc\(pc
 .fi
-.P
-Each of the modes also supports a present-tense flavor; the following
-are equivalent to their counterparts: \fBregex\fR, \fBreduce\fR,
-\fBdupe\fR, \fBdiff\fR, \fBlist\fR, \fBreverse\fR.
 
 .SH OPTIONS
 
-.IP \fB\-\-input\fR,\ \fB\-i\fR
-Specify the input file containing a list of CIDRs, rather than using
-stdin (the default).
+.IP \fB\-\-barriers\fR,\ \fB\-b\fR
+(regexed mode only) place barriers in front/back of the regex to
+prevent e.g. '127.0.0.1' from matching '127.0.0.100'. The downside is
+that the resulting regexp will match something that is not an IP
+address, and this messes up e.g. \fIgrep -o\fR.
+
+.P
+Without \fB\-\-barriers\fR, you can match things you shouldn't:
+
+.nf
+.I $ echo \(dq127.0.0.100\(dq | grep -P $(hath <<< \(dq127.0.0.1/32\(dq)
+127.0.0.100
+.fi
+
+.P
+Using \fB\-\-barriers\fR can prevent this:
+
+.nf
+.I $ echo \(dq127.0.0.100\(dq | grep -P $(hath -b <<< \(dq127.0.0.1/32\(dq)
+.I $ echo $?
+1
+.fi
+
+.P
+But, this may also cause the regex to match something that isn't an IP
+address:
+
+.nf
+.I $ echo \(dqx127.0.0.1x\(dq | grep -Po $(hath -b <<< \(dq127.0.0.1/32\(dq)
+x127.0.0.1x
+.fi
diff --git a/test/shell/manpage-barriers.test b/test/shell/manpage-barriers.test
new file mode 100644 (file)
index 0000000..4b8c165
--- /dev/null
@@ -0,0 +1,18 @@
+# Test the --barriers examples from the manpage.
+
+# The first one matches a line it probably shouldn't.
+echo "127.0.0.100" | grep -P $(dist/build/hath/hath <<< "127.0.0.1/32")
+>>>
+127.0.0.100
+>>>= 0
+
+# This one uses --barriers, and doesn't match that same line.
+echo "127.0.0.100" | grep -P $(dist/build/hath/hath -b <<< "127.0.0.1/32")
+>>>
+>>>= 1
+
+# But, using barriers makes the regexp match something it shouldn't.
+echo "x127.0.0.1x" | grep -Po $(dist/build/hath/hath -b <<< "127.0.0.1/32")
+>>>
+x127.0.0.1x
+>>>= 0