mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00
This commit is contained in:
parent
73786b820c
commit
8c4de2000b
2 changed files with 12 additions and 7 deletions
|
@ -90,7 +90,7 @@ struct DbConfig {
|
||||||
|
|
||||||
fn test_decode_error_message_should_have_enough_context_empty() {
|
fn test_decode_error_message_should_have_enough_context_empty() {
|
||||||
json.decode(DbConfig, '') or {
|
json.decode(DbConfig, '') or {
|
||||||
assert err.msg().len < 2
|
assert err.msg() == 'failed to decode JSON string'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
assert false
|
assert false
|
||||||
|
@ -98,7 +98,7 @@ fn test_decode_error_message_should_have_enough_context_empty() {
|
||||||
|
|
||||||
fn test_decode_error_message_should_have_enough_context_just_brace() {
|
fn test_decode_error_message_should_have_enough_context_just_brace() {
|
||||||
json.decode(DbConfig, '{') or {
|
json.decode(DbConfig, '{') or {
|
||||||
assert err.msg() == '{'
|
assert err.msg() == 'failed to decode JSON string: {'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
assert false
|
assert false
|
||||||
|
@ -111,7 +111,7 @@ fn test_decode_error_message_should_have_enough_context_trailing_comma_at_end()
|
||||||
"user": "alex",
|
"user": "alex",
|
||||||
}'
|
}'
|
||||||
json.decode(DbConfig, txt) or {
|
json.decode(DbConfig, txt) or {
|
||||||
assert err.msg() == ' "user": "alex",\n}'
|
assert err.msg().contains(' "user": "alex",\n}')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
assert false
|
assert false
|
||||||
|
@ -120,7 +120,7 @@ fn test_decode_error_message_should_have_enough_context_trailing_comma_at_end()
|
||||||
fn test_decode_error_message_should_have_enough_context_in_the_middle() {
|
fn test_decode_error_message_should_have_enough_context_in_the_middle() {
|
||||||
txt := '{"host": "localhost", "dbname": "alex" "user": "alex", "port": "1234"}'
|
txt := '{"host": "localhost", "dbname": "alex" "user": "alex", "port": "1234"}'
|
||||||
json.decode(DbConfig, txt) or {
|
json.decode(DbConfig, txt) or {
|
||||||
assert err.msg() == 'ost", "dbname": "alex" "user":'
|
assert err.msg().contains('ost", "dbname": "alex" "user":')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
assert false
|
assert false
|
||||||
|
|
|
@ -95,11 +95,11 @@ ${dec_fn_dec} {
|
||||||
${init_styp};
|
${init_styp};
|
||||||
if (!root) {
|
if (!root) {
|
||||||
const char *error_ptr = cJSON_GetErrorPtr();
|
const char *error_ptr = cJSON_GetErrorPtr();
|
||||||
if (error_ptr != NULL) {
|
if (error_ptr != NULL) {
|
||||||
const int error_pos = (int)cJSON_GetErrorPos();
|
const int error_pos = (int)cJSON_GetErrorPos();
|
||||||
int maxcontext_chars = 30;
|
int maxcontext_chars = 30;
|
||||||
byte *buf = vcalloc_noscan(maxcontext_chars + 10);
|
byte *buf = vcalloc_noscan(maxcontext_chars + 10);
|
||||||
if(error_pos > 0) {
|
if (error_pos > 0) {
|
||||||
int backlines = 1;
|
int backlines = 1;
|
||||||
int backchars = error_pos < maxcontext_chars-7 ? (int)error_pos : maxcontext_chars-7 ;
|
int backchars = error_pos < maxcontext_chars-7 ? (int)error_pos : maxcontext_chars-7 ;
|
||||||
char *prevline_ptr = (char*)error_ptr;
|
char *prevline_ptr = (char*)error_ptr;
|
||||||
|
@ -119,7 +119,12 @@ ${dec_fn_dec} {
|
||||||
int maxchars = vstrlen_char(prevline_ptr);
|
int maxchars = vstrlen_char(prevline_ptr);
|
||||||
vmemcpy(buf, prevline_ptr, (maxchars < maxcontext_chars ? maxchars : maxcontext_chars));
|
vmemcpy(buf, prevline_ptr, (maxchars < maxcontext_chars ? maxchars : maxcontext_chars));
|
||||||
}
|
}
|
||||||
return (${result_name}_${ret_styp}){.is_error = true,.err = _v_error(tos2(buf)),.data = {0}};
|
string msg;
|
||||||
|
msg = _SLIT("failed to decode JSON string");
|
||||||
|
if (buf[0] != \'\\0\') {
|
||||||
|
msg = string__plus(msg, _SLIT(": "));
|
||||||
|
}
|
||||||
|
return (${result_name}_${ret_styp}){.is_error = true,.err = _v_error(string__plus(msg, tos2(buf))),.data = {0}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
')
|
')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue