[1m[31m✘ error[0m: invalid value for option “[1m/bad_json_log/line-format#/timestamp-format[0m”
 [1m[31mreason[0m: empty values are not allowed
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-json-format/format.json[0m:11
[36m | [0m[37m[40m                "timestamp-format": ""  [0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/bad_json_log/line-format#/timestamp-format[0m [4m<string>[0m
         [1mDescription[0m
           The strftime(3) format for this field
[33m⚠ warning[0m: unexpected value for property “[1m/bad-name-log/title[0m”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:4
[36m | [0m[37m[40m        "title": "bad-format",          [0m
[36m =[0m   [36mhelp[0m: [1mAvailable Properties[0m
           [1m$schema[0m [4mThe URI of the schema for this file[0m
           [1m(\w+)[0m[1m/[0m
[33m⚠ warning[0m: unexpected value for property “[1m/bad-name-log/description[0m”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:5
[36m | [0m[37m[40m        "description": "Log format with a name that has invalid characters",[0m
[36m =[0m   [36mhelp[0m: [1mAvailable Properties[0m
           [1m$schema[0m [4mThe URI of the schema for this file[0m
           [1m(\w+)[0m[1m/[0m
[33m⚠ warning[0m: unexpected value for property “[1m/bad-name-log/json[0m”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:6
[36m | [0m[37m[40m        "json": true                    [0m
[36m =[0m   [36mhelp[0m: [1mAvailable Properties[0m
           [1m$schema[0m [4mThe URI of the schema for this file[0m
           [1m(\w+)[0m[1m/[0m
[1m[31m✘ error[0m: “invalid(abc” is not a valid regular expression
 [1m[31mreason[0m: missing closing parenthesis
[36m --> [0m[1m/invalid_props_log/tags/badtag3/pattern[0m
[36m | [0m[37m[40minvalid[0m[1m[7m[32m[40m([0m[37m[40mabc                             [0m
[36m | [0m[37m[40m           [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:36
[36m | [0m[37m[40m                "pattern": "invalid(abc"[0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/invalid_props_log/tags/badtag3/pattern[0m [4m<regex>[0m
         [1mDescription[0m
           The regular expression to match against the body of the log message
         [1mExample[0m
           \w+ is down
[1m[31m✘ error[0m: “abc(def” is not a valid regular expression
 [1m[31mreason[0m: missing closing parenthesis
[36m --> [0m[1m/invalid_props_log/search-table/bad_table_regex/pattern[0m
[36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40mdef                                 [0m
[36m | [0m[37m[40m       [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m    [0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:41
[36m | [0m[37m[40m                "pattern": "abc(def"    [0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/invalid_props_log/search-table/bad_table_regex/pattern[0m [4m<regex>[0m
         [1mDescription[0m
           The regular expression for this search table.
[1m[31m✘ error[0m: “^(?<timestamp>\d+: (?<body>.*)$” is not a valid regular expression
 [1m[31mreason[0m: missing closing parenthesis
[36m --> [0m[1m/bad_regex_log/regex/std/pattern[0m
[36m | [0m[1m[36m[40m^[0m[1m[7m[32m[40m([0m[1m[32m[40m?[0m[1m[36m[40m<[0m[37m[40mtimestamp>[0m[1m[37m[40m\d[0m[1m[36m[40m+[0m[37m[40m: [0m[1m[32m[40m([0m[1m[32m[40m?[0m[1m[36m[40m<[0m[37m[40mbody>[0m[1m[36m[40m.[0m[1m[36m[40m*[0m[1m[32m[40m)[0m[1m[36m[40m$[0m[37m[40m                             [0m
[36m | [0m[37m[40m                               [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:6
[36m | [0m[37m[40m                "pattern": "^(?<timestamp>\\d+: (?<body>.*)$"[0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/bad_regex_log/regex/std/pattern[0m [4m<message-regex>[0m
         [1mDescription[0m
           The regular expression to match a log message and capture fields.
[1m[31m✘ error[0m: “(foo” is not a valid regular expression
 [1m[31mreason[0m: missing closing parenthesis
[36m --> [0m[1mpattern[0m
[36m | [0m[1m[7m[32m[40m([0m[37m[40mfoo                                    [0m
[36m | [0m[37m[40m    [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m       [0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:13
[36m | [0m[37m[40m            "error": "(foo"             [0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/bad_regex_log/level/error[0m [4m<pattern|integer>[0m
         [1mDescription[0m
           The regular expression used to match the log text for this level.  For JSON logs with numeric levels, this should be the number for the corresponding level.
[1m[31m✘ error[0m: “abc(” is not a valid regular expression
 [1m[31mreason[0m: missing closing parenthesis
[36m --> [0m[1m/bad_regex_log/highlights/foobar/pattern[0m
[36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40m                                    [0m
[36m | [0m[37m[40m    [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m       [0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:25
[36m | [0m[37m[40m                "pattern": "abc("       [0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/bad_regex_log/highlights/foobar/pattern[0m [4m<regex>[0m
         [1mDescription[0m
           A regular expression to highlight in logs of this format.
[33m⚠ warning[0m: format file is missing “[1m$schema[0m” property
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m
[36m =[0m   [36mnote[0m: the schema specifies the supported format version and can be used with editors to automatically validate the file
[36m =[0m   [36mhelp[0m: add the following property to the top-level JSON object:
         [37m[40m    "$schema": "https://lnav.org/schemas/format-v1.schema.json",[0m
[1m[31m✘ error[0m: “foo” is not a valid value for option “[1m/bad_sample_log/value/pid/kind[0m”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:24
[36m | [0m[37m[40m                "kind": "foo"           [0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/bad_sample_log/value/pid/kind[0m [4m<data-type>[0m
         [1mDescription[0m
           The type of data in the field
         [1mAllowed Values[0m
           [1mstring[0m, [1minteger[0m, [1mfloat[0m, [1mboolean[0m, [1mjson[0m, [1mstruct[0m, [1mquoted[0m, [1mxml[0m
[1m[31m✘ error[0m: '[1mbad[0m' is not a supported log format $schema version
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-schema/format.json[0m:2
[36m | [0m[37m[40m    "$schema": "bad"                    [0m
[36m =[0m [36mnote[0m: expecting one of the following $schema values:
         [1m  https://lnav.org/schemas/format-v1.schema.json[0m
[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m
           [1m/$schema[0m [4mThe URI of the schema for this file[0m
         [1mDescription[0m
           Specifies the type of this file
[1m[31m✘ error[0m: SQL expression is invalid
 [1m[31mreason[0m: unrecognized token: "'foobar"
[36m --> [0m[1m/bad_file_format1/converter/header/expr/default[0m
[36m | [0m[37m[40m:header[0m[37m[40m [0m[1m[36m[40mREGEXP[0m[37m[40m [0m[1m[7m[31m[40m'[0m[37m[40mfoobar                  [0m
[1m[31m✘ error[0m: A command is required when a converter is defined
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-file-format/format.json[0m:4
[36m =[0m [36mhelp[0m: The converter command transforms the file into a format that can be consumed by lnav
[1m[31m✘ error[0m: invalid line format element “[1m/bad_json_log/line-format/0/field[0m”
 [1m[31mreason[0m: “” is not a defined value
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-json-format/format.json[0m:7
[1m[31m✘ error[0m: invalid pattern: “[1mincomplete-match[0m”
 [1m[31mreason[0m: pattern does not match entire message
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:20
[36m | [0m[37m[40m1428634687123; foo                      [0m
[36m | [0m[37m[40m              [0m[1m[31m[40m^ matched up to here[0m[37m[40m      [0m
[36m =[0m [36mnote[0m: [1mincomplete-match[0m = [1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m;
[36m =[0m [36mhelp[0m: update the regular expression to fully capture the sample message
[1m[31m✘ error[0m: invalid sample log message: "abc: foo"
 [1m[31mreason[0m: unrecognized timestamp -- abc
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:34
[36m =[0m [36mnote[0m: the following custom formats were tried:
           abc
           [36m^ [0m“[1m%i[0m”[36m matched up to here[0m
[36m =[0m [36mhelp[0m: If the timestamp format is not supported by default, you can add a custom format with the “[1mtimestamp-format[0m” property
[1m[31m✘ error[0m: invalid sample log message: "1428634687123| debug hello"
 [1m[31mreason[0m: “[1mdebug[0m” does not match the expected level of “[1minfo[0m”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:37
[36m =[0m [36mnote[0m: matched regex = [1mwith-level[0m
         captured level = “debug”
         level regular expression match results:
           [1m/bad_sample_log/level/debug[0m = debug
             debug
             [36m^[0m[36m---[0m[36m^[0m
           [1m/bad_sample_log/level/info[0m = info
             [33mno match[0m
[36m =[0m [36mhelp[0m: Level regexes are not anchored to the start/end of the string.  Prepend “[1m^[0m” to the expression to match from the start of the string and append “[1m$[0m” to match up to the end of the string.
[1m[31m✘ error[0m: invalid pattern: “[1mwith-level[0m”
 [1m[31mreason[0m: pattern does not match entire multiline sample message
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:41
[36m =[0m [36mnote[0m: [1mwith-level[0m = [1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m\| [1m[32m([0m[1m[32m?[0m[1m[36m<[0mlevel>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0m
[36m =[0m [36mhelp[0m: use “.*” to match new-lines
[1m[31m✘ error[0m: invalid sample log message: "1428634687123; foo bar"
 [1m[31mreason[0m: sample does not match any patterns
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:45
[36m =[0m [36mnote[0m: the following shows how each pattern matched this sample:
            [37m[40m1428634687123; foo bar[0m
                         [36m^ [0m[1mbad-time[0m[36m matched up to here[0m
                              [36m^ [0m[1msemi[0m[36m matched up to here[0m
                         [36m^ [0m[1mstd[0m[36m matched up to here[0m
                         [36m^ [0m[1mwith-level[0m[36m matched up to here[0m
[36m =[0m [36mnote[0m: [1mbad-time  [0m = “[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\w[0m[1m[36m+[0m[1m[32m)[0m: [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0m”
         [1msemi      [0m = “[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m; [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0m”
         [1mstd       [0m = “[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m: [1m[32m([0m[1m[32m?[0m[1m[36m<[0mpid>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m[36m.[0m[1m[36m*[0m[1m[32m)[0m[1m[36m$[0m”
         [1mwith-level[0m = “[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m\| [1m[32m([0m[1m[32m?[0m[1m[36m<[0mlevel>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0m”
         
[33m⚠ warning[0m: invalid pattern: “[1m/bad_sample_log/regex/semi[0m”
   [33mreason[0m: pattern does not match any samples
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:10
[36m =[0m   [36mhelp[0m: every pattern should have at least one sample that it matches
[33m⚠ warning[0m: invalid pattern: “[1m/bad_sample_log/regex/std[0m”
   [33mreason[0m: pattern does not match any samples
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:7
[36m =[0m   [36mhelp[0m: every pattern should have at least one sample that it matches
[1m[31m✘ error[0m: invalid pattern: “[1m/invalid_props_log/regex/std[0m”
 [1m[31mreason[0m: no timestamp capture found in the pattern
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[36m =[0m [36mhelp[0m: all log messages need a timestamp
[33m⚠ warning[0m: invalid value “[1m/invalid_props_log/value/non-existent[0m”
   [33mreason[0m: no patterns have a capture named “non-existent”
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[36m =[0m   [36mnote[0m: the following captures are available:
             [1mbody[0m, [1mpid[0m, [1mtimestamp[0m
[36m =[0m   [36mhelp[0m: values are populated from captures in patterns, so at least one pattern must have a capture with this value name
[1m[31m✘ error[0m: invalid tag definition “[1m/invalid_props_log/tags/badtag[0m”
 [1m[31mreason[0m: tag definitions must have a non-empty pattern
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[1m[31m✘ error[0m: invalid tag definition “[1m/invalid_props_log/tags/badtag2[0m”
 [1m[31mreason[0m: tag definitions must have a non-empty pattern
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[1m[31m✘ error[0m: invalid tag definition “[1m/invalid_props_log/tags/badtag3[0m”
 [1m[31mreason[0m: tag definitions must have a non-empty pattern
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[1m[31m✘ error[0m: “[1minvalid_props_log[0m” is not a valid log format
 [1m[31mreason[0m: “[1msubsecond-unit[0m” must be set when “[1msubsecond-field[0m” is used
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[1m[31m✘ error[0m: invalid value for property “[1m/invalid_props_log/timestamp-field[0m”
 [1m[31mreason[0m: “ts” was not found in the pattern at [1m/invalid_props_log/regex/std[0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4
[36m =[0m [36mnote[0m: the following captures are available:
           [1mbody[0m, [1mpid[0m, [1mtimestamp[0m
[1m[31m✘ error[0m: “not a color” is not a valid color value for property “[1m/invalid_props_log/highlights/hl1/color[0m”
 [1m[31mreason[0m: Unknown color: 'not a color'.  See https://jonasjacek.github.io/colors/ for a list of supported color names
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:24
[1m[31m✘ error[0m: “also not a color” is not a valid color value for property “[1m/invalid_props_log/highlights/hl1/background-color[0m”
 [1m[31mreason[0m: Unknown color: 'also not a color'.  See https://jonasjacek.github.io/colors/ for a list of supported color names
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:25
[1m[31m✘ error[0m: “[1mno_regexes_log[0m” is not a valid log format
 [1m[31mreason[0m: no regexes specified
[36m --> [0m[1m{test_dir}/bad-config/formats/no-regexes/format.json[0m:4
[1m[31m✘ error[0m: “[1mno_regexes_log[0m” is not a valid log format
 [1m[31mreason[0m: log message samples must be included in a format definition
[36m --> [0m[1m{test_dir}/bad-config/formats/no-regexes/format.json[0m:4
[1m[31m✘ error[0m: “[1mno_sample_log[0m” is not a valid log format
 [1m[31mreason[0m: log message samples must be included in a format definition
[36m --> [0m[1m{test_dir}/bad-config/formats/no-samples/format.json[0m:4
[1m[31m✘ error[0m: invalid sample log message: "gitea  | 2023/09/24 22:15:55 cmd/web.go:223:runWeb() [I] Starting Gitea on PID: 7"
 [1m[31mreason[0m: timestamp was not captured
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-no-tscap/format.json[0m:25
[36m =[0m [36mhelp[0m: A timestamp needs to be captured in order for a line to be recognized as a log message
[1m[31m✘ error[0m: failed to compile SQL statement
 [1m[31mreason[0m: near "TALE": syntax error
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sql/init.sql[0m:4
[36m | [0m[32m[40m-- comment test                         [0m
[36m | [0m[1m[36m[40mCREATE[0m[37m[40m [0m[37m[40mTALE[0m[37m[40m [0m[1m[37m[40minvalid[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mx[0m[37m[40m [0m[37m[40my[0m[37m[40m [0m[37m[40mz[0m[37m[40m);            [0m
[36m | [0m[37m[40m       [0m[36m[40m^ [0m[1m[31m[40mnear "TALE": syntax error[0m[37m[40m      [0m
[1m[31m✘ error[0m: failed to execute SQL statement
 [1m[31mreason[0m: [1m[31m✘ error[0m: “abc(” is not a valid regular expression
[1m[31m |      [0m  [1m[31mreason[0m: missing closing parenthesis
[1m[31m |      [0m [36m --> [0m[1marg[0m
[1m[31m |      [0m [36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40m                                    [0m
[1m[31m |      [0m [36m | [0m[37m[40m    [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m
[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sql/init2.sql[0m
[36m | [0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_match[0m[1m[7m[31m[40m([0m[35m[40m'abc('[0m[37m[40m, [0m[35m[40m'123'[0m[37m[40m)      [0m
[36m | [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40msqlite_master[0m[37m[40m;                     [0m
