[Tarantool-patches] [PATCH v2 03/10] test: move box.error tests to box/error.test.lua

Nikita Pettik korablev at tarantool.org
Wed Mar 25 04:42:59 MSK 2020


We are going to introduce more tests related to error module, so let's
move all error-related tests from box/misc.test.lua to a separate test
file (box/error.test.lua).

Needed for #1148
---
 test/box/error.result   | 441 ++++++++++++++++++++++++++++++++++++++++
 test/box/error.test.lua |  80 ++++++++
 test/box/misc.result    | 423 --------------------------------------
 test/box/misc.test.lua  |  80 --------
 4 files changed, 521 insertions(+), 503 deletions(-)
 create mode 100644 test/box/error.result
 create mode 100644 test/box/error.test.lua

diff --git a/test/box/error.result b/test/box/error.result
new file mode 100644
index 000000000..9b6c8b462
--- /dev/null
+++ b/test/box/error.result
@@ -0,0 +1,441 @@
+-- test-run result file version 2
+env = require('test_run')
+ | ---
+ | ...
+test_run = env.new()
+ | ---
+ | ...
+
+space = box.schema.space.create('tweedledum')
+ | ---
+ | ...
+index = space:create_index('primary', { type = 'hash' })
+ | ---
+ | ...
+
+box.error({code = 123, reason = 'test'})
+ | ---
+ | - error: test
+ | ...
+box.error(box.error.ILLEGAL_PARAMS, "bla bla")
+ | ---
+ | - error: Illegal parameters, bla bla
+ | ...
+box.error()
+ | ---
+ | - error: Illegal parameters, bla bla
+ | ...
+e = box.error.last()
+ | ---
+ | ...
+e
+ | ---
+ | - Illegal parameters, bla bla
+ | ...
+e:unpack()
+ | ---
+ | - type: ClientError
+ |   code: 1
+ |   message: Illegal parameters, bla bla
+ |   trace:
+ |   - file: '[C]'
+ |     line: 4294967295
+ | ...
+e.type
+ | ---
+ | - ClientError
+ | ...
+e.code
+ | ---
+ | - 1
+ | ...
+e.message
+ | ---
+ | - Illegal parameters, bla bla
+ | ...
+tostring(e)
+ | ---
+ | - Illegal parameters, bla bla
+ | ...
+e = nil
+ | ---
+ | ...
+box.error.clear()
+ | ---
+ | ...
+box.error.last()
+ | ---
+ | - null
+ | ...
+space = box.space.tweedledum
+ | ---
+ | ...
+
+--
+-- gh-2080: box.error() crashes with wrong parameters
+box.error(box.error.UNSUPPORTED, "x", "x%s")
+ | ---
+ | - error: x does not support x%s
+ | ...
+box.error(box.error.UNSUPPORTED, "x")
+ | ---
+ | - error: 'bad argument #3 to ''?'' (no value)'
+ | ...
+box.error(box.error.UNSUPPORTED)
+ | ---
+ | - error: 'box.error(): bad arguments'
+ | ...
+
+--
+-- gh-3031: allow to create an error object with no throwing it.
+--
+e = box.error.new(box.error.UNKNOWN)
+ | ---
+ | ...
+e
+ | ---
+ | - Unknown error
+ | ...
+e = box.error.new(box.error.CREATE_SPACE, "space", "error")
+ | ---
+ | ...
+e
+ | ---
+ | - 'Failed to create space ''space'': error'
+ | ...
+box.error.new()
+ | ---
+ | - error: 'Usage: box.error.new(code, args)'
+ | ...
+
+--
+-- gh-4489: box.error has __concat metamethod
+--
+test_run:cmd("push filter '(.builtin/.*.lua):[0-9]+' to '\\1'")
+ | ---
+ | - true
+ | ...
+e = box.error.new(box.error.UNKNOWN)
+ | ---
+ | ...
+'left side: ' .. e
+ | ---
+ | - 'left side: Unknown error'
+ | ...
+e .. ': right side'
+ | ---
+ | - 'Unknown error: right side'
+ | ...
+e .. nil
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate local ''rhs'' (a nil value)'
+ | ...
+nil .. e
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate local ''lhs'' (a nil value)'
+ | ...
+e .. box.NULL
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''string'' and ''void *'''
+ | ...
+box.NULL .. e
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''void *'' and ''string'''
+ | ...
+123 .. e
+ | ---
+ | - 123Unknown error
+ | ...
+e .. 123
+ | ---
+ | - Unknown error123
+ | ...
+e .. e
+ | ---
+ | - Unknown errorUnknown error
+ | ...
+e .. {}
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate local ''rhs'' (a table value)'
+ | ...
+{} .. e
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate local ''lhs'' (a table value)'
+ | ...
+-1ULL .. e
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''uint64_t'' and ''string'''
+ | ...
+e .. -1ULL
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''string'' and ''uint64_t'''
+ | ...
+1LL .. e
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''int64_t'' and ''string'''
+ | ...
+e .. 1LL
+ | ---
+ | - error: 'builtin/error.lua: attempt to concatenate ''string'' and ''int64_t'''
+ | ...
+e = nil
+ | ---
+ | ...
+
+--
+-- System errors expose errno as a field.
+--
+_, err = require('fio').open('not_existing_file')
+ | ---
+ | ...
+type(err.errno)
+ | ---
+ | - number
+ | ...
+-- Errors not related to the standard library do
+-- not expose errno.
+err = box.error.new(box.error.PROC_LUA, "errno")
+ | ---
+ | ...
+type(err.errno)
+ | ---
+ | - nil
+ | ...
+
+t = {}
+ | ---
+ | ...
+test_run:cmd("setopt delimiter ';'")
+ | ---
+ | - true
+ | ...
+
+for k,v in pairs(box.error) do
+   if type(v) == 'number' then
+    t[v] = 'box.error.'..tostring(k)
+   end
+end;
+ | ---
+ | ...
+t;
+ | ---
+ | - 0: box.error.UNKNOWN
+ |   1: box.error.ILLEGAL_PARAMS
+ |   2: box.error.MEMORY_ISSUE
+ |   3: box.error.TUPLE_FOUND
+ |   4: box.error.TUPLE_NOT_FOUND
+ |   5: box.error.UNSUPPORTED
+ |   6: box.error.NONMASTER
+ |   7: box.error.READONLY
+ |   8: box.error.INJECTION
+ |   9: box.error.CREATE_SPACE
+ |   10: box.error.SPACE_EXISTS
+ |   11: box.error.DROP_SPACE
+ |   12: box.error.ALTER_SPACE
+ |   13: box.error.INDEX_TYPE
+ |   14: box.error.MODIFY_INDEX
+ |   15: box.error.LAST_DROP
+ |   16: box.error.TUPLE_FORMAT_LIMIT
+ |   17: box.error.DROP_PRIMARY_KEY
+ |   18: box.error.KEY_PART_TYPE
+ |   19: box.error.EXACT_MATCH
+ |   20: box.error.INVALID_MSGPACK
+ |   21: box.error.PROC_RET
+ |   22: box.error.TUPLE_NOT_ARRAY
+ |   23: box.error.FIELD_TYPE
+ |   24: box.error.INDEX_PART_TYPE_MISMATCH
+ |   25: box.error.UPDATE_SPLICE
+ |   26: box.error.UPDATE_ARG_TYPE
+ |   27: box.error.FORMAT_MISMATCH_INDEX_PART
+ |   28: box.error.UNKNOWN_UPDATE_OP
+ |   29: box.error.UPDATE_FIELD
+ |   30: box.error.FUNCTION_TX_ACTIVE
+ |   31: box.error.KEY_PART_COUNT
+ |   32: box.error.PROC_LUA
+ |   33: box.error.NO_SUCH_PROC
+ |   34: box.error.NO_SUCH_TRIGGER
+ |   35: box.error.NO_SUCH_INDEX_ID
+ |   36: box.error.NO_SUCH_SPACE
+ |   37: box.error.NO_SUCH_FIELD_NO
+ |   38: box.error.EXACT_FIELD_COUNT
+ |   39: box.error.FIELD_MISSING
+ |   40: box.error.WAL_IO
+ |   41: box.error.MORE_THAN_ONE_TUPLE
+ |   42: box.error.ACCESS_DENIED
+ |   43: box.error.CREATE_USER
+ |   44: box.error.DROP_USER
+ |   45: box.error.NO_SUCH_USER
+ |   46: box.error.USER_EXISTS
+ |   47: box.error.PASSWORD_MISMATCH
+ |   48: box.error.UNKNOWN_REQUEST_TYPE
+ |   49: box.error.UNKNOWN_SCHEMA_OBJECT
+ |   50: box.error.CREATE_FUNCTION
+ |   51: box.error.NO_SUCH_FUNCTION
+ |   52: box.error.FUNCTION_EXISTS
+ |   53: box.error.BEFORE_REPLACE_RET
+ |   54: box.error.MULTISTATEMENT_TRANSACTION
+ |   55: box.error.TRIGGER_EXISTS
+ |   56: box.error.USER_MAX
+ |   57: box.error.NO_SUCH_ENGINE
+ |   58: box.error.RELOAD_CFG
+ |   59: box.error.CFG
+ |   60: box.error.SAVEPOINT_EMPTY_TX
+ |   61: box.error.NO_SUCH_SAVEPOINT
+ |   62: box.error.UNKNOWN_REPLICA
+ |   63: box.error.REPLICASET_UUID_MISMATCH
+ |   64: box.error.INVALID_UUID
+ |   65: box.error.REPLICASET_UUID_IS_RO
+ |   66: box.error.INSTANCE_UUID_MISMATCH
+ |   68: box.error.INVALID_ORDER
+ |   69: box.error.MISSING_REQUEST_FIELD
+ |   70: box.error.IDENTIFIER
+ |   71: box.error.DROP_FUNCTION
+ |   72: box.error.ITERATOR_TYPE
+ |   73: box.error.REPLICA_MAX
+ |   74: box.error.INVALID_XLOG
+ |   75: box.error.INVALID_XLOG_NAME
+ |   76: box.error.INVALID_XLOG_ORDER
+ |   77: box.error.NO_CONNECTION
+ |   78: box.error.TIMEOUT
+ |   79: box.error.ACTIVE_TRANSACTION
+ |   80: box.error.CURSOR_NO_TRANSACTION
+ |   81: box.error.CROSS_ENGINE_TRANSACTION
+ |   82: box.error.NO_SUCH_ROLE
+ |   83: box.error.ROLE_EXISTS
+ |   84: box.error.CREATE_ROLE
+ |   85: box.error.INDEX_EXISTS
+ |   86: box.error.SESSION_CLOSED
+ |   87: box.error.ROLE_LOOP
+ |   88: box.error.GRANT
+ |   89: box.error.PRIV_GRANTED
+ |   90: box.error.ROLE_GRANTED
+ |   91: box.error.PRIV_NOT_GRANTED
+ |   92: box.error.ROLE_NOT_GRANTED
+ |   93: box.error.MISSING_SNAPSHOT
+ |   94: box.error.CANT_UPDATE_PRIMARY_KEY
+ |   95: box.error.UPDATE_INTEGER_OVERFLOW
+ |   96: box.error.GUEST_USER_PASSWORD
+ |   97: box.error.TRANSACTION_CONFLICT
+ |   98: box.error.UNSUPPORTED_PRIV
+ |   99: box.error.LOAD_FUNCTION
+ |   100: box.error.FUNCTION_LANGUAGE
+ |   101: box.error.RTREE_RECT
+ |   102: box.error.PROC_C
+ |   103: box.error.UNKNOWN_RTREE_INDEX_DISTANCE_TYPE
+ |   104: box.error.PROTOCOL
+ |   105: box.error.UPSERT_UNIQUE_SECONDARY_KEY
+ |   106: box.error.WRONG_INDEX_RECORD
+ |   107: box.error.WRONG_INDEX_PARTS
+ |   108: box.error.WRONG_INDEX_OPTIONS
+ |   109: box.error.WRONG_SCHEMA_VERSION
+ |   110: box.error.MEMTX_MAX_TUPLE_SIZE
+ |   111: box.error.WRONG_SPACE_OPTIONS
+ |   112: box.error.UNSUPPORTED_INDEX_FEATURE
+ |   113: box.error.VIEW_IS_RO
+ |   114: box.error.NO_TRANSACTION
+ |   115: box.error.SYSTEM
+ |   116: box.error.LOADING
+ |   117: box.error.CONNECTION_TO_SELF
+ |   118: box.error.KEY_PART_IS_TOO_LONG
+ |   119: box.error.COMPRESSION
+ |   120: box.error.CHECKPOINT_IN_PROGRESS
+ |   121: box.error.SUB_STMT_MAX
+ |   122: box.error.COMMIT_IN_SUB_STMT
+ |   123: box.error.ROLLBACK_IN_SUB_STMT
+ |   124: box.error.DECOMPRESSION
+ |   125: box.error.INVALID_XLOG_TYPE
+ |   126: box.error.ALREADY_RUNNING
+ |   127: box.error.INDEX_FIELD_COUNT_LIMIT
+ |   128: box.error.LOCAL_INSTANCE_ID_IS_READ_ONLY
+ |   129: box.error.BACKUP_IN_PROGRESS
+ |   130: box.error.READ_VIEW_ABORTED
+ |   131: box.error.INVALID_INDEX_FILE
+ |   132: box.error.INVALID_RUN_FILE
+ |   133: box.error.INVALID_VYLOG_FILE
+ |   134: box.error.CHECKPOINT_ROLLBACK
+ |   135: box.error.VY_QUOTA_TIMEOUT
+ |   136: box.error.PARTIAL_KEY
+ |   137: box.error.TRUNCATE_SYSTEM_SPACE
+ |   138: box.error.LOAD_MODULE
+ |   139: box.error.VINYL_MAX_TUPLE_SIZE
+ |   140: box.error.WRONG_DD_VERSION
+ |   141: box.error.WRONG_SPACE_FORMAT
+ |   142: box.error.CREATE_SEQUENCE
+ |   143: box.error.ALTER_SEQUENCE
+ |   144: box.error.DROP_SEQUENCE
+ |   145: box.error.NO_SUCH_SEQUENCE
+ |   146: box.error.SEQUENCE_EXISTS
+ |   147: box.error.SEQUENCE_OVERFLOW
+ |   148: box.error.NO_SUCH_INDEX_NAME
+ |   149: box.error.SPACE_FIELD_IS_DUPLICATE
+ |   150: box.error.CANT_CREATE_COLLATION
+ |   151: box.error.WRONG_COLLATION_OPTIONS
+ |   152: box.error.NULLABLE_PRIMARY
+ |   153: box.error.NO_SUCH_FIELD_NAME_IN_SPACE
+ |   154: box.error.TRANSACTION_YIELD
+ |   155: box.error.NO_SUCH_GROUP
+ |   156: box.error.SQL_BIND_VALUE
+ |   157: box.error.SQL_BIND_TYPE
+ |   158: box.error.SQL_BIND_PARAMETER_MAX
+ |   159: box.error.SQL_EXECUTE
+ |   160: box.error.UPDATE_DECIMAL_OVERFLOW
+ |   161: box.error.SQL_BIND_NOT_FOUND
+ |   162: box.error.ACTION_MISMATCH
+ |   163: box.error.VIEW_MISSING_SQL
+ |   164: box.error.FOREIGN_KEY_CONSTRAINT
+ |   165: box.error.NO_SUCH_MODULE
+ |   166: box.error.NO_SUCH_COLLATION
+ |   167: box.error.CREATE_FK_CONSTRAINT
+ |   168: box.error.DROP_FK_CONSTRAINT
+ |   169: box.error.NO_SUCH_CONSTRAINT
+ |   170: box.error.CONSTRAINT_EXISTS
+ |   171: box.error.SQL_TYPE_MISMATCH
+ |   172: box.error.ROWID_OVERFLOW
+ |   173: box.error.DROP_COLLATION
+ |   174: box.error.ILLEGAL_COLLATION_MIX
+ |   175: box.error.SQL_NO_SUCH_PRAGMA
+ |   176: box.error.SQL_CANT_RESOLVE_FIELD
+ |   177: box.error.INDEX_EXISTS_IN_SPACE
+ |   178: box.error.INCONSISTENT_TYPES
+ |   179: box.error.SQL_SYNTAX_WITH_POS
+ |   180: box.error.SQL_STACK_OVERFLOW
+ |   181: box.error.SQL_SELECT_WILDCARD
+ |   182: box.error.SQL_STATEMENT_EMPTY
+ |   184: box.error.SQL_SYNTAX_NEAR_TOKEN
+ |   185: box.error.SQL_UNKNOWN_TOKEN
+ |   186: box.error.SQL_PARSER_GENERIC
+ |   187: box.error.SQL_ANALYZE_ARGUMENT
+ |   188: box.error.SQL_COLUMN_COUNT_MAX
+ |   189: box.error.HEX_LITERAL_MAX
+ |   190: box.error.INT_LITERAL_MAX
+ |   191: box.error.SQL_PARSER_LIMIT
+ |   192: box.error.INDEX_DEF_UNSUPPORTED
+ |   193: box.error.CK_DEF_UNSUPPORTED
+ |   194: box.error.MULTIKEY_INDEX_MISMATCH
+ |   195: box.error.CREATE_CK_CONSTRAINT
+ |   196: box.error.CK_CONSTRAINT_FAILED
+ |   197: box.error.SQL_COLUMN_COUNT
+ |   198: box.error.FUNC_INDEX_FUNC
+ |   199: box.error.FUNC_INDEX_FORMAT
+ |   200: box.error.FUNC_INDEX_PARTS
+ |   201: box.error.NO_SUCH_FIELD_NAME
+ |   202: box.error.FUNC_WRONG_ARG_COUNT
+ |   203: box.error.BOOTSTRAP_READONLY
+ |   204: box.error.SQL_FUNC_WRONG_RET_COUNT
+ |   205: box.error.FUNC_INVALID_RETURN_TYPE
+ |   206: box.error.SQL_PARSER_GENERIC_WITH_POS
+ |   207: box.error.REPLICA_NOT_ANON
+ |   208: box.error.CANNOT_REGISTER
+ |   209: box.error.SESSION_SETTING_INVALID_VALUE
+ |   210: box.error.SQL_PREPARE
+ |   211: box.error.WRONG_QUERY_ID
+ |   212: box.error.SEQUENCE_NOT_STARTED
+ | ...
+
+test_run:cmd("setopt delimiter ''");
+ | ---
+ | - true
+ | ...
+space:drop()
+ | ---
+ | ...
diff --git a/test/box/error.test.lua b/test/box/error.test.lua
new file mode 100644
index 000000000..d16cc5672
--- /dev/null
+++ b/test/box/error.test.lua
@@ -0,0 +1,80 @@
+env = require('test_run')
+test_run = env.new()
+
+space = box.schema.space.create('tweedledum')
+index = space:create_index('primary', { type = 'hash' })
+
+box.error({code = 123, reason = 'test'})
+box.error(box.error.ILLEGAL_PARAMS, "bla bla")
+box.error()
+e = box.error.last()
+e
+e:unpack()
+e.type
+e.code
+e.message
+tostring(e)
+e = nil
+box.error.clear()
+box.error.last()
+space = box.space.tweedledum
+
+--
+-- gh-2080: box.error() crashes with wrong parameters
+box.error(box.error.UNSUPPORTED, "x", "x%s")
+box.error(box.error.UNSUPPORTED, "x")
+box.error(box.error.UNSUPPORTED)
+
+--
+-- gh-3031: allow to create an error object with no throwing it.
+--
+e = box.error.new(box.error.UNKNOWN)
+e
+e = box.error.new(box.error.CREATE_SPACE, "space", "error")
+e
+box.error.new()
+
+--
+-- gh-4489: box.error has __concat metamethod
+--
+test_run:cmd("push filter '(.builtin/.*.lua):[0-9]+' to '\\1'")
+e = box.error.new(box.error.UNKNOWN)
+'left side: ' .. e
+e .. ': right side'
+e .. nil
+nil .. e
+e .. box.NULL
+box.NULL .. e
+123 .. e
+e .. 123
+e .. e
+e .. {}
+{} .. e
+-1ULL .. e
+e .. -1ULL
+1LL .. e
+e .. 1LL
+e = nil
+
+--
+-- System errors expose errno as a field.
+--
+_, err = require('fio').open('not_existing_file')
+type(err.errno)
+-- Errors not related to the standard library do
+-- not expose errno.
+err = box.error.new(box.error.PROC_LUA, "errno")
+type(err.errno)
+
+t = {}
+test_run:cmd("setopt delimiter ';'")
+
+for k,v in pairs(box.error) do
+   if type(v) == 'number' then
+    t[v] = 'box.error.'..tostring(k)
+   end
+end;
+t;
+
+test_run:cmd("setopt delimiter ''");
+space:drop()
diff --git a/test/box/misc.result b/test/box/misc.result
index 047591b60..9b76d7665 100644
--- a/test/box/misc.result
+++ b/test/box/misc.result
@@ -93,204 +93,6 @@ t = nil
 ---
 ...
 ----------------
