diff options
author | Harel Ben-Attia <harelba@gmail.com> | 2020-09-11 16:47:16 +0300 |
---|---|---|
committer | Harel Ben-Attia <harelba@gmail.com> | 2020-09-11 16:47:16 +0300 |
commit | 0473927e941b9a03088cf047fd40bd5100d87da8 (patch) | |
tree | 6bde5ed91b9cb0605bea8cda1b2e3dd481750944 | |
parent | abf4577cd6844b88e0b57139c74f38b447d7fdb0 (diff) |
multiple usability additions
-rwxr-xr-x | bin/q.py | 63 | ||||
-rwxr-xr-x | do-manual-release.sh | 6 | ||||
-rwxr-xr-x | test/test-suite | 13 |
3 files changed, 51 insertions, 31 deletions
@@ -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) |