summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarel Ben-Attia <harelba@gmail.com>2020-09-11 16:47:16 +0300
committerHarel Ben-Attia <harelba@gmail.com>2020-09-11 16:47:16 +0300
commit0473927e941b9a03088cf047fd40bd5100d87da8 (patch)
tree6bde5ed91b9cb0605bea8cda1b2e3dd481750944
parentabf4577cd6844b88e0b57139c74f38b447d7fdb0 (diff)
multiple usability additions
-rwxr-xr-xbin/q.py63
-rwxr-xr-xdo-manual-release.sh6
-rwxr-xr-xtest/test-suite13
3 files changed, 51 insertions, 31 deletions
diff --git a/bin/q.py b/bin/q.py
index 70def0a..e2e9fb8 100755
--- a/bin/q.py
+++ b/bin/q.py
@@ -1508,7 +1508,7 @@ def quote_minimal_func(output_delimiter,v):
if v is None:
return v
t = type(v)
- if (t == str or t == unicode) and ((output_delimiter in v) or (six.u('\n' in v)) or (six.u('"') in v)):
+ if (t == str or t == unicode) and ((output_delimiter in v) or ('\n' in v) or ('"' in v)):
return six.u('"{}"').format(escape_double_quotes_if_needed(v))
return v
@@ -1860,48 +1860,35 @@ def run_standalone():
# If the user flagged for a tab-delimited file then set the delimiter to tab
if options.tab_delimited:
+ if options.delimiter is not None and options.delimiter != '\t':
+ print("Warning: -t parameter overrides -d parameter (%s)" % options.delimiter,file=sys.stderr)
options.delimiter = '\t'
- if options.tab_delimited_output:
- options.output_delimiter = '\t'
-
# If the user flagged for a pipe-delimited file then set the delimiter to pipe
if options.pipe_delimited:
+ if options.delimiter is not None and options.delimiter != '|':
+ print("Warning: -p parameter overrides -d parameter (%s)" % options.delimiter,file=sys.stderr)
options.delimiter = '|'
- if options.pipe_delimited_output:
- options.output_delimiter = '|'
-
if options.delimiter is None:
options.delimiter = ' '
elif len(options.delimiter) != 1:
print("Delimiter must be one character only", file=sys.stderr)
sys.exit(5)
- if options.input_quoting_mode not in list(QTextAsData.input_quoting_modes.keys()):
- print("Input quoting mode can only be one of %s. It cannot be set to '%s'" % (",".join(sorted(QTextAsData.input_quoting_modes.keys())),options.input_quoting_mode), file=sys.stderr)
- sys.exit(55)
-
- if options.output_quoting_mode not in list(QOutputPrinter.output_quoting_modes.keys()):
- print("Output quoting mode can only be one of %s. It cannot be set to '%s'" % (",".join(QOutputPrinter.output_quoting_modes.keys()),options.input_quoting_mode), file=sys.stderr)
- sys.exit(56)
-
- if options.column_count is not None:
- expected_column_count = int(options.column_count)
- else:
- # infer automatically
- expected_column_count = None
+ if options.tab_delimited_output:
+ if options.output_delimiter is not None and options.output_delimiter != '\t':
+ print("Warning: -T parameter overrides -D parameter (%s)" % options.output_delimiter,file=sys.stderr)
+ options.output_delimiter = '\t'
- if options.encoding != 'none':
- try:
- codecs.lookup(options.encoding)
- except LookupError:
- print("Encoding %s could not be found" % options.encoding, file=sys.stderr)
- sys.exit(10)
+ if options.pipe_delimited_output:
+ if options.output_delimiter is not None and options.output_delimiter != '|':
+ print("Warning: -P parameter overrides -D parameter (%s)" % options.output_delimiter,file=sys.stderr)
+ options.output_delimiter = '|'
if options.output_delimiter:
# If output delimiter is specified, then we use it
- output_delimiter = options.output_delimiter
+ options.output_delimiter = options.output_delimiter
else:
# Otherwise,
if options.delimiter:
@@ -1921,6 +1908,28 @@ def run_standalone():
print("Max column length limit must be a positive integer (%s)" % max_column_length_limit, file=sys.stderr)
sys.exit(31)
+
+ if options.input_quoting_mode not in list(QTextAsData.input_quoting_modes.keys()):
+ print("Input quoting mode can only be one of %s. It cannot be set to '%s'" % (",".join(sorted(QTextAsData.input_quoting_modes.keys())),options.input_quoting_mode), file=sys.stderr)
+ sys.exit(55)
+
+ if options.output_quoting_mode not in list(QOutputPrinter.output_quoting_modes.keys()):
+ print("Output quoting mode can only be one of %s. It cannot be set to '%s'" % (",".join(QOutputPrinter.output_quoting_modes.keys()),options.input_quoting_mode), file=sys.stderr)
+ sys.exit(56)
+
+ if options.column_count is not None:
+ expected_column_count = int(options.column_count)
+ else:
+ # infer automatically
+ expected_column_count = None
+
+ if options.encoding != 'none':
+ try:
+ codecs.lookup(options.encoding)
+ except LookupError:
+ print("Encoding %s could not be found" % options.encoding, file=sys.stderr)
+ sys.exit(10)
+
if options.save_db_to_disk_filename is not None:
if options.analyze_only:
print("Cannot save database to disk when running with -A (analyze-only) option.", file=sys.stderr)
diff --git a/do-manual-release.sh b/do-manual-release.sh
index a2e0429..5147061 100755
--- a/do-manual-release.sh
+++ b/do-manual-release.sh
@@ -4,6 +4,12 @@ set -e
VERSION=2.0.16
+if [[ "$TRAVIS_BRANCH" != "master" ]]
+then
+ echo "Not releasing - not on master branch (${TRAVIS_BRANCH})"
+ exit 0
+fi
+
echo "Packing binary for $TRAVIS_OS_NAME"
if [[ "$TRAVIS_OS_NAME" == "osx" || "$TRAVIS_OS_NAME" == "linux" ]]
diff --git a/test/test-suite b/test/test-suite
index beeec67..4f1f877 100755
--- a/test/test-suite
+++ b/test/test-suite
@@ -11,6 +11,7 @@
#
import unittest
+import pytest
import random
import json
from json import JSONEncoder
@@ -362,10 +363,11 @@ class BasicTests(AbstractQTestCase):
self.assertEqual(retcode, 0)
self.assertEqual(len(o), 3)
- self.assertEqual(len(e), 0)
+ self.assertEqual(len(e), 1)
self.assertEqual(o[0], sample_data_rows[0].replace(six.b(","), six.b("\t")))
self.assertEqual(o[1], sample_data_rows[1].replace(six.b(","), six.b("\t")))
self.assertEqual(o[2], sample_data_rows[2].replace(six.b(","), six.b("\t")))
+ self.assertEqual(e[0],six.b('Warning: -t parameter overrides -d parameter (,)'))
self.cleanup(tmpfile)
@@ -377,10 +379,11 @@ class BasicTests(AbstractQTestCase):
self.assertEqual(retcode, 0)
self.assertEqual(len(o), 3)
- self.assertEqual(len(e), 0)
+ self.assertEqual(len(e), 1)
self.assertEqual(o[0], sample_data_rows[0].replace(six.b(","), six.b("|")))
self.assertEqual(o[1], sample_data_rows[1].replace(six.b(","), six.b("|")))
self.assertEqual(o[2], sample_data_rows[2].replace(six.b(","), six.b("|")))
+ self.assertEqual(e[0],six.b('Warning: -p parameter overrides -d parameter (,)'))
self.cleanup(tmpfile)
@@ -436,11 +439,12 @@ class BasicTests(AbstractQTestCase):
self.assertEqual(retcode, 0)
self.assertEqual(len(o), 3)
- self.assertEqual(len(e), 0)
+ self.assertEqual(len(e), 1)
self.assertEqual(o[0], sample_data_rows[0].replace(six.b(","), six.b("\t")))
self.assertEqual(o[1], sample_data_rows[1].replace(six.b(","), six.b("\t")))
self.assertEqual(o[2], sample_data_rows[2].replace(six.b(","), six.b("\t")))
+ self.assertEqual(e[0], six.b('Warning: -T parameter overrides -D parameter (|)'))
self.cleanup(tmpfile)
@@ -451,11 +455,12 @@ class BasicTests(AbstractQTestCase):
self.assertEqual(retcode, 0)
self.assertEqual(len(o), 3)
- self.assertEqual(len(e), 0)
+ self.assertEqual(len(e), 1)
self.assertEqual(o[0], sample_data_rows[0].replace(six.b(","), six.b("|")))
self.assertEqual(o[1], sample_data_rows[1].replace(six.b(","), six.b("|")))
self.assertEqual(o[2], sample_data_rows[2].replace(six.b(","), six.b("|")))
+ self.assertEqual(e[0],six.b('Warning: -P parameter overrides -D parameter (:)'))
self.cleanup(tmpfile)