--- # box.error
-----------------
-test_run:cmd("restart server default")
-env = require('test_run')
----
-...
-test_run = env.new()
----
-...
-box.error.last()
----
-- null
-...
-box.error({code = 123, reason = 'test'})
----
-- error: test
-...
-box.error(box.error.ILLEGAL_PARAMS, "bla bla")
----
-- error: Illegal parameters, bla bla
-...
-box.error()
----
-- error: Illegal parameters, bla bla
-...
-e = box.error.last()
----
-...
-e
----
-- Illegal parameters, bla bla
-...
-e:unpack()
----
-- type: ClientError
-  code: 1
-  message: Illegal parameters, bla bla
-  trace:
-  - file: '[C]'
-    line: 4294967295
-...
-e.type
----
-- ClientError
-...
-e.code
----
-- 1
-...
-e.message
----
-- Illegal parameters, bla bla
-...
-tostring(e)
----
-- Illegal parameters, bla bla
-...
-e = nil
----
-...
-box.error.clear()
----
-...
-box.error.last()
----
-- null
-...
-space = box.space.tweedledum
----
-...
---
--- gh-2080: box.error() crashes with wrong parameters
-box.error(box.error.UNSUPPORTED, "x", "x%s")
----
-- error: x does not support x%s
-...
-box.error(box.error.UNSUPPORTED, "x")
----
-- error: 'bad argument #3 to ''?'' (no value)'
-...
-box.error(box.error.UNSUPPORTED)
----
-- error: 'box.error(): bad arguments'
-...
---
--- gh-3031: allow to create an error object with no throwing it.
---
-e = box.error.new(box.error.UNKNOWN)
----
-...
-e
----
-- Unknown error
-...
-e = box.error.new(box.error.CREATE_SPACE, "space", "error")
----
-...
-e
----
-- 'Failed to create space ''space'': error'
-...
-box.error.new()
----
-- error: 'Usage: box.error.new(code, args)'
-...
---
--- gh-4489: box.error has __concat metamethod
---
-test_run:cmd("push filter '(.builtin/.*.lua):[0-9]+' to '\\1'")
----
-- true
-...
-e = box.error.new(box.error.UNKNOWN)
----
-...
-'left side: ' .. e
----
-- 'left side: Unknown error'
-...
-e .. ': right side'
----
-- 'Unknown error: right side'
-...
-e .. nil
----
-- error: 'builtin/error.lua: attempt to concatenate local ''rhs'' (a nil value)'
-...
-nil .. e
----
-- error: 'builtin/error.lua: attempt to concatenate local ''lhs'' (a nil value)'
-...
-e .. box.NULL
----
-- error: 'builtin/error.lua: attempt to concatenate ''string'' and ''void *'''
-...
-box.NULL .. e
----
-- error: 'builtin/error.lua: attempt to concatenate ''void *'' and ''string'''
-...
-123 .. e
----
-- 123Unknown error
-...
-e .. 123
----
-- Unknown error123
-...
-e .. e
----
-- Unknown errorUnknown error
-...
-e .. {}
----
-- error: 'builtin/error.lua: attempt to concatenate local ''rhs'' (a table value)'
-...
-{} .. e
----
-- error: 'builtin/error.lua: attempt to concatenate local ''lhs'' (a table value)'
-...
--1ULL .. e
----
-- error: 'builtin/error.lua: attempt to concatenate ''uint64_t'' and ''string'''
-...
-e .. -1ULL
----
-- error: 'builtin/error.lua: attempt to concatenate ''string'' and ''uint64_t'''
-...
-1LL .. e
----
-- error: 'builtin/error.lua: attempt to concatenate ''int64_t'' and ''string'''
-...
-e .. 1LL
----
-- error: 'builtin/error.lua: attempt to concatenate ''string'' and ''int64_t'''
-...
-e = nil
----
-...
---
--- System errors expose errno as a field.
---
-_, err = require('fio').open('not_existing_file')
----
-...
-type(err.errno)
----
-- number
-...
--- Errors not related to the standard library do
--- not expose errno.
-err = box.error.new(box.error.PROC_LUA, "errno")
----
-...
-type(err.errno)
----
-- nil
-...
-----------------
 -- # box.stat
 ----------------
 t = {}
