diff --git a/doc/apiref.rst b/doc/apiref.rst index b1d5c07..17af036 100644 --- a/doc/apiref.rst +++ b/doc/apiref.rst @@ -739,27 +739,32 @@ affect especially the behavior of the decoder. This data structure is used to return information on decoding errors from the decoding functions. - .. member:: const char *text + .. member:: char text[] The error message (in UTF-8), or an empty string if a message is not available. - .. member:: int line - - The line number on which the error occurred, or -1 if this - information is not available. - - .. member:: int column - - The character column on which the error occurred, or -1 if this - information is not available. - - .. member:: const char *source + .. member:: char source[] Source of the error. This is (a part of) the file name when using :func:`json_load_file()`, or a special identifier in angle brackets otherwise (e.g. ````). + .. member:: int line + + The line number on which the error occurred. + + .. member:: int column + + The character column on which the error occurred. Note that this + is the *character column*, not the byte column, i.e. a non-ASCII + UTF-8 character counts as one column. + + .. member:: size_t position + + The position in bytes from the start of the input. This is + useful for debugging Unicode encoding problems. + The normal use of :type:`json_error_t` is to allocate it on the stack, and pass a pointer to a decoding function. Example:: diff --git a/src/error.c b/src/error.c index cd80756..b950c2c 100644 --- a/src/error.c +++ b/src/error.c @@ -8,6 +8,7 @@ void jsonp_error_init(json_error_t *error, const char *source) error->text[0] = '\0'; error->line = -1; error->column = -1; + error->position = 0; strncpy(error->source, source, JSON_ERROR_SOURCE_LENGTH); error->source[JSON_ERROR_SOURCE_LENGTH - 1] = '\0'; @@ -15,17 +16,17 @@ void jsonp_error_init(json_error_t *error, const char *source) } void jsonp_error_set(json_error_t *error, int line, int column, - const char *msg, ...) + size_t position, const char *msg, ...) { va_list ap; va_start(ap, msg); - jsonp_error_vset(error, line, column, msg, ap); + jsonp_error_vset(error, line, column, position, msg, ap); va_end(ap); } void jsonp_error_vset(json_error_t *error, int line, int column, - const char *msg, va_list ap) + size_t position, const char *msg, va_list ap) { if(!error) return; @@ -37,6 +38,7 @@ void jsonp_error_vset(json_error_t *error, int line, int column, error->line = line; error->column = column; + error->position = position; vsnprintf(error->text, JSON_ERROR_TEXT_LENGTH, msg, ap); } diff --git a/src/jansson.h b/src/jansson.h index 6e6e77a..8306e21 100644 --- a/src/jansson.h +++ b/src/jansson.h @@ -109,10 +109,11 @@ void json_decref(json_t *json) #define JSON_ERROR_SOURCE_LENGTH 80 typedef struct { - char text[JSON_ERROR_TEXT_LENGTH]; int line; int column; + int position; char source[JSON_ERROR_SOURCE_LENGTH]; + char text[JSON_ERROR_TEXT_LENGTH]; } json_error_t; diff --git a/src/jansson_private.h b/src/jansson_private.h index 66caad7..b4743f3 100644 --- a/src/jansson_private.h +++ b/src/jansson_private.h @@ -69,9 +69,9 @@ const object_key_t *jsonp_object_iter_fullkey(void *iter); void jsonp_error_init(json_error_t *error, const char *source); void jsonp_error_set(json_error_t *error, int line, int column, - const char *msg, ...); + size_t position, const char *msg, ...); void jsonp_error_vset(json_error_t *error, int line, int column, - const char *msg, va_list ap); + size_t position, const char *msg, va_list ap); /* Wrappers for custom memory functions */ void* jsonp_malloc(size_t size); diff --git a/src/load.c b/src/load.c index f4fb3b7..74e33fc 100644 --- a/src/load.c +++ b/src/load.c @@ -20,6 +20,10 @@ #include "strbuffer.h" #include "utf.h" +#define STREAM_STATE_OK 0 +#define STREAM_STATE_EOF -1 +#define STREAM_STATE_ERROR -2 + #define TOKEN_INVALID -1 #define TOKEN_EOF 0 #define TOKEN_STRING 256 @@ -29,27 +33,26 @@ #define TOKEN_FALSE 260 #define TOKEN_NULL 261 -/* read one byte from stream, return EOF on end of file */ +/* Read one byte from stream, convert to unsigned char, then int, and + return. return EOF on end of file. This corresponds to the + behaviour of fgetc(). */ typedef int (*get_func)(void *data); -/* return non-zero if end of file has been reached */ -typedef int (*eof_func)(void *data); - typedef struct { get_func get; - eof_func eof; void *data; - int stream_pos; char buffer[5]; int buffer_pos; + int state; + int line; + int column, last_column; + size_t position; } stream_t; - typedef struct { stream_t stream; strbuffer_t saved_text; int token; - int line, column; union { char *string; json_int_t integer; @@ -57,6 +60,8 @@ typedef struct { } value; } lex_t; +#define stream_to_lex(stream) container_of(stream, lex_t, stream) + /*** error reporting ***/ @@ -67,6 +72,7 @@ static void error_set(json_error_t *error, const lex_t *lex, char msg_text[JSON_ERROR_TEXT_LENGTH]; int line = -1, col = -1; + size_t pos = 0; const char *result = msg_text; if(!error) @@ -81,7 +87,9 @@ static void error_set(json_error_t *error, const lex_t *lex, const char *saved_text = strbuffer_value(&lex->saved_text); char msg_with_context[JSON_ERROR_TEXT_LENGTH]; - line = lex->line; + line = lex->stream.line; + col = lex->stream.column; + pos = lex->stream.position; if(saved_text && saved_text[0]) { @@ -93,41 +101,57 @@ static void error_set(json_error_t *error, const lex_t *lex, } else { - snprintf(msg_with_context, JSON_ERROR_TEXT_LENGTH, - "%s near end of file", msg_text); - result = msg_with_context; + if(lex->stream.state == STREAM_STATE_ERROR) { + /* No context for UTF-8 decoding errors */ + result = msg_text; + } + else { + snprintf(msg_with_context, JSON_ERROR_TEXT_LENGTH, + "%s near end of file", msg_text); + result = msg_with_context; + } } } - jsonp_error_set(error, line, col, "%s", result); + jsonp_error_set(error, line, col, pos, "%s", result); } /*** lexical analyzer ***/ static void -stream_init(stream_t *stream, get_func get, eof_func eof, void *data) +stream_init(stream_t *stream, get_func get, void *data) { stream->get = get; - stream->eof = eof; stream->data = data; - stream->stream_pos = 0; stream->buffer[0] = '\0'; stream->buffer_pos = 0; + + stream->state = STREAM_STATE_OK; + stream->line = 1; + stream->column = 0; + stream->position = 0; } -static char stream_get(stream_t *stream, json_error_t *error) +static int stream_get(stream_t *stream, json_error_t *error) { - char c; + int c; + + if(stream->state != STREAM_STATE_OK) + return stream->state; if(!stream->buffer[stream->buffer_pos]) { - stream->buffer[0] = stream->get(stream->data); + c = stream->get(stream->data); + if(c == EOF) { + stream->state = STREAM_STATE_EOF; + return STREAM_STATE_EOF; + } + + stream->buffer[0] = c; stream->buffer_pos = 0; - c = stream->buffer[0]; - - if((unsigned char)c >= 0x80 && c != (char)EOF) + if(0x80 <= c && c <= 0xFF) { /* multi-byte UTF-8 sequence */ int i, count; @@ -144,30 +168,47 @@ static char stream_get(stream_t *stream, json_error_t *error) if(!utf8_check_full(stream->buffer, count, NULL)) goto out; - stream->stream_pos += count; stream->buffer[count] = '\0'; } - else { + else stream->buffer[1] = '\0'; - stream->stream_pos++; - } } - return stream->buffer[stream->buffer_pos++]; + c = stream->buffer[stream->buffer_pos++]; + + stream->position++; + if(c == '\n') { + stream->line++; + stream->last_column = stream->column; + stream->column = 0; + } + else if(utf8_check_first(c)) { + /* track the Unicode character column, so increment only if + this is the first character of a UTF-8 sequence */ + stream->column++; + } + + return c; out: - error_set(error, NULL, "unable to decode byte 0x%x at position %d", - (unsigned char)c, stream->stream_pos); - - stream->buffer[0] = EOF; - stream->buffer[1] = '\0'; - stream->buffer_pos = 1; - - return EOF; + stream->state = STREAM_STATE_ERROR; + error_set(error, stream_to_lex(stream), "unable to decode byte 0x%x", c); + return STREAM_STATE_ERROR; } -static void stream_unget(stream_t *stream, char c) +static void stream_unget(stream_t *stream, int c) { + if(c == STREAM_STATE_EOF || c == STREAM_STATE_ERROR) + return; + + stream->position--; + if(c == '\n') { + stream->line--; + stream->column = stream->last_column; + } + else if(utf8_check_first(c)) + stream->column--; + assert(stream->buffer_pos > 0); stream->buffer_pos--; assert(stream->buffer[stream->buffer_pos] == c); @@ -179,29 +220,32 @@ static int lex_get(lex_t *lex, json_error_t *error) return stream_get(&lex->stream, error); } -static int lex_eof(lex_t *lex) -{ - return lex->stream.eof(lex->stream.data); -} - -static void lex_save(lex_t *lex, char c) +static void lex_save(lex_t *lex, int c) { strbuffer_append_byte(&lex->saved_text, c); } static int lex_get_save(lex_t *lex, json_error_t *error) { - char c = stream_get(&lex->stream, error); - lex_save(lex, c); + int c = stream_get(&lex->stream, error); + if(c != STREAM_STATE_EOF && c != STREAM_STATE_ERROR) + lex_save(lex, c); return c; } -static void lex_unget_unsave(lex_t *lex, char c) +static void lex_unget(lex_t *lex, int c) { - char d; stream_unget(&lex->stream, c); - d = strbuffer_pop(&lex->saved_text); - assert(c == d); +} + +static void lex_unget_unsave(lex_t *lex, int c) +{ + if(c != STREAM_STATE_EOF && c != STREAM_STATE_ERROR) { + char d; + stream_unget(&lex->stream, c); + d = strbuffer_pop(&lex->saved_text); + assert(c == d); + } } static void lex_save_cached(lex_t *lex) @@ -210,6 +254,7 @@ static void lex_save_cached(lex_t *lex) { lex_save(lex, lex->stream.buffer[lex->stream.buffer_pos]); lex->stream.buffer_pos++; + lex->stream.position++; } } @@ -239,7 +284,7 @@ static int32_t decode_unicode_escape(const char *str) static void lex_scan_string(lex_t *lex, json_error_t *error) { - char c; + int c; const char *p; char *t; int i; @@ -250,14 +295,15 @@ static void lex_scan_string(lex_t *lex, json_error_t *error) c = lex_get_save(lex, error); while(c != '"') { - if(c == (char)EOF) { - lex_unget_unsave(lex, c); - if(lex_eof(lex)) - error_set(error, lex, "premature end of input"); + if(c == STREAM_STATE_ERROR) + goto out; + + else if(c == STREAM_STATE_EOF) { + error_set(error, lex, "premature end of input"); goto out; } - else if((unsigned char)c <= 0x1F) { + else if(0 <= c && c <= 0x1F) { /* control character */ lex_unget_unsave(lex, c); if(c == '\n') @@ -273,7 +319,6 @@ static void lex_scan_string(lex_t *lex, json_error_t *error) c = lex_get_save(lex, error); for(i = 0; i < 4; i++) { if(!isxdigit(c)) { - lex_unget_unsave(lex, c); error_set(error, lex, "invalid escape"); goto out; } @@ -284,7 +329,6 @@ static void lex_scan_string(lex_t *lex, json_error_t *error) c == 'f' || c == 'n' || c == 'r' || c == 't') c = lex_get_save(lex, error); else { - lex_unget_unsave(lex, c); error_set(error, lex, "invalid escape"); goto out; } @@ -399,7 +443,7 @@ out: #define json_strtoint strtol #endif -static int lex_scan_number(lex_t *lex, char c, json_error_t *error) +static int lex_scan_number(lex_t *lex, int c, json_error_t *error) { const char *saved_text; char *end; @@ -423,8 +467,8 @@ static int lex_scan_number(lex_t *lex, char c, json_error_t *error) c = lex_get_save(lex, error); } else { - lex_unget_unsave(lex, c); - goto out; + lex_unget_unsave(lex, c); + goto out; } if(c != '.' && c != 'E' && c != 'e') { @@ -453,8 +497,10 @@ static int lex_scan_number(lex_t *lex, char c, json_error_t *error) if(c == '.') { c = lex_get(lex, error); - if(!isdigit(c)) + if(!isdigit(c)) { + lex_unget(lex, c); goto out; + } lex_save(lex, c); c = lex_get_save(lex, error); @@ -498,7 +544,7 @@ out: static int lex_scan(lex_t *lex, json_error_t *error) { - char c; + int c; strbuffer_clear(&lex->saved_text); @@ -509,18 +555,15 @@ static int lex_scan(lex_t *lex, json_error_t *error) c = lex_get(lex, error); while(c == ' ' || c == '\t' || c == '\n' || c == '\r') - { - if(c == '\n') - lex->line++; - c = lex_get(lex, error); + + if(c == STREAM_STATE_EOF) { + lex->token = TOKEN_EOF; + goto out; } - if(c == (char)EOF) { - if(lex_eof(lex)) - lex->token = TOKEN_EOF; - else - lex->token = TOKEN_INVALID; + if(c == STREAM_STATE_ERROR) { + lex->token = TOKEN_INVALID; goto out; } @@ -580,15 +623,13 @@ static char *lex_steal_string(lex_t *lex) return result; } -static int lex_init(lex_t *lex, get_func get, eof_func eof, void *data) +static int lex_init(lex_t *lex, get_func get, void *data) { - stream_init(&lex->stream, get, eof, data); + stream_init(&lex->stream, get, data); if(strbuffer_init(&lex->saved_text)) return -1; lex->token = TOKEN_INVALID; - lex->line = 1; - return 0; } @@ -791,16 +832,10 @@ static int string_get(void *data) else { stream->pos++; - return c; + return (unsigned char)c; } } -static int string_eof(void *data) -{ - string_data_t *stream = (string_data_t *)data; - return (stream->data[stream->pos] == '\0'); -} - json_t *json_loads(const char *string, size_t flags, json_error_t *error) { lex_t lex; @@ -809,7 +844,7 @@ json_t *json_loads(const char *string, size_t flags, json_error_t *error) (void)flags; /* unused */ - if(lex_init(&lex, string_get, string_eof, (void *)&stream_data)) + if(lex_init(&lex, string_get, (void *)&stream_data)) return NULL; jsonp_error_init(error, ""); @@ -837,7 +872,7 @@ json_t *json_loadf(FILE *input, size_t flags, json_error_t *error) json_t *result; (void)flags; /* unused */ - if(lex_init(&lex, (get_func)fgetc, (eof_func)feof, input)) + if(lex_init(&lex, (get_func)fgetc, input)) return NULL; if(input == stdin) diff --git a/src/pack_unpack.c b/src/pack_unpack.c index e00660d..4fb8c1b 100644 --- a/src/pack_unpack.c +++ b/src/pack_unpack.c @@ -10,6 +10,7 @@ #include "jansson_private.h" typedef struct { + const char *start; const char *fmt; char token; json_error_t *error; @@ -57,8 +58,12 @@ static void next_token(scanner_t *s) static void set_error(scanner_t *s, const char *fmt, ...) { va_list ap; + size_t pos; va_start(ap, fmt); - jsonp_error_vset(s->error, s->line, s->column, fmt, ap); + + pos = (size_t)(s->fmt - s->start); + jsonp_error_vset(s->error, s->line, s->column, pos, fmt, ap); + va_end(ap); } @@ -447,13 +452,13 @@ json_t *json_vpack_ex(json_error_t *error, size_t flags, jsonp_error_init(error, ""); if(!fmt || !*fmt) { - jsonp_error_set(error, 1, 1, "Null or empty format string"); + jsonp_error_set(error, -1, -1, 0, "Null or empty format string"); return NULL; } s.error = error; s.flags = flags; - s.fmt = fmt; + s.fmt = s.start = fmt; s.line = 1; s.column = 0; @@ -505,13 +510,13 @@ int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, jsonp_error_init(error, ""); if(!fmt || !*fmt) { - jsonp_error_set(error, 1, 1, "Null or empty format string"); + jsonp_error_set(error, -1, -1, 0, "Null or empty format string"); return -1; } s.error = error; s.flags = flags; - s.fmt = fmt; + s.fmt = s.start = fmt; s.line = 1; s.column = 0; diff --git a/test/bin/json_process.c b/test/bin/json_process.c index a2475b7..1ed0c57 100644 --- a/test/bin/json_process.c +++ b/test/bin/json_process.c @@ -7,6 +7,8 @@ #include #include +#include +#include #include static int getenv_int(const char *name) @@ -25,6 +27,26 @@ static int getenv_int(const char *name) return (int)result; } +/* Return a pointer to the first non-whitespace character of str. + Modifies str so that all trailing whitespace characters are + replaced by '\0'. */ +static const char *strip(char *str) +{ + size_t length; + char *result = str; + while(*result && isspace(*result)) + result++; + + length = strlen(result); + if(length == 0) + return result; + + while(isspace(result[length - 1])) + result[--length] = '\0'; + + return result; +} + int main(int argc, char *argv[]) { int indent = 0; @@ -59,9 +81,39 @@ int main(int argc, char *argv[]) if(getenv_int("JSON_SORT_KEYS")) flags |= JSON_SORT_KEYS; - json = json_loadf(stdin, 0, &error); + if(getenv_int("STRIP")) { + /* Load to memory, strip leading and trailing whitespace */ + size_t size = 0, used = 0; + char *buffer = NULL; + + while(1) { + int count; + + size = (size == 0 ? 128 : size * 2); + buffer = realloc(buffer, size); + if(!buffer) { + fprintf(stderr, "Unable to allocate %d bytes\n", (int)size); + return 1; + } + + count = fread(buffer + used, 1, size - used, stdin); + if(count < size - used) { + buffer[used + count] = '\0'; + break; + } + used += count; + } + + json = json_loads(strip(buffer), 0, &error); + free(buffer); + } + else + json = json_loadf(stdin, 0, &error); + if(!json) { - fprintf(stderr, "%d\n%s\n", error.line, error.text); + fprintf(stderr, "%d %d %d\n%s\n", + error.line, error.column, error.position, + error.text); return 1; } diff --git a/test/suites/api/test_pack.c b/test/suites/api/test_pack.c index edc6bd6..772afb1 100644 --- a/test/suites/api/test_pack.c +++ b/test/suites/api/test_pack.c @@ -180,7 +180,7 @@ int main() /* NULL format */ if(json_pack_ex(&error, 0, NULL)) fail("json_pack failed to catch NULL format string"); - if(error.line != 1 || error.column != 1) + if(error.line != -1 || error.column != -1) fail("json_pack didn't get the error coordinates right!"); /* More complicated checks for row/columns */ diff --git a/test/suites/invalid-strip/apostrophe/error b/test/suites/invalid-strip/apostrophe/error deleted file mode 100644 index f30d170..0000000 --- a/test/suites/invalid-strip/apostrophe/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near ''' diff --git a/test/suites/invalid-strip/apostrophe/input b/test/suites/invalid-strip/apostrophe/input deleted file mode 100644 index 8bebe3a..0000000 --- a/test/suites/invalid-strip/apostrophe/input +++ /dev/null @@ -1 +0,0 @@ -[' \ No newline at end of file diff --git a/test/suites/invalid-strip/ascii-unicode-identifier/error b/test/suites/invalid-strip/ascii-unicode-identifier/error deleted file mode 100644 index 7469919..0000000 --- a/test/suites/invalid-strip/ascii-unicode-identifier/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -'[' or '{' expected near 'a' diff --git a/test/suites/invalid-strip/ascii-unicode-identifier/input b/test/suites/invalid-strip/ascii-unicode-identifier/input deleted file mode 100644 index ef2ab62..0000000 --- a/test/suites/invalid-strip/ascii-unicode-identifier/input +++ /dev/null @@ -1 +0,0 @@ -aå \ No newline at end of file diff --git a/test/suites/invalid-strip/brace-comma/error b/test/suites/invalid-strip/brace-comma/error deleted file mode 100644 index 394ad5a..0000000 --- a/test/suites/invalid-strip/brace-comma/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -string or '}' expected near ',' diff --git a/test/suites/invalid-strip/brace-comma/input b/test/suites/invalid-strip/brace-comma/input deleted file mode 100644 index 47bc910..0000000 --- a/test/suites/invalid-strip/brace-comma/input +++ /dev/null @@ -1 +0,0 @@ -{, \ No newline at end of file diff --git a/test/suites/invalid-strip/bracket-comma/error b/test/suites/invalid-strip/bracket-comma/error deleted file mode 100644 index 54c3924..0000000 --- a/test/suites/invalid-strip/bracket-comma/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -unexpected token near ',' diff --git a/test/suites/invalid-strip/bracket-comma/input b/test/suites/invalid-strip/bracket-comma/input deleted file mode 100644 index 6295fdc..0000000 --- a/test/suites/invalid-strip/bracket-comma/input +++ /dev/null @@ -1 +0,0 @@ -[, \ No newline at end of file diff --git a/test/suites/invalid-strip/bracket-one-comma/input b/test/suites/invalid-strip/bracket-one-comma/input deleted file mode 100644 index 6604698..0000000 --- a/test/suites/invalid-strip/bracket-one-comma/input +++ /dev/null @@ -1 +0,0 @@ -[1, \ No newline at end of file diff --git a/test/suites/invalid-strip/empty/error b/test/suites/invalid-strip/empty/error deleted file mode 100644 index ff19200..0000000 --- a/test/suites/invalid-strip/empty/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -'[' or '{' expected near end of file diff --git a/test/suites/invalid-strip/empty/input b/test/suites/invalid-strip/empty/input deleted file mode 100644 index e69de29..0000000 diff --git a/test/suites/invalid-strip/escaped-null-byte-in-string/error b/test/suites/invalid-strip/escaped-null-byte-in-string/error deleted file mode 100644 index 0fa36e2..0000000 --- a/test/suites/invalid-strip/escaped-null-byte-in-string/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -\u0000 is not allowed diff --git a/test/suites/invalid-strip/escaped-null-byte-in-string/input b/test/suites/invalid-strip/escaped-null-byte-in-string/input deleted file mode 100644 index 60f7f7b..0000000 --- a/test/suites/invalid-strip/escaped-null-byte-in-string/input +++ /dev/null @@ -1 +0,0 @@ -["\u0000 (null byte not allowed)"] \ No newline at end of file diff --git a/test/suites/invalid-strip/extra-comma-in-array/input b/test/suites/invalid-strip/extra-comma-in-array/input deleted file mode 100644 index 13f6f1d..0000000 --- a/test/suites/invalid-strip/extra-comma-in-array/input +++ /dev/null @@ -1 +0,0 @@ -[1,] \ No newline at end of file diff --git a/test/suites/invalid-strip/extra-command-in-multiline-array/error b/test/suites/invalid-strip/extra-command-in-multiline-array/error deleted file mode 100644 index 26c2152..0000000 --- a/test/suites/invalid-strip/extra-command-in-multiline-array/error +++ /dev/null @@ -1,2 +0,0 @@ -6 -unexpected token near ']' diff --git a/test/suites/invalid-strip/extra-command-in-multiline-array/input b/test/suites/invalid-strip/extra-command-in-multiline-array/input deleted file mode 100644 index e4d4ddd..0000000 --- a/test/suites/invalid-strip/extra-command-in-multiline-array/input +++ /dev/null @@ -1,6 +0,0 @@ -[1, -2, -3, -4, -5, -] \ No newline at end of file diff --git a/test/suites/invalid-strip/garbage-after-newline/error b/test/suites/invalid-strip/garbage-after-newline/error deleted file mode 100644 index 90eacdd..0000000 --- a/test/suites/invalid-strip/garbage-after-newline/error +++ /dev/null @@ -1,2 +0,0 @@ -2 -end of file expected near 'foo' diff --git a/test/suites/invalid-strip/garbage-after-newline/input b/test/suites/invalid-strip/garbage-after-newline/input deleted file mode 100644 index 3614ac7..0000000 --- a/test/suites/invalid-strip/garbage-after-newline/input +++ /dev/null @@ -1,2 +0,0 @@ -[1,2,3] -foo diff --git a/test/suites/invalid-strip/garbage-at-the-end/error b/test/suites/invalid-strip/garbage-at-the-end/error deleted file mode 100644 index 9076aec..0000000 --- a/test/suites/invalid-strip/garbage-at-the-end/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -end of file expected near 'foo' diff --git a/test/suites/invalid-strip/garbage-at-the-end/input b/test/suites/invalid-strip/garbage-at-the-end/input deleted file mode 100644 index adf1aac..0000000 --- a/test/suites/invalid-strip/garbage-at-the-end/input +++ /dev/null @@ -1 +0,0 @@ -[1,2,3]foo \ No newline at end of file diff --git a/test/suites/invalid-strip/integer-starting-with-zero/error b/test/suites/invalid-strip/integer-starting-with-zero/error deleted file mode 100644 index e4eee2f..0000000 --- a/test/suites/invalid-strip/integer-starting-with-zero/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '0' diff --git a/test/suites/invalid-strip/integer-starting-with-zero/input b/test/suites/invalid-strip/integer-starting-with-zero/input deleted file mode 100644 index 7106da1..0000000 --- a/test/suites/invalid-strip/integer-starting-with-zero/input +++ /dev/null @@ -1 +0,0 @@ -[012] \ No newline at end of file diff --git a/test/suites/invalid-strip/invalid-escape/error b/test/suites/invalid-strip/invalid-escape/error deleted file mode 100644 index 9930ca7..0000000 --- a/test/suites/invalid-strip/invalid-escape/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid escape near '"\' diff --git a/test/suites/invalid-strip/invalid-escape/input b/test/suites/invalid-strip/invalid-escape/input deleted file mode 100644 index e305947..0000000 --- a/test/suites/invalid-strip/invalid-escape/input +++ /dev/null @@ -1 +0,0 @@ -["\a <-- invalid escape"] \ No newline at end of file diff --git a/test/suites/invalid-strip/invalid-identifier/error b/test/suites/invalid-strip/invalid-identifier/error deleted file mode 100644 index 0f88417..0000000 --- a/test/suites/invalid-strip/invalid-identifier/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near 'troo' diff --git a/test/suites/invalid-strip/invalid-identifier/input b/test/suites/invalid-strip/invalid-identifier/input deleted file mode 100644 index 7c06bd5..0000000 --- a/test/suites/invalid-strip/invalid-identifier/input +++ /dev/null @@ -1 +0,0 @@ -[troo \ No newline at end of file diff --git a/test/suites/invalid-strip/invalid-negative-integerr/input b/test/suites/invalid-strip/invalid-negative-integerr/input deleted file mode 100644 index fe088a3..0000000 --- a/test/suites/invalid-strip/invalid-negative-integerr/input +++ /dev/null @@ -1 +0,0 @@ -[-123foo] \ No newline at end of file diff --git a/test/suites/invalid-strip/invalid-negative-real/error b/test/suites/invalid-strip/invalid-negative-real/error deleted file mode 100644 index f9d930e..0000000 --- a/test/suites/invalid-strip/invalid-negative-real/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -']' expected near 'foo' diff --git a/test/suites/invalid-strip/invalid-negative-real/input b/test/suites/invalid-strip/invalid-negative-real/input deleted file mode 100644 index 5fc3c1e..0000000 --- a/test/suites/invalid-strip/invalid-negative-real/input +++ /dev/null @@ -1 +0,0 @@ -[-123.123foo] \ No newline at end of file diff --git a/test/suites/invalid-strip/invalid-second-surrogate/error b/test/suites/invalid-strip/invalid-second-surrogate/error deleted file mode 100644 index 22d0e1f..0000000 --- a/test/suites/invalid-strip/invalid-second-surrogate/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid Unicode '\uD888\u3210' diff --git a/test/suites/invalid-strip/invalid-second-surrogate/input b/test/suites/invalid-strip/invalid-second-surrogate/input deleted file mode 100644 index 25a1ca2..0000000 --- a/test/suites/invalid-strip/invalid-second-surrogate/input +++ /dev/null @@ -1 +0,0 @@ -["\uD888\u3210 (first surrogate and invalid second surrogate)"] \ No newline at end of file diff --git a/test/suites/invalid-strip/lone-open-brace/input b/test/suites/invalid-strip/lone-open-brace/input deleted file mode 100644 index 81750b9..0000000 --- a/test/suites/invalid-strip/lone-open-brace/input +++ /dev/null @@ -1 +0,0 @@ -{ \ No newline at end of file diff --git a/test/suites/invalid-strip/lone-open-bracket/input b/test/suites/invalid-strip/lone-open-bracket/input deleted file mode 100644 index 8e2f0be..0000000 --- a/test/suites/invalid-strip/lone-open-bracket/input +++ /dev/null @@ -1 +0,0 @@ -[ \ No newline at end of file diff --git a/test/suites/invalid-strip/lone-second-surrogate/error b/test/suites/invalid-strip/lone-second-surrogate/error deleted file mode 100644 index c96d7f5..0000000 --- a/test/suites/invalid-strip/lone-second-surrogate/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid Unicode '\uDFAA' diff --git a/test/suites/invalid-strip/lone-second-surrogate/input b/test/suites/invalid-strip/lone-second-surrogate/input deleted file mode 100644 index 6882ee4..0000000 --- a/test/suites/invalid-strip/lone-second-surrogate/input +++ /dev/null @@ -1 +0,0 @@ -["\uDFAA (second surrogate on it's own)"] \ No newline at end of file diff --git a/test/suites/invalid-strip/minus-sign-without-number/error b/test/suites/invalid-strip/minus-sign-without-number/error deleted file mode 100644 index e978234..0000000 --- a/test/suites/invalid-strip/minus-sign-without-number/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '-' diff --git a/test/suites/invalid-strip/minus-sign-without-number/input b/test/suites/invalid-strip/minus-sign-without-number/input deleted file mode 100644 index a6d8e78..0000000 --- a/test/suites/invalid-strip/minus-sign-without-number/input +++ /dev/null @@ -1 +0,0 @@ -[-foo] \ No newline at end of file diff --git a/test/suites/invalid-strip/negative-integer-starting-with-zero/error b/test/suites/invalid-strip/negative-integer-starting-with-zero/error deleted file mode 100644 index a758d94..0000000 --- a/test/suites/invalid-strip/negative-integer-starting-with-zero/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '-0' diff --git a/test/suites/invalid-strip/negative-integer-starting-with-zero/input b/test/suites/invalid-strip/negative-integer-starting-with-zero/input deleted file mode 100644 index 67af096..0000000 --- a/test/suites/invalid-strip/negative-integer-starting-with-zero/input +++ /dev/null @@ -1 +0,0 @@ -[-012] \ No newline at end of file diff --git a/test/suites/invalid-strip/null-byte-in-string/error b/test/suites/invalid-strip/null-byte-in-string/error deleted file mode 100644 index 273f6d1..0000000 --- a/test/suites/invalid-strip/null-byte-in-string/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -control character 0x0 near '"null byte ' diff --git a/test/suites/invalid-strip/null-byte-in-string/input b/test/suites/invalid-strip/null-byte-in-string/input deleted file mode 100644 index c0d82be..0000000 Binary files a/test/suites/invalid-strip/null-byte-in-string/input and /dev/null differ diff --git a/test/suites/invalid-strip/null-byte-outside-string/error b/test/suites/invalid-strip/null-byte-outside-string/error deleted file mode 100644 index f0e68ec..0000000 --- a/test/suites/invalid-strip/null-byte-outside-string/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near end of file diff --git a/test/suites/invalid-strip/null-byte-outside-string/input b/test/suites/invalid-strip/null-byte-outside-string/input deleted file mode 100644 index 75447d8..0000000 Binary files a/test/suites/invalid-strip/null-byte-outside-string/input and /dev/null differ diff --git a/test/suites/invalid-strip/null/error b/test/suites/invalid-strip/null/error deleted file mode 100644 index de9280b..0000000 --- a/test/suites/invalid-strip/null/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -'[' or '{' expected near 'null' diff --git a/test/suites/invalid-strip/null/input b/test/suites/invalid-strip/null/input deleted file mode 100644 index ec747fa..0000000 --- a/test/suites/invalid-strip/null/input +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/test/suites/invalid-strip/object-apostrophes/error b/test/suites/invalid-strip/object-apostrophes/error deleted file mode 100644 index f7b586a..0000000 --- a/test/suites/invalid-strip/object-apostrophes/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -string or '}' expected near ''' diff --git a/test/suites/invalid-strip/object-apostrophes/input b/test/suites/invalid-strip/object-apostrophes/input deleted file mode 100644 index 9dba170..0000000 --- a/test/suites/invalid-strip/object-apostrophes/input +++ /dev/null @@ -1 +0,0 @@ -{'a' \ No newline at end of file diff --git a/test/suites/invalid-strip/object-garbage-at-end/error b/test/suites/invalid-strip/object-garbage-at-end/error deleted file mode 100644 index a60dc47..0000000 --- a/test/suites/invalid-strip/object-garbage-at-end/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -'}' expected near '123' diff --git a/test/suites/invalid-strip/object-garbage-at-end/input b/test/suites/invalid-strip/object-garbage-at-end/input deleted file mode 100644 index 80c42cb..0000000 --- a/test/suites/invalid-strip/object-garbage-at-end/input +++ /dev/null @@ -1 +0,0 @@ -{"a":"a" 123} \ No newline at end of file diff --git a/test/suites/invalid-strip/object-in-unterminated-array/input b/test/suites/invalid-strip/object-in-unterminated-array/input deleted file mode 100644 index 043a87e..0000000 --- a/test/suites/invalid-strip/object-in-unterminated-array/input +++ /dev/null @@ -1 +0,0 @@ -[{} \ No newline at end of file diff --git a/test/suites/invalid-strip/object-no-colon/input b/test/suites/invalid-strip/object-no-colon/input deleted file mode 100644 index f3797b3..0000000 --- a/test/suites/invalid-strip/object-no-colon/input +++ /dev/null @@ -1 +0,0 @@ -{"a" \ No newline at end of file diff --git a/test/suites/invalid-strip/object-no-value/input b/test/suites/invalid-strip/object-no-value/input deleted file mode 100644 index 3ef538a..0000000 --- a/test/suites/invalid-strip/object-no-value/input +++ /dev/null @@ -1 +0,0 @@ -{"a": \ No newline at end of file diff --git a/test/suites/invalid-strip/object-unterminated-value/input b/test/suites/invalid-strip/object-unterminated-value/input deleted file mode 100644 index 7fe699a..0000000 --- a/test/suites/invalid-strip/object-unterminated-value/input +++ /dev/null @@ -1 +0,0 @@ -{"a":"a \ No newline at end of file diff --git a/test/suites/invalid-strip/real-garbage-after-e/error b/test/suites/invalid-strip/real-garbage-after-e/error deleted file mode 100644 index d9b83e7..0000000 --- a/test/suites/invalid-strip/real-garbage-after-e/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '1e' diff --git a/test/suites/invalid-strip/real-garbage-after-e/input b/test/suites/invalid-strip/real-garbage-after-e/input deleted file mode 100644 index 9213dfc..0000000 --- a/test/suites/invalid-strip/real-garbage-after-e/input +++ /dev/null @@ -1 +0,0 @@ -[1ea] \ No newline at end of file diff --git a/test/suites/invalid-strip/real-negative-overflow/error b/test/suites/invalid-strip/real-negative-overflow/error deleted file mode 100644 index af5a850..0000000 --- a/test/suites/invalid-strip/real-negative-overflow/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -real number overflow near '-123123e100000' diff --git a/test/suites/invalid-strip/real-negative-overflow/input b/test/suites/invalid-strip/real-negative-overflow/input deleted file mode 100644 index 3d628a9..0000000 --- a/test/suites/invalid-strip/real-negative-overflow/input +++ /dev/null @@ -1 +0,0 @@ -[-123123e100000] \ No newline at end of file diff --git a/test/suites/invalid-strip/real-positive-overflow/error b/test/suites/invalid-strip/real-positive-overflow/error deleted file mode 100644 index e9becc3..0000000 --- a/test/suites/invalid-strip/real-positive-overflow/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -real number overflow near '123123e100000' diff --git a/test/suites/invalid-strip/real-positive-overflow/input b/test/suites/invalid-strip/real-positive-overflow/input deleted file mode 100644 index 54d7d3d..0000000 --- a/test/suites/invalid-strip/real-positive-overflow/input +++ /dev/null @@ -1 +0,0 @@ -[123123e100000] \ No newline at end of file diff --git a/test/suites/invalid-strip/real-truncated-at-e/error b/test/suites/invalid-strip/real-truncated-at-e/error deleted file mode 100644 index d9b83e7..0000000 --- a/test/suites/invalid-strip/real-truncated-at-e/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '1e' diff --git a/test/suites/invalid-strip/real-truncated-at-e/input b/test/suites/invalid-strip/real-truncated-at-e/input deleted file mode 100644 index c3ace3a..0000000 --- a/test/suites/invalid-strip/real-truncated-at-e/input +++ /dev/null @@ -1 +0,0 @@ -[1e] \ No newline at end of file diff --git a/test/suites/invalid-strip/real-truncated-at-point/error b/test/suites/invalid-strip/real-truncated-at-point/error deleted file mode 100644 index 7312401..0000000 --- a/test/suites/invalid-strip/real-truncated-at-point/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid token near '1.' diff --git a/test/suites/invalid-strip/real-truncated-at-point/input b/test/suites/invalid-strip/real-truncated-at-point/input deleted file mode 100644 index 1de287c..0000000 --- a/test/suites/invalid-strip/real-truncated-at-point/input +++ /dev/null @@ -1 +0,0 @@ -[1.] \ No newline at end of file diff --git a/test/suites/invalid-strip/run b/test/suites/invalid-strip/run deleted file mode 100755 index 7cb3243..0000000 --- a/test/suites/invalid-strip/run +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2009-2011 Petri Lehtinen -# -# Jansson is free software; you can redistribute it and/or modify -# it under the terms of the MIT license. See LICENSE for details. - -is_test() { - test -d $test_path -} - -run_test() { - $json_process <$test_path/input >$test_log/stdout 2>$test_log/stderr - valgrind_check $test_log/stderr || return 1 - cmp -s $test_path/error $test_log/stderr -} - -show_error() { - valgrind_show_error && return - - echo "EXPECTED ERROR:" - nl -bn $test_path/error - echo "ACTUAL ERROR:" - nl -bn $test_log/stderr -} - -. $top_srcdir/test/scripts/run-tests.sh diff --git a/test/suites/invalid-strip/tab-character-in-string/error b/test/suites/invalid-strip/tab-character-in-string/error deleted file mode 100644 index ee81a5f..0000000 --- a/test/suites/invalid-strip/tab-character-in-string/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -control character 0x9 near '"' diff --git a/test/suites/invalid-strip/tab-character-in-string/input b/test/suites/invalid-strip/tab-character-in-string/input deleted file mode 100644 index f3010f5..0000000 --- a/test/suites/invalid-strip/tab-character-in-string/input +++ /dev/null @@ -1 +0,0 @@ -[" <-- tab character"] \ No newline at end of file diff --git a/test/suites/invalid-strip/too-big-negative-integer/error b/test/suites/invalid-strip/too-big-negative-integer/error deleted file mode 100644 index 1cfe2d5..0000000 --- a/test/suites/invalid-strip/too-big-negative-integer/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -too big negative integer diff --git a/test/suites/invalid-strip/too-big-negative-integer/input b/test/suites/invalid-strip/too-big-negative-integer/input deleted file mode 100644 index dfa3846..0000000 --- a/test/suites/invalid-strip/too-big-negative-integer/input +++ /dev/null @@ -1 +0,0 @@ -[-123123123123123123123123123123] \ No newline at end of file diff --git a/test/suites/invalid-strip/too-big-positive-integer/error b/test/suites/invalid-strip/too-big-positive-integer/error deleted file mode 100644 index 89370e0..0000000 --- a/test/suites/invalid-strip/too-big-positive-integer/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -too big integer diff --git a/test/suites/invalid-strip/too-big-positive-integer/input b/test/suites/invalid-strip/too-big-positive-integer/input deleted file mode 100644 index 3156f10..0000000 --- a/test/suites/invalid-strip/too-big-positive-integer/input +++ /dev/null @@ -1 +0,0 @@ -[123123123123123123123123123123] \ No newline at end of file diff --git a/test/suites/invalid-strip/truncated-unicode-surrogate/error b/test/suites/invalid-strip/truncated-unicode-surrogate/error deleted file mode 100644 index 17b932d..0000000 --- a/test/suites/invalid-strip/truncated-unicode-surrogate/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -invalid Unicode '\uDADA' diff --git a/test/suites/invalid-strip/truncated-unicode-surrogate/input b/test/suites/invalid-strip/truncated-unicode-surrogate/input deleted file mode 100644 index 3937c2c..0000000 --- a/test/suites/invalid-strip/truncated-unicode-surrogate/input +++ /dev/null @@ -1 +0,0 @@ -["\uDADA (first surrogate without the second)"] \ No newline at end of file diff --git a/test/suites/invalid-strip/unicode-identifier/error b/test/suites/invalid-strip/unicode-identifier/error deleted file mode 100644 index e3817fa..0000000 --- a/test/suites/invalid-strip/unicode-identifier/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -'[' or '{' expected near 'å' diff --git a/test/suites/invalid-strip/unicode-identifier/input b/test/suites/invalid-strip/unicode-identifier/input deleted file mode 100644 index 7284aea..0000000 --- a/test/suites/invalid-strip/unicode-identifier/input +++ /dev/null @@ -1 +0,0 @@ -å \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-array-and-object/input b/test/suites/invalid-strip/unterminated-array-and-object/input deleted file mode 100644 index 7a63c8c..0000000 --- a/test/suites/invalid-strip/unterminated-array-and-object/input +++ /dev/null @@ -1 +0,0 @@ -[{ \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-array/input b/test/suites/invalid-strip/unterminated-array/input deleted file mode 100644 index 42a6193..0000000 --- a/test/suites/invalid-strip/unterminated-array/input +++ /dev/null @@ -1 +0,0 @@ -["a" \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-empty-key/input b/test/suites/invalid-strip/unterminated-empty-key/input deleted file mode 100644 index 20f22da..0000000 --- a/test/suites/invalid-strip/unterminated-empty-key/input +++ /dev/null @@ -1 +0,0 @@ -{" \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-key/input b/test/suites/invalid-strip/unterminated-key/input deleted file mode 100644 index 328c30c..0000000 --- a/test/suites/invalid-strip/unterminated-key/input +++ /dev/null @@ -1 +0,0 @@ -{"a \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-object-and-array/error b/test/suites/invalid-strip/unterminated-object-and-array/error deleted file mode 100644 index 5fe61b5..0000000 --- a/test/suites/invalid-strip/unterminated-object-and-array/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -string or '}' expected near '[' diff --git a/test/suites/invalid-strip/unterminated-object-and-array/input b/test/suites/invalid-strip/unterminated-object-and-array/input deleted file mode 100644 index 381ede5..0000000 --- a/test/suites/invalid-strip/unterminated-object-and-array/input +++ /dev/null @@ -1 +0,0 @@ -{[ \ No newline at end of file diff --git a/test/suites/invalid-strip/unterminated-string/input b/test/suites/invalid-strip/unterminated-string/input deleted file mode 100644 index 9822a6b..0000000 --- a/test/suites/invalid-strip/unterminated-string/input +++ /dev/null @@ -1 +0,0 @@ -["a \ No newline at end of file diff --git a/test/suites/invalid-unicode/encoded-surrogate-half/error b/test/suites/invalid-unicode/encoded-surrogate-half/error index a1813f7..762d2c4 100644 --- a/test/suites/invalid-unicode/encoded-surrogate-half/error +++ b/test/suites/invalid-unicode/encoded-surrogate-half/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xed at position 2 +1 2 2 +unable to decode byte 0xed near '"' diff --git a/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error b/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error index 50beb0a..b16dc17 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error +++ b/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 3 +1 3 3 +unable to decode byte 0xe5 near '"\' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-array/error b/test/suites/invalid-unicode/invalid-utf-8-in-array/error index 4030cd5..be15386 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-array/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-array/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 1 +1 1 1 +unable to decode byte 0xe5 diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error b/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error index 74252d7..01b4476 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 4 +1 4 4 +unable to decode byte 0xe5 near '123' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-escape/error b/test/suites/invalid-unicode/invalid-utf-8-in-escape/error index 74252d7..c13583d 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-escape/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-escape/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 4 +1 4 4 +unable to decode byte 0xe5 near '"\u' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error b/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error index 74252d7..c7b20b7 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 4 +1 4 4 +unable to decode byte 0xe5 near '1e1' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error b/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error index 39763ec..33dfc23 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 2 +1 2 2 +unable to decode byte 0xe5 near 'a' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-int/error b/test/suites/invalid-unicode/invalid-utf-8-in-int/error index 39763ec..8f08970 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-int/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-int/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 2 +1 2 2 +unable to decode byte 0xe5 near '0' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error b/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error index 50beb0a..b7660e3 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 3 +1 3 3 +unable to decode byte 0xe5 near '1e' diff --git a/test/suites/invalid-unicode/invalid-utf-8-in-string/error b/test/suites/invalid-unicode/invalid-utf-8-in-string/error index 39763ec..0b7039a 100644 --- a/test/suites/invalid-unicode/invalid-utf-8-in-string/error +++ b/test/suites/invalid-unicode/invalid-utf-8-in-string/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 2 +1 2 2 +unable to decode byte 0xe5 near '"' diff --git a/test/suites/invalid-unicode/lone-invalid-utf-8/error b/test/suites/invalid-unicode/lone-invalid-utf-8/error index 77f16c9..8e9a511 100644 --- a/test/suites/invalid-unicode/lone-invalid-utf-8/error +++ b/test/suites/invalid-unicode/lone-invalid-utf-8/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe5 at position 0 +1 0 0 +unable to decode byte 0xe5 diff --git a/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error b/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error index 370738e..86bbad3 100644 --- a/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error +++ b/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0x81 at position 2 +1 2 2 +unable to decode byte 0x81 near '"' diff --git a/test/suites/invalid-unicode/not-in-unicode-range/error b/test/suites/invalid-unicode/not-in-unicode-range/error index 5a00b67..d07ccb3 100644 --- a/test/suites/invalid-unicode/not-in-unicode-range/error +++ b/test/suites/invalid-unicode/not-in-unicode-range/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xf4 at position 2 +1 2 2 +unable to decode byte 0xf4 near '"' diff --git a/test/suites/invalid-unicode/overlong-3-byte-encoding/error b/test/suites/invalid-unicode/overlong-3-byte-encoding/error index 48796d1..8a05aba 100644 --- a/test/suites/invalid-unicode/overlong-3-byte-encoding/error +++ b/test/suites/invalid-unicode/overlong-3-byte-encoding/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe0 at position 2 +1 2 2 +unable to decode byte 0xe0 near '"' diff --git a/test/suites/invalid-unicode/overlong-4-byte-encoding/error b/test/suites/invalid-unicode/overlong-4-byte-encoding/error index 5c6e37f..7e19c5f 100644 --- a/test/suites/invalid-unicode/overlong-4-byte-encoding/error +++ b/test/suites/invalid-unicode/overlong-4-byte-encoding/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xf0 at position 2 +1 2 2 +unable to decode byte 0xf0 near '"' diff --git a/test/suites/invalid-unicode/overlong-ascii-encoding/error b/test/suites/invalid-unicode/overlong-ascii-encoding/error index 8fbf914..1d382ed 100644 --- a/test/suites/invalid-unicode/overlong-ascii-encoding/error +++ b/test/suites/invalid-unicode/overlong-ascii-encoding/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xc1 at position 2 +1 2 2 +unable to decode byte 0xc1 near '"' diff --git a/test/suites/invalid-unicode/restricted-utf-8/error b/test/suites/invalid-unicode/restricted-utf-8/error index e71089d..d018f5f 100644 --- a/test/suites/invalid-unicode/restricted-utf-8/error +++ b/test/suites/invalid-unicode/restricted-utf-8/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xfd at position 2 +1 2 2 +unable to decode byte 0xfd near '"' diff --git a/test/suites/invalid-unicode/truncated-utf-8/error b/test/suites/invalid-unicode/truncated-utf-8/error index 48796d1..8a05aba 100644 --- a/test/suites/invalid-unicode/truncated-utf-8/error +++ b/test/suites/invalid-unicode/truncated-utf-8/error @@ -1,2 +1,2 @@ --1 -unable to decode byte 0xe0 at position 2 +1 2 2 +unable to decode byte 0xe0 near '"' diff --git a/test/suites/invalid/apostrophe/error b/test/suites/invalid/apostrophe/error index f30d170..79bb2a0 100644 --- a/test/suites/invalid/apostrophe/error +++ b/test/suites/invalid/apostrophe/error @@ -1,2 +1,2 @@ -1 +1 2 2 invalid token near ''' diff --git a/test/suites/invalid/ascii-unicode-identifier/error b/test/suites/invalid/ascii-unicode-identifier/error index 7469919..a4d8142 100644 --- a/test/suites/invalid/ascii-unicode-identifier/error +++ b/test/suites/invalid/ascii-unicode-identifier/error @@ -1,2 +1,2 @@ -1 +1 1 1 '[' or '{' expected near 'a' diff --git a/test/suites/invalid/brace-comma/error b/test/suites/invalid/brace-comma/error index 394ad5a..ce04621 100644 --- a/test/suites/invalid/brace-comma/error +++ b/test/suites/invalid/brace-comma/error @@ -1,2 +1,2 @@ -1 +1 2 2 string or '}' expected near ',' diff --git a/test/suites/invalid/bracket-comma/error b/test/suites/invalid/bracket-comma/error index 54c3924..ce0a912 100644 --- a/test/suites/invalid/bracket-comma/error +++ b/test/suites/invalid/bracket-comma/error @@ -1,2 +1,2 @@ -1 +1 2 2 unexpected token near ',' diff --git a/test/suites/invalid/bracket-one-comma/error b/test/suites/invalid/bracket-one-comma/error deleted file mode 100644 index 41fd6d6..0000000 --- a/test/suites/invalid/bracket-one-comma/error +++ /dev/null @@ -1,2 +0,0 @@ -2 -']' expected near end of file diff --git a/test/suites/invalid-strip/bracket-one-comma/error b/test/suites/invalid/bracket-one-comma/error.normal similarity index 83% rename from test/suites/invalid-strip/bracket-one-comma/error rename to test/suites/invalid/bracket-one-comma/error.normal index f00ebc5..0248b11 100644 --- a/test/suites/invalid-strip/bracket-one-comma/error +++ b/test/suites/invalid/bracket-one-comma/error.normal @@ -1,2 +1,2 @@ -1 +2 0 4 ']' expected near end of file diff --git a/test/suites/invalid-strip/lone-open-bracket/error b/test/suites/invalid/bracket-one-comma/error.strip similarity index 83% rename from test/suites/invalid-strip/lone-open-bracket/error rename to test/suites/invalid/bracket-one-comma/error.strip index f00ebc5..f89b38f 100644 --- a/test/suites/invalid-strip/lone-open-bracket/error +++ b/test/suites/invalid/bracket-one-comma/error.strip @@ -1,2 +1,2 @@ -1 +1 3 3 ']' expected near end of file diff --git a/test/suites/invalid/empty/error b/test/suites/invalid/empty/error index ff19200..f45da6f 100644 --- a/test/suites/invalid/empty/error +++ b/test/suites/invalid/empty/error @@ -1,2 +1,2 @@ -1 +1 0 0 '[' or '{' expected near end of file diff --git a/test/suites/invalid/escaped-null-byte-in-string/error b/test/suites/invalid/escaped-null-byte-in-string/error index 0fa36e2..9795f18 100644 --- a/test/suites/invalid/escaped-null-byte-in-string/error +++ b/test/suites/invalid/escaped-null-byte-in-string/error @@ -1,2 +1,2 @@ -1 +1 33 33 \u0000 is not allowed diff --git a/test/suites/invalid/extra-comma-in-array/error b/test/suites/invalid/extra-comma-in-array/error index 38afe71..cae86c2 100644 --- a/test/suites/invalid/extra-comma-in-array/error +++ b/test/suites/invalid/extra-comma-in-array/error @@ -1,2 +1,2 @@ -1 +1 4 4 unexpected token near ']' diff --git a/test/suites/invalid-strip/extra-comma-in-array/error b/test/suites/invalid/extra-comma-in-multiline-array/error similarity index 78% rename from test/suites/invalid-strip/extra-comma-in-array/error rename to test/suites/invalid/extra-comma-in-multiline-array/error index 38afe71..5baeea4 100644 --- a/test/suites/invalid-strip/extra-comma-in-array/error +++ b/test/suites/invalid/extra-comma-in-multiline-array/error @@ -1,2 +1,2 @@ -1 +6 1 17 unexpected token near ']' diff --git a/test/suites/invalid/extra-command-in-multiline-array/input b/test/suites/invalid/extra-comma-in-multiline-array/input similarity index 100% rename from test/suites/invalid/extra-command-in-multiline-array/input rename to test/suites/invalid/extra-comma-in-multiline-array/input diff --git a/test/suites/invalid/extra-command-in-multiline-array/error b/test/suites/invalid/extra-command-in-multiline-array/error deleted file mode 100644 index 26c2152..0000000 --- a/test/suites/invalid/extra-command-in-multiline-array/error +++ /dev/null @@ -1,2 +0,0 @@ -6 -unexpected token near ']' diff --git a/test/suites/invalid/garbage-after-newline/error b/test/suites/invalid/garbage-after-newline/error index 90eacdd..5d2dec3 100644 --- a/test/suites/invalid/garbage-after-newline/error +++ b/test/suites/invalid/garbage-after-newline/error @@ -1,2 +1,2 @@ -2 +2 3 11 end of file expected near 'foo' diff --git a/test/suites/invalid/garbage-at-the-end/error b/test/suites/invalid/garbage-at-the-end/error index 9076aec..cdd8175 100644 --- a/test/suites/invalid/garbage-at-the-end/error +++ b/test/suites/invalid/garbage-at-the-end/error @@ -1,2 +1,2 @@ -1 +1 10 10 end of file expected near 'foo' diff --git a/test/suites/invalid/integer-starting-with-zero/error b/test/suites/invalid/integer-starting-with-zero/error index e4eee2f..64e0536 100644 --- a/test/suites/invalid/integer-starting-with-zero/error +++ b/test/suites/invalid/integer-starting-with-zero/error @@ -1,2 +1,2 @@ -1 +1 2 2 invalid token near '0' diff --git a/test/suites/invalid/invalid-escape/error b/test/suites/invalid/invalid-escape/error index 9930ca7..d9863f7 100644 --- a/test/suites/invalid/invalid-escape/error +++ b/test/suites/invalid/invalid-escape/error @@ -1,2 +1,2 @@ -1 -invalid escape near '"\' +1 4 4 +invalid escape near '"\a' diff --git a/test/suites/invalid/invalid-identifier/error b/test/suites/invalid/invalid-identifier/error index 0f88417..496c6ab 100644 --- a/test/suites/invalid/invalid-identifier/error +++ b/test/suites/invalid/invalid-identifier/error @@ -1,2 +1,2 @@ -1 +1 5 5 invalid token near 'troo' diff --git a/test/suites/invalid-strip/invalid-negative-integerr/error b/test/suites/invalid/invalid-negative-integer/error similarity index 80% rename from test/suites/invalid-strip/invalid-negative-integerr/error rename to test/suites/invalid/invalid-negative-integer/error index f9d930e..f2526c5 100644 --- a/test/suites/invalid-strip/invalid-negative-integerr/error +++ b/test/suites/invalid/invalid-negative-integer/error @@ -1,2 +1,2 @@ -1 +1 8 8 ']' expected near 'foo' diff --git a/test/suites/invalid/invalid-negative-integerr/input b/test/suites/invalid/invalid-negative-integer/input similarity index 100% rename from test/suites/invalid/invalid-negative-integerr/input rename to test/suites/invalid/invalid-negative-integer/input diff --git a/test/suites/invalid/invalid-negative-integerr/error b/test/suites/invalid/invalid-negative-integerr/error deleted file mode 100644 index f9d930e..0000000 --- a/test/suites/invalid/invalid-negative-integerr/error +++ /dev/null @@ -1,2 +0,0 @@ -1 -']' expected near 'foo' diff --git a/test/suites/invalid/invalid-negative-real/error b/test/suites/invalid/invalid-negative-real/error index f9d930e..933158a 100644 --- a/test/suites/invalid/invalid-negative-real/error +++ b/test/suites/invalid/invalid-negative-real/error @@ -1,2 +1,2 @@ -1 +1 12 12 ']' expected near 'foo' diff --git a/test/suites/invalid/invalid-second-surrogate/error b/test/suites/invalid/invalid-second-surrogate/error index 22d0e1f..e5a2359 100644 --- a/test/suites/invalid/invalid-second-surrogate/error +++ b/test/suites/invalid/invalid-second-surrogate/error @@ -1,2 +1,2 @@ -1 +1 62 62 invalid Unicode '\uD888\u3210' diff --git a/test/suites/invalid-strip/lone-open-brace/error b/test/suites/invalid/lone-open-brace/error.normal similarity index 86% rename from test/suites/invalid-strip/lone-open-brace/error rename to test/suites/invalid/lone-open-brace/error.normal index 73a2947..00dc765 100644 --- a/test/suites/invalid-strip/lone-open-brace/error +++ b/test/suites/invalid/lone-open-brace/error.normal @@ -1,2 +1,2 @@ -1 +2 0 2 string or '}' expected near end of file diff --git a/test/suites/invalid-strip/unterminated-array-and-object/error b/test/suites/invalid/lone-open-brace/error.strip similarity index 86% rename from test/suites/invalid-strip/unterminated-array-and-object/error rename to test/suites/invalid/lone-open-brace/error.strip index 73a2947..bb1c047 100644 --- a/test/suites/invalid-strip/unterminated-array-and-object/error +++ b/test/suites/invalid/lone-open-brace/error.strip @@ -1,2 +1,2 @@ -1 +1 1 1 string or '}' expected near end of file diff --git a/test/suites/invalid/lone-open-bracket/error b/test/suites/invalid/lone-open-bracket/error deleted file mode 100644 index 41fd6d6..0000000 --- a/test/suites/invalid/lone-open-bracket/error +++ /dev/null @@ -1,2 +0,0 @@ -2 -']' expected near end of file diff --git a/test/suites/invalid-strip/object-in-unterminated-array/error b/test/suites/invalid/lone-open-bracket/error.normal similarity index 83% rename from test/suites/invalid-strip/object-in-unterminated-array/error rename to test/suites/invalid/lone-open-bracket/error.normal index f00ebc5..f463928 100644 --- a/test/suites/invalid-strip/object-in-unterminated-array/error +++ b/test/suites/invalid/lone-open-bracket/error.normal @@ -1,2 +1,2 @@ -1 +2 0 2 ']' expected near end of file diff --git a/test/suites/invalid-strip/unterminated-array/error b/test/suites/invalid/lone-open-bracket/error.strip similarity index 83% rename from test/suites/invalid-strip/unterminated-array/error rename to test/suites/invalid/lone-open-bracket/error.strip index f00ebc5..2bc07ea 100644 --- a/test/suites/invalid-strip/unterminated-array/error +++ b/test/suites/invalid/lone-open-bracket/error.strip @@ -1,2 +1,2 @@ -1 +1 1 1 ']' expected near end of file diff --git a/test/suites/invalid/lone-second-surrogate/error b/test/suites/invalid/lone-second-surrogate/error index c96d7f5..bc5f34e 100644 --- a/test/suites/invalid/lone-second-surrogate/error +++ b/test/suites/invalid/lone-second-surrogate/error @@ -1,2 +1,2 @@ -1 +1 40 40 invalid Unicode '\uDFAA' diff --git a/test/suites/invalid/minus-sign-without-number/error b/test/suites/invalid/minus-sign-without-number/error index e978234..b3a78b9 100644 --- a/test/suites/invalid/minus-sign-without-number/error +++ b/test/suites/invalid/minus-sign-without-number/error @@ -1,2 +1,2 @@ -1 +1 2 2 invalid token near '-' diff --git a/test/suites/invalid/negative-integer-starting-with-zero/error b/test/suites/invalid/negative-integer-starting-with-zero/error index a758d94..36adc34 100644 --- a/test/suites/invalid/negative-integer-starting-with-zero/error +++ b/test/suites/invalid/negative-integer-starting-with-zero/error @@ -1,2 +1,2 @@ -1 +1 3 3 invalid token near '-0' diff --git a/test/suites/invalid/null-byte-in-string/error b/test/suites/invalid/null-byte-in-string/error index 273f6d1..45f9bd8 100644 --- a/test/suites/invalid/null-byte-in-string/error +++ b/test/suites/invalid/null-byte-in-string/error @@ -1,2 +1,2 @@ -1 +1 12 12 control character 0x0 near '"null byte ' diff --git a/test/suites/invalid/null-byte-in-string/nostrip b/test/suites/invalid/null-byte-in-string/nostrip new file mode 100644 index 0000000..80f4bf7 --- /dev/null +++ b/test/suites/invalid/null-byte-in-string/nostrip @@ -0,0 +1,2 @@ +The embedded NULL byte breaks json_loads(), which is used instead of +json_loadf() in the stripped tests. diff --git a/test/suites/invalid/null-byte-outside-string/error b/test/suites/invalid/null-byte-outside-string/error index f0e68ec..44d4def 100644 --- a/test/suites/invalid/null-byte-outside-string/error +++ b/test/suites/invalid/null-byte-outside-string/error @@ -1,2 +1,2 @@ -1 +1 2 2 invalid token near end of file diff --git a/test/suites/invalid/null-byte-outside-string/nostrip b/test/suites/invalid/null-byte-outside-string/nostrip new file mode 100644 index 0000000..80f4bf7 --- /dev/null +++ b/test/suites/invalid/null-byte-outside-string/nostrip @@ -0,0 +1,2 @@ +The embedded NULL byte breaks json_loads(), which is used instead of +json_loadf() in the stripped tests. diff --git a/test/suites/invalid/null/error b/test/suites/invalid/null/error index de9280b..1f5d464 100644 --- a/test/suites/invalid/null/error +++ b/test/suites/invalid/null/error @@ -1,2 +1,2 @@ -1 +1 4 4 '[' or '{' expected near 'null' diff --git a/test/suites/invalid/object-apostrophes/error b/test/suites/invalid/object-apostrophes/error index f7b586a..23fab01 100644 --- a/test/suites/invalid/object-apostrophes/error +++ b/test/suites/invalid/object-apostrophes/error @@ -1,2 +1,2 @@ -1 +1 2 2 string or '}' expected near ''' diff --git a/test/suites/invalid/object-garbage-at-end/error b/test/suites/invalid/object-garbage-at-end/error index a60dc47..06c4ec1 100644 --- a/test/suites/invalid/object-garbage-at-end/error +++ b/test/suites/invalid/object-garbage-at-end/error @@ -1,2 +1,2 @@ -1 +1 12 12 '}' expected near '123' diff --git a/test/suites/invalid/object-in-unterminated-array/error b/test/suites/invalid/object-in-unterminated-array/error deleted file mode 100644 index 41fd6d6..0000000 --- a/test/suites/invalid/object-in-unterminated-array/error +++ /dev/null @@ -1,2 +0,0 @@ -2 -']' expected near end of file diff --git a/test/suites/invalid/object-in-unterminated-array/error.normal b/test/suites/invalid/object-in-unterminated-array/error.normal new file mode 100644 index 0000000..0248b11 --- /dev/null +++ b/test/suites/invalid/object-in-unterminated-array/error.normal @@ -0,0 +1,2 @@ +2 0 4 +']' expected near end of file diff --git a/test/suites/invalid/object-in-unterminated-array/error.strip b/test/suites/invalid/object-in-unterminated-array/error.strip new file mode 100644 index 0000000..f89b38f --- /dev/null +++ b/test/suites/invalid/object-in-unterminated-array/error.strip @@ -0,0 +1,2 @@ +1 3 3 +']' expected near end of file diff --git a/test/suites/invalid-strip/object-no-colon/error b/test/suites/invalid/object-no-colon/error.normal similarity index 83% rename from test/suites/invalid-strip/object-no-colon/error rename to test/suites/invalid/object-no-colon/error.normal index 7f8b299..78d84f7 100644 --- a/test/suites/invalid-strip/object-no-colon/error +++ b/test/suites/invalid/object-no-colon/error.normal @@ -1,2 +1,2 @@ -1 +2 0 5 ':' expected near end of file diff --git a/test/suites/invalid/object-no-colon/error b/test/suites/invalid/object-no-colon/error.strip similarity index 83% rename from test/suites/invalid/object-no-colon/error rename to test/suites/invalid/object-no-colon/error.strip index 80c9249..528e266 100644 --- a/test/suites/invalid/object-no-colon/error +++ b/test/suites/invalid/object-no-colon/error.strip @@ -1,2 +1,2 @@ -2 +1 4 4 ':' expected near end of file diff --git a/test/suites/invalid-strip/object-no-value/error b/test/suites/invalid/object-no-value/error.normal similarity index 85% rename from test/suites/invalid-strip/object-no-value/error rename to test/suites/invalid/object-no-value/error.normal index 085fc8b..47ad902 100644 --- a/test/suites/invalid-strip/object-no-value/error +++ b/test/suites/invalid/object-no-value/error.normal @@ -1,2 +1,2 @@ -1 +2 0 6 unexpected token near end of file diff --git a/test/suites/invalid/object-no-value/error b/test/suites/invalid/object-no-value/error.strip similarity index 85% rename from test/suites/invalid/object-no-value/error rename to test/suites/invalid/object-no-value/error.strip index f252060..b36c5e2 100644 --- a/test/suites/invalid/object-no-value/error +++ b/test/suites/invalid/object-no-value/error.strip @@ -1,2 +1,2 @@ -2 +1 5 5 unexpected token near end of file diff --git a/test/suites/invalid/object-unterminated-value/error b/test/suites/invalid/object-unterminated-value/error.normal similarity index 82% rename from test/suites/invalid/object-unterminated-value/error rename to test/suites/invalid/object-unterminated-value/error.normal index 9b725a2..2ad76d4 100644 --- a/test/suites/invalid/object-unterminated-value/error +++ b/test/suites/invalid/object-unterminated-value/error.normal @@ -1,2 +1,2 @@ -1 +1 7 7 unexpected newline near '"a' diff --git a/test/suites/invalid-strip/object-unterminated-value/error b/test/suites/invalid/object-unterminated-value/error.strip similarity index 84% rename from test/suites/invalid-strip/object-unterminated-value/error rename to test/suites/invalid/object-unterminated-value/error.strip index 62f18ab..385afb5 100644 --- a/test/suites/invalid-strip/object-unterminated-value/error +++ b/test/suites/invalid/object-unterminated-value/error.strip @@ -1,2 +1,2 @@ -1 +1 7 7 premature end of input near '"a' diff --git a/test/suites/invalid/real-garbage-after-e/error b/test/suites/invalid/real-garbage-after-e/error index d9b83e7..b40ffa9 100644 --- a/test/suites/invalid/real-garbage-after-e/error +++ b/test/suites/invalid/real-garbage-after-e/error @@ -1,2 +1,2 @@ -1 +1 3 3 invalid token near '1e' diff --git a/test/suites/invalid/real-negative-overflow/error b/test/suites/invalid/real-negative-overflow/error index af5a850..d7f8e41 100644 --- a/test/suites/invalid/real-negative-overflow/error +++ b/test/suites/invalid/real-negative-overflow/error @@ -1,2 +1,2 @@ -1 +1 15 15 real number overflow near '-123123e100000' diff --git a/test/suites/invalid/real-positive-overflow/error b/test/suites/invalid/real-positive-overflow/error index e9becc3..55883c9 100644 --- a/test/suites/invalid/real-positive-overflow/error +++ b/test/suites/invalid/real-positive-overflow/error @@ -1,2 +1,2 @@ -1 +1 14 14 real number overflow near '123123e100000' diff --git a/test/suites/invalid/real-truncated-at-e/error b/test/suites/invalid/real-truncated-at-e/error index d9b83e7..b40ffa9 100644 --- a/test/suites/invalid/real-truncated-at-e/error +++ b/test/suites/invalid/real-truncated-at-e/error @@ -1,2 +1,2 @@ -1 +1 3 3 invalid token near '1e' diff --git a/test/suites/invalid/real-truncated-at-point/error b/test/suites/invalid/real-truncated-at-point/error index 7312401..db972e8 100644 --- a/test/suites/invalid/real-truncated-at-point/error +++ b/test/suites/invalid/real-truncated-at-point/error @@ -1,2 +1,2 @@ -1 +1 3 3 invalid token near '1.' diff --git a/test/suites/invalid/run b/test/suites/invalid/run index 7cb3243..f8394d7 100755 --- a/test/suites/invalid/run +++ b/test/suites/invalid/run @@ -9,19 +9,49 @@ is_test() { test -d $test_path } +do_run() { + variant=$1 + s=".$1" + + strip=0 + if [ "$variant" = "strip" ]; then + # This test should not be stripped + [ -f $test_path/nostrip ] && return + strip=1 + fi + + STRIP=$strip $json_process \ + <$test_path/input >$test_log/stdout$s 2>$test_log/stderr$s + valgrind_check $test_log/stderr$s || return 1 + + ref=error + [ -f $test_path/error$s ] && ref=error$s + + if ! cmp -s $test_path/$ref $test_log/stderr$s; then + echo $variant > $test_log/variant + return 1 + fi +} + run_test() { - $json_process <$test_path/input >$test_log/stdout 2>$test_log/stderr - valgrind_check $test_log/stderr || return 1 - cmp -s $test_path/error $test_log/stderr + do_run normal && do_run strip } show_error() { valgrind_show_error && return + read variant < $test_log/variant + s=".$variant" + + echo "VARIANT: $variant" + echo "EXPECTED ERROR:" - nl -bn $test_path/error + ref=error + [ -f $test_path/error$s ] && ref=error$s + nl -bn $test_path/$ref + echo "ACTUAL ERROR:" - nl -bn $test_log/stderr + nl -bn $test_log/stderr$s } . $top_srcdir/test/scripts/run-tests.sh diff --git a/test/suites/invalid/tab-character-in-string/error b/test/suites/invalid/tab-character-in-string/error index ee81a5f..9e2f76e 100644 --- a/test/suites/invalid/tab-character-in-string/error +++ b/test/suites/invalid/tab-character-in-string/error @@ -1,2 +1,2 @@ -1 +1 2 2 control character 0x9 near '"' diff --git a/test/suites/invalid/too-big-negative-integer/error b/test/suites/invalid/too-big-negative-integer/error index 1cfe2d5..a0640b9 100644 --- a/test/suites/invalid/too-big-negative-integer/error +++ b/test/suites/invalid/too-big-negative-integer/error @@ -1,2 +1,2 @@ -1 +1 32 32 too big negative integer diff --git a/test/suites/invalid/too-big-positive-integer/error b/test/suites/invalid/too-big-positive-integer/error index 89370e0..3bdbefd 100644 --- a/test/suites/invalid/too-big-positive-integer/error +++ b/test/suites/invalid/too-big-positive-integer/error @@ -1,2 +1,2 @@ -1 +1 31 31 too big integer diff --git a/test/suites/invalid/truncated-unicode-surrogate/error b/test/suites/invalid/truncated-unicode-surrogate/error index 17b932d..1b99f06 100644 --- a/test/suites/invalid/truncated-unicode-surrogate/error +++ b/test/suites/invalid/truncated-unicode-surrogate/error @@ -1,2 +1,2 @@ -1 +1 46 46 invalid Unicode '\uDADA' diff --git a/test/suites/invalid/unicode-identifier/error b/test/suites/invalid/unicode-identifier/error index e3817fa..178b0dd 100644 --- a/test/suites/invalid/unicode-identifier/error +++ b/test/suites/invalid/unicode-identifier/error @@ -1,2 +1,2 @@ -1 +1 1 2 '[' or '{' expected near 'å' diff --git a/test/suites/invalid/lone-open-brace/error b/test/suites/invalid/unterminated-array-and-object/error.normal similarity index 86% rename from test/suites/invalid/lone-open-brace/error rename to test/suites/invalid/unterminated-array-and-object/error.normal index a31caf7..5b19804 100644 --- a/test/suites/invalid/lone-open-brace/error +++ b/test/suites/invalid/unterminated-array-and-object/error.normal @@ -1,2 +1,2 @@ -2 +2 0 3 string or '}' expected near end of file diff --git a/test/suites/invalid/unterminated-array-and-object/error b/test/suites/invalid/unterminated-array-and-object/error.strip similarity index 86% rename from test/suites/invalid/unterminated-array-and-object/error rename to test/suites/invalid/unterminated-array-and-object/error.strip index a31caf7..da2bb22 100644 --- a/test/suites/invalid/unterminated-array-and-object/error +++ b/test/suites/invalid/unterminated-array-and-object/error.strip @@ -1,2 +1,2 @@ -2 +1 2 2 string or '}' expected near end of file diff --git a/test/suites/invalid/unterminated-array/error b/test/suites/invalid/unterminated-array/error deleted file mode 100644 index 41fd6d6..0000000 --- a/test/suites/invalid/unterminated-array/error +++ /dev/null @@ -1,2 +0,0 @@ -2 -']' expected near end of file diff --git a/test/suites/invalid/unterminated-array/error.normal b/test/suites/invalid/unterminated-array/error.normal new file mode 100644 index 0000000..8025ed1 --- /dev/null +++ b/test/suites/invalid/unterminated-array/error.normal @@ -0,0 +1,2 @@ +2 0 5 +']' expected near end of file diff --git a/test/suites/invalid/unterminated-array/error.strip b/test/suites/invalid/unterminated-array/error.strip new file mode 100644 index 0000000..495d0f7 --- /dev/null +++ b/test/suites/invalid/unterminated-array/error.strip @@ -0,0 +1,2 @@ +1 4 4 +']' expected near end of file diff --git a/test/suites/invalid/unterminated-empty-key/error b/test/suites/invalid/unterminated-empty-key/error.normal similarity index 82% rename from test/suites/invalid/unterminated-empty-key/error rename to test/suites/invalid/unterminated-empty-key/error.normal index 6691458..3d646ab 100644 --- a/test/suites/invalid/unterminated-empty-key/error +++ b/test/suites/invalid/unterminated-empty-key/error.normal @@ -1,2 +1,2 @@ -1 +1 2 2 unexpected newline near '"' diff --git a/test/suites/invalid-strip/unterminated-empty-key/error b/test/suites/invalid/unterminated-empty-key/error.strip similarity index 84% rename from test/suites/invalid-strip/unterminated-empty-key/error rename to test/suites/invalid/unterminated-empty-key/error.strip index dd913cf..94f1947 100644 --- a/test/suites/invalid-strip/unterminated-empty-key/error +++ b/test/suites/invalid/unterminated-empty-key/error.strip @@ -1,2 +1,2 @@ -1 +1 2 2 premature end of input near '"' diff --git a/test/suites/invalid/unterminated-key/error b/test/suites/invalid/unterminated-key/error.normal similarity index 82% rename from test/suites/invalid/unterminated-key/error rename to test/suites/invalid/unterminated-key/error.normal index 9b725a2..5f09b77 100644 --- a/test/suites/invalid/unterminated-key/error +++ b/test/suites/invalid/unterminated-key/error.normal @@ -1,2 +1,2 @@ -1 +1 3 3 unexpected newline near '"a' diff --git a/test/suites/invalid-strip/unterminated-key/error b/test/suites/invalid/unterminated-key/error.strip similarity index 84% rename from test/suites/invalid-strip/unterminated-key/error rename to test/suites/invalid/unterminated-key/error.strip index 62f18ab..8b6bec4 100644 --- a/test/suites/invalid-strip/unterminated-key/error +++ b/test/suites/invalid/unterminated-key/error.strip @@ -1,2 +1,2 @@ -1 +1 3 3 premature end of input near '"a' diff --git a/test/suites/invalid/unterminated-object-and-array/error b/test/suites/invalid/unterminated-object-and-array/error index 5fe61b5..ed97be7 100644 --- a/test/suites/invalid/unterminated-object-and-array/error +++ b/test/suites/invalid/unterminated-object-and-array/error @@ -1,2 +1,2 @@ -1 +1 2 2 string or '}' expected near '[' diff --git a/test/suites/invalid/unterminated-string/error b/test/suites/invalid/unterminated-string/error.normal similarity index 82% rename from test/suites/invalid/unterminated-string/error rename to test/suites/invalid/unterminated-string/error.normal index 9b725a2..5f09b77 100644 --- a/test/suites/invalid/unterminated-string/error +++ b/test/suites/invalid/unterminated-string/error.normal @@ -1,2 +1,2 @@ -1 +1 3 3 unexpected newline near '"a' diff --git a/test/suites/invalid-strip/unterminated-string/error b/test/suites/invalid/unterminated-string/error.strip similarity index 84% rename from test/suites/invalid-strip/unterminated-string/error rename to test/suites/invalid/unterminated-string/error.strip index 62f18ab..8b6bec4 100644 --- a/test/suites/invalid-strip/unterminated-string/error +++ b/test/suites/invalid/unterminated-string/error.strip @@ -1,2 +1,2 @@ -1 +1 3 3 premature end of input near '"a' diff --git a/test/suites/valid-strip/complex-array/input b/test/suites/valid-strip/complex-array/input deleted file mode 100644 index 7255532..0000000 --- a/test/suites/valid-strip/complex-array/input +++ /dev/null @@ -1,5 +0,0 @@ -[1,2,3,4, -"a", "b", "c", -{"foo": "bar", "core": "dump"}, -true, false, true, true, null, false -] \ No newline at end of file diff --git a/test/suites/valid-strip/complex-array/output b/test/suites/valid-strip/complex-array/output deleted file mode 100644 index 7aefe56..0000000 --- a/test/suites/valid-strip/complex-array/output +++ /dev/null @@ -1 +0,0 @@ -[1, 2, 3, 4, "a", "b", "c", {"core": "dump", "foo": "bar"}, true, false, true, true, null, false] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-array/input b/test/suites/valid-strip/empty-array/input deleted file mode 100644 index 0637a08..0000000 --- a/test/suites/valid-strip/empty-array/input +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-array/output b/test/suites/valid-strip/empty-array/output deleted file mode 100644 index 0637a08..0000000 --- a/test/suites/valid-strip/empty-array/output +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-object-in-array/input b/test/suites/valid-strip/empty-object-in-array/input deleted file mode 100644 index ee1aac4..0000000 --- a/test/suites/valid-strip/empty-object-in-array/input +++ /dev/null @@ -1 +0,0 @@ -[{}] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-object-in-array/output b/test/suites/valid-strip/empty-object-in-array/output deleted file mode 100644 index ee1aac4..0000000 --- a/test/suites/valid-strip/empty-object-in-array/output +++ /dev/null @@ -1 +0,0 @@ -[{}] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-object/input b/test/suites/valid-strip/empty-object/input deleted file mode 100644 index 9e26dfe..0000000 --- a/test/suites/valid-strip/empty-object/input +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/test/suites/valid-strip/empty-object/output b/test/suites/valid-strip/empty-object/output deleted file mode 100644 index 9e26dfe..0000000 --- a/test/suites/valid-strip/empty-object/output +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/test/suites/valid-strip/empty-string/input b/test/suites/valid-strip/empty-string/input deleted file mode 100644 index 93b6be2..0000000 --- a/test/suites/valid-strip/empty-string/input +++ /dev/null @@ -1 +0,0 @@ -[""] \ No newline at end of file diff --git a/test/suites/valid-strip/empty-string/output b/test/suites/valid-strip/empty-string/output deleted file mode 100644 index 93b6be2..0000000 --- a/test/suites/valid-strip/empty-string/output +++ /dev/null @@ -1 +0,0 @@ -[""] \ No newline at end of file diff --git a/test/suites/valid-strip/escaped-utf-control-char/input b/test/suites/valid-strip/escaped-utf-control-char/input deleted file mode 100644 index 07221b7..0000000 --- a/test/suites/valid-strip/escaped-utf-control-char/input +++ /dev/null @@ -1 +0,0 @@ -["\u0012 escaped control character"] \ No newline at end of file diff --git a/test/suites/valid-strip/escaped-utf-control-char/output b/test/suites/valid-strip/escaped-utf-control-char/output deleted file mode 100644 index 07221b7..0000000 --- a/test/suites/valid-strip/escaped-utf-control-char/output +++ /dev/null @@ -1 +0,0 @@ -["\u0012 escaped control character"] \ No newline at end of file diff --git a/test/suites/valid-strip/false/input b/test/suites/valid-strip/false/input deleted file mode 100644 index 67b2f07..0000000 --- a/test/suites/valid-strip/false/input +++ /dev/null @@ -1 +0,0 @@ -[false] \ No newline at end of file diff --git a/test/suites/valid-strip/false/output b/test/suites/valid-strip/false/output deleted file mode 100644 index 67b2f07..0000000 --- a/test/suites/valid-strip/false/output +++ /dev/null @@ -1 +0,0 @@ -[false] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-int/input b/test/suites/valid-strip/negative-int/input deleted file mode 100644 index 8e30f8b..0000000 --- a/test/suites/valid-strip/negative-int/input +++ /dev/null @@ -1 +0,0 @@ -[-123] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-int/output b/test/suites/valid-strip/negative-int/output deleted file mode 100644 index 8e30f8b..0000000 --- a/test/suites/valid-strip/negative-int/output +++ /dev/null @@ -1 +0,0 @@ -[-123] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-one/input b/test/suites/valid-strip/negative-one/input deleted file mode 100644 index 99d21a2..0000000 --- a/test/suites/valid-strip/negative-one/input +++ /dev/null @@ -1 +0,0 @@ -[-1] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-one/output b/test/suites/valid-strip/negative-one/output deleted file mode 100644 index 99d21a2..0000000 --- a/test/suites/valid-strip/negative-one/output +++ /dev/null @@ -1 +0,0 @@ -[-1] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-zero/input b/test/suites/valid-strip/negative-zero/input deleted file mode 100644 index 37af131..0000000 --- a/test/suites/valid-strip/negative-zero/input +++ /dev/null @@ -1 +0,0 @@ -[-0] \ No newline at end of file diff --git a/test/suites/valid-strip/negative-zero/output b/test/suites/valid-strip/negative-zero/output deleted file mode 100644 index 6e7ea63..0000000 --- a/test/suites/valid-strip/negative-zero/output +++ /dev/null @@ -1 +0,0 @@ -[0] \ No newline at end of file diff --git a/test/suites/valid-strip/null/input b/test/suites/valid-strip/null/input deleted file mode 100644 index 500db4a..0000000 --- a/test/suites/valid-strip/null/input +++ /dev/null @@ -1 +0,0 @@ -[null] \ No newline at end of file diff --git a/test/suites/valid-strip/null/output b/test/suites/valid-strip/null/output deleted file mode 100644 index 500db4a..0000000 --- a/test/suites/valid-strip/null/output +++ /dev/null @@ -1 +0,0 @@ -[null] \ No newline at end of file diff --git a/test/suites/valid-strip/one-byte-utf-8/input b/test/suites/valid-strip/one-byte-utf-8/input deleted file mode 100644 index f26edd0..0000000 --- a/test/suites/valid-strip/one-byte-utf-8/input +++ /dev/null @@ -1 +0,0 @@ -["\u002c one-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/one-byte-utf-8/output b/test/suites/valid-strip/one-byte-utf-8/output deleted file mode 100644 index c33d250..0000000 --- a/test/suites/valid-strip/one-byte-utf-8/output +++ /dev/null @@ -1 +0,0 @@ -[", one-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e-negative-exponent/input b/test/suites/valid-strip/real-capital-e-negative-exponent/input deleted file mode 100644 index 0a01bd3..0000000 --- a/test/suites/valid-strip/real-capital-e-negative-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[1E-2] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e-negative-exponent/output b/test/suites/valid-strip/real-capital-e-negative-exponent/output deleted file mode 100644 index 75b9ef9..0000000 --- a/test/suites/valid-strip/real-capital-e-negative-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[0.01] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e-positive-exponent/input b/test/suites/valid-strip/real-capital-e-positive-exponent/input deleted file mode 100644 index 5a8fc09..0000000 --- a/test/suites/valid-strip/real-capital-e-positive-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[1E+2] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e-positive-exponent/output b/test/suites/valid-strip/real-capital-e-positive-exponent/output deleted file mode 100644 index d8ff702..0000000 --- a/test/suites/valid-strip/real-capital-e-positive-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[100.0] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e/input b/test/suites/valid-strip/real-capital-e/input deleted file mode 100644 index 6edbdfc..0000000 --- a/test/suites/valid-strip/real-capital-e/input +++ /dev/null @@ -1 +0,0 @@ -[1E22] \ No newline at end of file diff --git a/test/suites/valid-strip/real-capital-e/output b/test/suites/valid-strip/real-capital-e/output deleted file mode 100644 index 88e90ce..0000000 --- a/test/suites/valid-strip/real-capital-e/output +++ /dev/null @@ -1 +0,0 @@ -[1e+22] \ No newline at end of file diff --git a/test/suites/valid-strip/real-exponent/input b/test/suites/valid-strip/real-exponent/input deleted file mode 100644 index da2522d..0000000 --- a/test/suites/valid-strip/real-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[123e45] \ No newline at end of file diff --git a/test/suites/valid-strip/real-exponent/output b/test/suites/valid-strip/real-exponent/output deleted file mode 100644 index ac910d6..0000000 --- a/test/suites/valid-strip/real-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[1.2299999999999999e+47] \ No newline at end of file diff --git a/test/suites/valid-strip/real-fraction-exponent/input b/test/suites/valid-strip/real-fraction-exponent/input deleted file mode 100644 index 3944a7a..0000000 --- a/test/suites/valid-strip/real-fraction-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[123.456e78] \ No newline at end of file diff --git a/test/suites/valid-strip/real-fraction-exponent/output b/test/suites/valid-strip/real-fraction-exponent/output deleted file mode 100644 index 4b87bda..0000000 --- a/test/suites/valid-strip/real-fraction-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[1.23456e+80] \ No newline at end of file diff --git a/test/suites/valid-strip/real-negative-exponent/input b/test/suites/valid-strip/real-negative-exponent/input deleted file mode 100644 index ca40d3c..0000000 --- a/test/suites/valid-strip/real-negative-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[1e-2] \ No newline at end of file diff --git a/test/suites/valid-strip/real-negative-exponent/output b/test/suites/valid-strip/real-negative-exponent/output deleted file mode 100644 index 75b9ef9..0000000 --- a/test/suites/valid-strip/real-negative-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[0.01] \ No newline at end of file diff --git a/test/suites/valid-strip/real-positive-exponent/input b/test/suites/valid-strip/real-positive-exponent/input deleted file mode 100644 index 343601d..0000000 --- a/test/suites/valid-strip/real-positive-exponent/input +++ /dev/null @@ -1 +0,0 @@ -[1e+2] \ No newline at end of file diff --git a/test/suites/valid-strip/real-positive-exponent/output b/test/suites/valid-strip/real-positive-exponent/output deleted file mode 100644 index d8ff702..0000000 --- a/test/suites/valid-strip/real-positive-exponent/output +++ /dev/null @@ -1 +0,0 @@ -[100.0] \ No newline at end of file diff --git a/test/suites/valid-strip/real-underflow/input b/test/suites/valid-strip/real-underflow/input deleted file mode 100644 index c5236eb..0000000 --- a/test/suites/valid-strip/real-underflow/input +++ /dev/null @@ -1 +0,0 @@ -[123e-10000000] \ No newline at end of file diff --git a/test/suites/valid-strip/real-underflow/output b/test/suites/valid-strip/real-underflow/output deleted file mode 100644 index 92df1df..0000000 --- a/test/suites/valid-strip/real-underflow/output +++ /dev/null @@ -1 +0,0 @@ -[0.0] \ No newline at end of file diff --git a/test/suites/valid-strip/run b/test/suites/valid-strip/run deleted file mode 100755 index cd88a07..0000000 --- a/test/suites/valid-strip/run +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2009-2011 Petri Lehtinen -# -# Jansson is free software; you can redistribute it and/or modify -# it under the terms of the MIT license. See LICENSE for details. - -export JSON_SORT_KEYS=1 - -is_test() { - test -d $test_path -} - -run_test() { - $json_process <$test_path/input >$test_log/stdout 2>$test_log/stderr - valgrind_check $test_log/stderr || return 1 - cmp -s $test_path/output $test_log/stdout -} - -show_error() { - valgrind_show_error && return - - echo "EXPECTED OUTPUT:" - nl -bn $test_path/output - echo "ACTUAL OUTPUT:" - nl -bn $test_log/stdout -} - -. $top_srcdir/test/scripts/run-tests.sh diff --git a/test/suites/valid-strip/short-string/input b/test/suites/valid-strip/short-string/input deleted file mode 100644 index eac5f7b..0000000 --- a/test/suites/valid-strip/short-string/input +++ /dev/null @@ -1 +0,0 @@ -["a"] \ No newline at end of file diff --git a/test/suites/valid-strip/short-string/output b/test/suites/valid-strip/short-string/output deleted file mode 100644 index eac5f7b..0000000 --- a/test/suites/valid-strip/short-string/output +++ /dev/null @@ -1 +0,0 @@ -["a"] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-ascii-string/input b/test/suites/valid-strip/simple-ascii-string/input deleted file mode 100644 index 90358ab..0000000 --- a/test/suites/valid-strip/simple-ascii-string/input +++ /dev/null @@ -1 +0,0 @@ -["abcdefghijklmnopqrstuvwxyz1234567890 "] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-ascii-string/output b/test/suites/valid-strip/simple-ascii-string/output deleted file mode 100644 index 90358ab..0000000 --- a/test/suites/valid-strip/simple-ascii-string/output +++ /dev/null @@ -1 +0,0 @@ -["abcdefghijklmnopqrstuvwxyz1234567890 "] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-0/input b/test/suites/valid-strip/simple-int-0/input deleted file mode 100644 index 6e7ea63..0000000 --- a/test/suites/valid-strip/simple-int-0/input +++ /dev/null @@ -1 +0,0 @@ -[0] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-0/output b/test/suites/valid-strip/simple-int-0/output deleted file mode 100644 index 6e7ea63..0000000 --- a/test/suites/valid-strip/simple-int-0/output +++ /dev/null @@ -1 +0,0 @@ -[0] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-1/input b/test/suites/valid-strip/simple-int-1/input deleted file mode 100644 index bace2a0..0000000 --- a/test/suites/valid-strip/simple-int-1/input +++ /dev/null @@ -1 +0,0 @@ -[1] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-1/output b/test/suites/valid-strip/simple-int-1/output deleted file mode 100644 index bace2a0..0000000 --- a/test/suites/valid-strip/simple-int-1/output +++ /dev/null @@ -1 +0,0 @@ -[1] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-123/input b/test/suites/valid-strip/simple-int-123/input deleted file mode 100644 index e47f69a..0000000 --- a/test/suites/valid-strip/simple-int-123/input +++ /dev/null @@ -1 +0,0 @@ -[123] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-int-123/output b/test/suites/valid-strip/simple-int-123/output deleted file mode 100644 index e47f69a..0000000 --- a/test/suites/valid-strip/simple-int-123/output +++ /dev/null @@ -1 +0,0 @@ -[123] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-object/input b/test/suites/valid-strip/simple-object/input deleted file mode 100644 index a34fb49..0000000 --- a/test/suites/valid-strip/simple-object/input +++ /dev/null @@ -1 +0,0 @@ -{"a":[]} diff --git a/test/suites/valid-strip/simple-object/output b/test/suites/valid-strip/simple-object/output deleted file mode 100644 index 982abe8..0000000 --- a/test/suites/valid-strip/simple-object/output +++ /dev/null @@ -1 +0,0 @@ -{"a": []} \ No newline at end of file diff --git a/test/suites/valid-strip/simple-real/input b/test/suites/valid-strip/simple-real/input deleted file mode 100644 index b02878e..0000000 --- a/test/suites/valid-strip/simple-real/input +++ /dev/null @@ -1 +0,0 @@ -[123.456789] \ No newline at end of file diff --git a/test/suites/valid-strip/simple-real/output b/test/suites/valid-strip/simple-real/output deleted file mode 100644 index b02878e..0000000 --- a/test/suites/valid-strip/simple-real/output +++ /dev/null @@ -1 +0,0 @@ -[123.456789] \ No newline at end of file diff --git a/test/suites/valid-strip/string-escapes/input b/test/suites/valid-strip/string-escapes/input deleted file mode 100644 index 7f49553..0000000 --- a/test/suites/valid-strip/string-escapes/input +++ /dev/null @@ -1 +0,0 @@ -["\"\\\/\b\f\n\r\t"] \ No newline at end of file diff --git a/test/suites/valid-strip/string-escapes/output b/test/suites/valid-strip/string-escapes/output deleted file mode 100644 index ca5c1c6..0000000 --- a/test/suites/valid-strip/string-escapes/output +++ /dev/null @@ -1 +0,0 @@ -["\"\\/\b\f\n\r\t"] \ No newline at end of file diff --git a/test/suites/valid-strip/three-byte-utf-8/input b/test/suites/valid-strip/three-byte-utf-8/input deleted file mode 100644 index 25dcede..0000000 --- a/test/suites/valid-strip/three-byte-utf-8/input +++ /dev/null @@ -1 +0,0 @@ -["\u0821 three-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/three-byte-utf-8/output b/test/suites/valid-strip/three-byte-utf-8/output deleted file mode 100644 index c44d124..0000000 --- a/test/suites/valid-strip/three-byte-utf-8/output +++ /dev/null @@ -1 +0,0 @@ -["ࠡ three-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/true/input b/test/suites/valid-strip/true/input deleted file mode 100644 index de601e3..0000000 --- a/test/suites/valid-strip/true/input +++ /dev/null @@ -1 +0,0 @@ -[true] \ No newline at end of file diff --git a/test/suites/valid-strip/true/output b/test/suites/valid-strip/true/output deleted file mode 100644 index de601e3..0000000 --- a/test/suites/valid-strip/true/output +++ /dev/null @@ -1 +0,0 @@ -[true] \ No newline at end of file diff --git a/test/suites/valid-strip/two-byte-utf-8/input b/test/suites/valid-strip/two-byte-utf-8/input deleted file mode 100644 index 627046a..0000000 --- a/test/suites/valid-strip/two-byte-utf-8/input +++ /dev/null @@ -1 +0,0 @@ -["\u0123 two-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/two-byte-utf-8/output b/test/suites/valid-strip/two-byte-utf-8/output deleted file mode 100644 index 1f0988d..0000000 --- a/test/suites/valid-strip/two-byte-utf-8/output +++ /dev/null @@ -1 +0,0 @@ -["ģ two-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/utf-8-string/input b/test/suites/valid-strip/utf-8-string/input deleted file mode 100644 index 5372865..0000000 --- a/test/suites/valid-strip/utf-8-string/input +++ /dev/null @@ -1 +0,0 @@ -["€þıœəßð some utf-8 ĸʒ×ŋµåäö𝄞"] \ No newline at end of file diff --git a/test/suites/valid-strip/utf-8-string/output b/test/suites/valid-strip/utf-8-string/output deleted file mode 100644 index 5372865..0000000 --- a/test/suites/valid-strip/utf-8-string/output +++ /dev/null @@ -1 +0,0 @@ -["€þıœəßð some utf-8 ĸʒ×ŋµåäö𝄞"] \ No newline at end of file diff --git a/test/suites/valid-strip/utf-surrogate-four-byte-encoding/input b/test/suites/valid-strip/utf-surrogate-four-byte-encoding/input deleted file mode 100644 index 183855a..0000000 --- a/test/suites/valid-strip/utf-surrogate-four-byte-encoding/input +++ /dev/null @@ -1 +0,0 @@ -["\uD834\uDD1E surrogate, four-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid-strip/utf-surrogate-four-byte-encoding/output b/test/suites/valid-strip/utf-surrogate-four-byte-encoding/output deleted file mode 100644 index fa806d2..0000000 --- a/test/suites/valid-strip/utf-surrogate-four-byte-encoding/output +++ /dev/null @@ -1 +0,0 @@ -["𝄞 surrogate, four-byte UTF-8"] \ No newline at end of file diff --git a/test/suites/valid/run b/test/suites/valid/run index cd88a07..fa594e6 100755 --- a/test/suites/valid/run +++ b/test/suites/valid/run @@ -11,19 +11,45 @@ is_test() { test -d $test_path } +do_run() { + variant=$1 + s=".$1" + + strip=0 + [ "$variant" = "strip" ] && strip=1 + + STRIP=$strip $json_process \ + <$test_path/input >$test_log/stdout$s 2>$test_log/stderr$s + valgrind_check $test_log/stderr$s || return 1 + + ref=output + [ -f $test_path/output$s ] && ref=output$s + + if ! cmp -s $test_path/$ref $test_log/stdout$s; then + echo $variant > $test_log/variant + return 1 + fi +} + run_test() { - $json_process <$test_path/input >$test_log/stdout 2>$test_log/stderr - valgrind_check $test_log/stderr || return 1 - cmp -s $test_path/output $test_log/stdout + do_run normal && do_run strip } show_error() { valgrind_show_error && return + read variant < $test_log/variant + s=".$variant" + + echo "VARIANT: $variant" + echo "EXPECTED OUTPUT:" - nl -bn $test_path/output + ref=output + [ -f $test_path/output$s ] && ref=output$s + nl -bn $test_path/$ref + echo "ACTUAL OUTPUT:" - nl -bn $test_log/stdout + nl -bn $test_log/stdout$s } . $top_srcdir/test/scripts/run-tests.sh