Patchwork [1,of,4,V2] tests: introduce 'seq.py' as a portable replacement for 'seq'

login
register
mail settings
Submitter Matt Harbison
Date March 18, 2015, 2:24 a.m.
Message ID <3c2b056ac2b65c57923d.1426645484@Envy>
Download mbox | patch
Permalink /patch/8141/
State Accepted
Commit f554f89a2038b72e5f3f39d5efa80716e5b944d8
Headers show

Comments

Matt Harbison - March 18, 2015, 2:24 a.m.
# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 1426640363 14400
#      Tue Mar 17 20:59:23 2015 -0400
# Node ID 3c2b056ac2b65c57923ddd41b318f93e54b6c0fa
# Parent  8178f1a5b59c7415f8eeb2eb3c5f213cc6c8e73d
tests: introduce 'seq.py' as a portable replacement for 'seq'

OS X 10.6.8 doesn't have it, while 10.10 does.  I'm not sure when it was added.
It may be missing from other platforms as well.

This currently doesn't handle the string manipulation options (-f, -s and -w in
MinGW anyway), since there is currently no need for it.  Since xrange defaults
to starting at 0 instead of 1, and treats the end as exclusive instead of
inclusive, the args need to be extracted instead of doing:

        xrange(*[int(a) for a in sys.argv[1:]])

Therefore, the step might as well be added, even though there is no current use.

Patch

diff --git a/tests/seq.py b/tests/seq.py
new file mode 100644
--- /dev/null
+++ b/tests/seq.py
@@ -0,0 +1,23 @@ 
+#!/usr/bin/env python
+#
+# A portable replacement for 'seq'
+#
+# Usage:
+#   seq STOP              [1, STOP] stepping by 1
+#   seq START STOP        [START, STOP] stepping by 1
+#   seq START STEP STOP   [START, STOP] stepping by STEP
+
+import sys
+
+start = 1
+if len(sys.argv) > 2:
+    start = int(sys.argv[1])
+
+step = 1
+if len(sys.argv) > 3:
+    step = int(sys.argv[2])
+
+stop = int(sys.argv[-1]) + 1
+
+for i in xrange(start, stop, step):
+    print i