@@ -413,231 +215,6 @@ type(require('yaml').encode(box.slab.info()));
 ---
 - string
 ...
-----------------
--- # box.error
-----------------
-t = {}
-for k,v in pairs(box.error) do
-   if type(v) == 'number' then
-    t[v] = 'box.error.'..tostring(k)
-   end
-end;
----
-...
-t;
----
-- 0: box.error.UNKNOWN
-  1: box.error.ILLEGAL_PARAMS
-  2: box.error.MEMORY_ISSUE
-  3: box.error.TUPLE_FOUND
-  4: box.error.TUPLE_NOT_FOUND
-  5: box.error.UNSUPPORTED
-  6: box.error.NONMASTER
-  7: box.error.READONLY
-  8: box.error.INJECTION
-  9: box.error.CREATE_SPACE
-  10: box.error.SPACE_EXISTS
-  11: box.error.DROP_SPACE
-  12: box.error.ALTER_SPACE
-  13: box.error.INDEX_TYPE
-  14: box.error.MODIFY_INDEX
-  15: box.error.LAST_DROP
-  16: box.error.TUPLE_FORMAT_LIMIT
-  17: box.error.DROP_PRIMARY_KEY
-  18: box.error.KEY_PART_TYPE
-  19: box.error.EXACT_MATCH
-  20: box.error.INVALID_MSGPACK
-  21: box.error.PROC_RET
-  22: box.error.TUPLE_NOT_ARRAY
-  23: box.error.FIELD_TYPE
-  24: box.error.INDEX_PART_TYPE_MISMATCH
-  25: box.error.UPDATE_SPLICE
-  26: box.error.UPDATE_ARG_TYPE
-  27: box.error.FORMAT_MISMATCH_INDEX_PART
-  28: box.error.UNKNOWN_UPDATE_OP
-  29: box.error.UPDATE_FIELD
-  30: box.error.FUNCTION_TX_ACTIVE
-  31: box.error.KEY_PART_COUNT
-  32: box.error.PROC_LUA
-  33: box.error.NO_SUCH_PROC
-  34: box.error.NO_SUCH_TRIGGER
-  35: box.error.NO_SUCH_INDEX_ID
-  36: box.error.NO_SUCH_SPACE
-  37: box.error.NO_SUCH_FIELD_NO
-  38: box.error.EXACT_FIELD_COUNT
-  39: box.error.FIELD_MISSING
-  40: box.error.WAL_IO
-  41: box.error.MORE_THAN_ONE_TUPLE
-  42: box.error.ACCESS_DENIED
-  43: box.error.CREATE_USER
-  44: box.error.DROP_USER
-  45: box.error.NO_SUCH_USER
-  46: box.error.USER_EXISTS
-  47: box.error.PASSWORD_MISMATCH
-  48: box.error.UNKNOWN_REQUEST_TYPE
-  49: box.error.UNKNOWN_SCHEMA_OBJECT
-  50: box.error.CREATE_FUNCTION
-  51: box.error.NO_SUCH_FUNCTION
-  52: box.error.FUNCTION_EXISTS
-  53: box.error.BEFORE_REPLACE_RET
-  54: box.error.MULTISTATEMENT_TRANSACTION
-  55: box.error.TRIGGER_EXISTS
-  56: box.error.USER_MAX
-  57: box.error.NO_SUCH_ENGINE
-  58: box.error.RELOAD_CFG
-  59: box.error.CFG
-  60: box.error.SAVEPOINT_EMPTY_TX
-  61: box.error.NO_SUCH_SAVEPOINT
-  62: box.error.UNKNOWN_REPLICA
-  63: box.error.REPLICASET_UUID_MISMATCH
-  64: box.error.INVALID_UUID
-  65: box.error.REPLICASET_UUID_IS_RO
-  66: box.error.INSTANCE_UUID_MISMATCH
-  68: box.error.INVALID_ORDER
-  69: box.error.MISSING_REQUEST_FIELD
-  70: box.error.IDENTIFIER
-  71: box.error.DROP_FUNCTION
-  72: box.error.ITERATOR_TYPE
-  73: box.error.REPLICA_MAX
-  74: box.error.INVALID_XLOG
-  75: box.error.INVALID_XLOG_NAME
-  76: box.error.INVALID_XLOG_ORDER
-  77: box.error.NO_CONNECTION
-  78: box.error.TIMEOUT
-  79: box.error.ACTIVE_TRANSACTION
-  80: box.error.CURSOR_NO_TRANSACTION
-  81: box.error.CROSS_ENGINE_TRANSACTION
-  82: box.error.NO_SUCH_ROLE
-  83: box.error.ROLE_EXISTS
-  84: box.error.CREATE_ROLE
-  85: box.error.INDEX_EXISTS
-  86: box.error.SESSION_CLOSED
-  87: box.error.ROLE_LOOP
-  88: box.error.GRANT
-  89: box.error.PRIV_GRANTED
-  90: box.error.ROLE_GRANTED
-  91: box.error.PRIV_NOT_GRANTED
-  92: box.error.ROLE_NOT_GRANTED
-  93: box.error.MISSING_SNAPSHOT
-  94: box.error.CANT_UPDATE_PRIMARY_KEY
-  95: box.error.UPDATE_INTEGER_OVERFLOW
-  96: box.error.GUEST_USER_PASSWORD
-  97: box.error.TRANSACTION_CONFLICT
-  98: box.error.UNSUPPORTED_PRIV
-  99: box.error.LOAD_FUNCTION
-  100: box.error.FUNCTION_LANGUAGE
-  101: box.error.RTREE_RECT
-  102: box.error.PROC_C
-  103: box.error.UNKNOWN_RTREE_INDEX_DISTANCE_TYPE
-  104: box.error.PROTOCOL
-  105: box.error.UPSERT_UNIQUE_SECONDARY_KEY
-  106: box.error.WRONG_INDEX_RECORD
-  107: box.error.WRONG_INDEX_PARTS
-  108: box.error.WRONG_INDEX_OPTIONS
-  109: box.error.WRONG_SCHEMA_VERSION
-  110: box.error.MEMTX_MAX_TUPLE_SIZE
-  111: box.error.WRONG_SPACE_OPTIONS
-  112: box.error.UNSUPPORTED_INDEX_FEATURE
-  113: box.error.VIEW_IS_RO
-  114: box.error.NO_TRANSACTION
-  115: box.error.SYSTEM
-  116: box.error.LOADING
-  117: box.error.CONNECTION_TO_SELF
-  118: box.error.KEY_PART_IS_TOO_LONG
-  119: box.error.COMPRESSION
-  120: box.error.CHECKPOINT_IN_PROGRESS
-  121: box.error.SUB_STMT_MAX
-  122: box.error.COMMIT_IN_SUB_STMT
-  123: box.error.ROLLBACK_IN_SUB_STMT
-  124: box.error.DECOMPRESSION
-  125: box.error.INVALID_XLOG_TYPE
-  126: box.error.ALREADY_RUNNING
-  127: box.error.INDEX_FIELD_COUNT_LIMIT
-  128: box.error.LOCAL_INSTANCE_ID_IS_READ_ONLY
-  129: box.error.BACKUP_IN_PROGRESS
-  130: box.error.READ_VIEW_ABORTED
-  131: box.error.INVALID_INDEX_FILE
-  132: box.error.INVALID_RUN_FILE
-  133: box.error.INVALID_VYLOG_FILE
-  134: box.error.CHECKPOINT_ROLLBACK
-  135: box.error.VY_QUOTA_TIMEOUT
-  136: box.error.PARTIAL_KEY
-  137: box.error.TRUNCATE_SYSTEM_SPACE
-  138: box.error.LOAD_MODULE
-  139: box.error.VINYL_MAX_TUPLE_SIZE
-  140: box.error.WRONG_DD_VERSION
-  141: box.error.WRONG_SPACE_FORMAT
-  142: box.error.CREATE_SEQUENCE
-  143: box.error.ALTER_SEQUENCE
-  144: box.error.DROP_SEQUENCE
-  145: box.error.NO_SUCH_SEQUENCE
-  146: box.error.SEQUENCE_EXISTS
-  147: box.error.SEQUENCE_OVERFLOW
-  148: box.error.NO_SUCH_INDEX_NAME
-  149: box.error.SPACE_FIELD_IS_DUPLICATE
-  150: box.error.CANT_CREATE_COLLATION
-  151: box.error.WRONG_COLLATION_OPTIONS
-  152: box.error.NULLABLE_PRIMARY
-  153: box.error.NO_SUCH_FIELD_NAME_IN_SPACE
-  154: box.error.TRANSACTION_YIELD
-  155: box.error.NO_SUCH_GROUP
-  156: box.error.SQL_BIND_VALUE
-  157: box.error.SQL_BIND_TYPE
-  158: box.error.SQL_BIND_PARAMETER_MAX
-  159: box.error.SQL_EXECUTE
-  160: box.error.UPDATE_DECIMAL_OVERFLOW
-  161: box.error.SQL_BIND_NOT_FOUND
-  162: box.error.ACTION_MISMATCH
-  163: box.error.VIEW_MISSING_SQL
-  164: box.error.FOREIGN_KEY_CONSTRAINT
-  165: box.error.NO_SUCH_MODULE
-  166: box.error.NO_SUCH_COLLATION
-  167: box.error.CREATE_FK_CONSTRAINT
-  168: box.error.DROP_FK_CONSTRAINT
-  169: box.error.NO_SUCH_CONSTRAINT
-  170: box.error.CONSTRAINT_EXISTS
-  171: box.error.SQL_TYPE_MISMATCH
-  172: box.error.ROWID_OVERFLOW
-  173: box.error.DROP_COLLATION
-  174: box.error.ILLEGAL_COLLATION_MIX
-  175: box.error.SQL_NO_SUCH_PRAGMA
-  176: box.error.SQL_CANT_RESOLVE_FIELD
-  177: box.error.INDEX_EXISTS_IN_SPACE
-  178: box.error.INCONSISTENT_TYPES
-  179: box.error.SQL_SYNTAX_WITH_POS
-  180: box.error.SQL_STACK_OVERFLOW
-  181: box.error.SQL_SELECT_WILDCARD
-  182: box.error.SQL_STATEMENT_EMPTY
-  184: box.error.SQL_SYNTAX_NEAR_TOKEN
-  185: box.error.SQL_UNKNOWN_TOKEN
-  186: box.error.SQL_PARSER_GENERIC
-  187: box.error.SQL_ANALYZE_ARGUMENT
-  188: box.error.SQL_COLUMN_COUNT_MAX
-  189: box.error.HEX_LITERAL_MAX
-  190: box.error.INT_LITERAL_MAX
-  191: box.error.SQL_PARSER_LIMIT
-  192: box.error.INDEX_DEF_UNSUPPORTED
-  193: box.error.CK_DEF_UNSUPPORTED
-  194: box.error.MULTIKEY_INDEX_MISMATCH
-  195: box.error.CREATE_CK_CONSTRAINT
-  196: box.error.CK_CONSTRAINT_FAILED
-  197: box.error.SQL_COLUMN_COUNT
-  198: box.error.FUNC_INDEX_FUNC
-  199: box.error.FUNC_INDEX_FORMAT
-  200: box.error.FUNC_INDEX_PARTS
-  201: box.error.NO_SUCH_FIELD_NAME
-  202: box.error.FUNC_WRONG_ARG_COUNT
-  203: box.error.BOOTSTRAP_READONLY
-  204: box.error.SQL_FUNC_WRONG_RET_COUNT
-  205: box.error.FUNC_INVALID_RETURN_TYPE
-  206: box.error.SQL_PARSER_GENERIC_WITH_POS
-  207: box.error.REPLICA_NOT_ANON
-  208: box.error.CANNOT_REGISTER
-  209: box.error.SESSION_SETTING_INVALID_VALUE
-  210: box.error.SQL_PREPARE
-  211: box.error.WRONG_QUERY_ID
-  212: box.error.SEQUENCE_NOT_STARTED
-...
 test_run:cmd("setopt delimiter ''");
 ---
 - true
diff --git a/test/box/misc.test.lua b/test/box/misc.test.lua
index e1c2f990f..350f9f75d 100644
--- a/test/box/misc.test.lua
+++ b/test/box/misc.test.lua
@@ -22,75 +22,6 @@ t = {} for n in pairs(box) do table.insert(t, tostring(n)) end table.sort(t)
 t
 t = nil
 
-----------------
--- # box.error
-----------------
-
-test_run:cmd("restart server default")
-env = require('test_run')
-test_run = env.new()
-box.error.last()
-box.error({code = 123, reason = 'test'})
-box.error(box.error.ILLEGAL_PARAMS, "bla bla")
-box.error()
-e = box.error.last()
-e
-e:unpack()
-e.type
-e.code
-e.message
-tostring(e)
-e = nil
-box.error.clear()
-box.error.last()
-space = box.space.tweedledum
---
--- gh-2080: box.error() crashes with wrong parameters
-box.error(box.error.UNSUPPORTED, "x", "x%s")
-box.error(box.error.UNSUPPORTED, "x")
-box.error(box.error.UNSUPPORTED)
-
---
--- gh-3031: allow to create an error object with no throwing it.
---
-e = box.error.new(box.error.UNKNOWN)
-e
-e = box.error.new(box.error.CREATE_SPACE, "space", "error")
-e
-box.error.new()
-
---
--- gh-4489: box.error has __concat metamethod
---
-test_run:cmd("push filter '(.builtin/.*.lua):[0-9]+' to '\\1'")
-e = box.error.new(box.error.UNKNOWN)
-'left side: ' .. e
-e .. ': right side'
-e .. nil
-nil .. e
-e .. box.NULL
-box.NULL .. e
-123 .. e
-e .. 123
-e .. e
-e .. {}
-{} .. e
--1ULL .. e
-e .. -1ULL
-1LL .. e
-e .. 1LL
-e = nil
-
---
--- System errors expose errno as a field.
---
-_, err = require('fio').open('not_existing_file')
-type(err.errno)
--- Errors not related to the standard library do
--- not expose errno.
-err = box.error.new(box.error.PROC_LUA, "errno")
-type(err.errno)
-
 ----------------
 -- # box.stat
 ----------------
@@ -138,17 +69,6 @@ box.runtime.info().maxalloc > 0;
 --
 type(require('yaml').encode(box.slab.info()));
 
-----------------
--- # box.error
-----------------
-t = {}
-for k,v in pairs(box.error) do
-   if type(v) == 'number' then
-    t[v] = 'box.error.'..tostring(k)
-   end
-end;
-t;
-
 test_run:cmd("setopt delimiter ''");
 
 -- A test case for Bug#901674
-- 
2.17.1



More information about the Tarantool-patches mailing list