diff options
Diffstat (limited to 't/errors.t')
-rw-r--r-- | t/errors.t | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/t/errors.t b/t/errors.t new file mode 100644 index 0000000..b616945 --- /dev/null +++ b/t/errors.t @@ -0,0 +1,387 @@ +use strict; +use lib -e 't' ? 't' : 'test'; +use TestYAML tests => 35; +$^W = 1; + +use YAML::Error; + +filters { + error => 'regexp', + yaml => [mutate_yaml => 'yaml_load_error_or_warning' => 'check_yaml'], + perl => 'perl_eval_error_or_warning', +}; + +run_like('yaml' => 'error'); +run_like('perl' => 'error'); + +sub mutate_yaml { + s/\Q<%CNTL-G%>\E/\007/; + chomp if /msg_no_newline/; +} + +sub check_yaml { + my $yaml = shift; + return $yaml unless ref($yaml); + print "YAML actually loaded:\n" . Data::Dumper::Dumper($yaml); + return ''; +} + +__DATA__ +=== YAML_PARSE_ERR_BAD_CHARS ++++ error: YAML_PARSE_ERR_BAD_CHARS ++++ yaml +# Test msg_bad_chars +--- +- foo +# The next line contains an escape character +- bell -><%CNTL-G%><- + +=== YAML_PARSE_ERR_BAD_MAJOR_VERSION ++++ error: YAML_PARSE_ERR_BAD_MAJOR_VERSION ++++ yaml +# Test msg_bad_major_version +--- +- one +- two +--- #YAML:2.0 +- foo +- bar + +=== YAML_PARSE_WARN_BAD_MINOR_VERSION ++++ error: YAML_PARSE_WARN_BAD_MINOR_VERSION ++++ yaml +# Test msg_bad_minor_version +--- +- one +- two +--- #YAML:1.5 +- foo +- bar + +=== YAML_PARSE_WARN_MULTIPLE_DIRECTIVES ++++ error: YAML_PARSE_WARN_MULTIPLE_DIRECTIVES ++++ yaml +# Test msg_multiple_directives +--- #YAML:1.0 #YAML:1.0 +- foo +--- #FOO:2 #FOO:3 +- bar + +=== YAML_PARSE_ERR_TEXT_AFTER_INDICATOR ++++ error: YAML_PARSE_ERR_TEXT_AFTER_INDICATOR ++++ yaml +# Test msg_text_after_indicator +--- +- > + This is OK. +- > But this is not +- This is OK + +=== YAML_PARSE_ERR_NO_ANCHOR ++++ error: YAML_PARSE_ERR_NO_ANCHOR ++++ yaml +# Test msg_no_anchor +--- +- &moo foo +- bar +- *star +- &star far + +=== YAML_PARSE_ERR_INCONSISTENT_INDENTATION ++++ error: YAML_PARSE_ERR_INCONSISTENT_INDENTATION ++++ yaml +--- {foo: bar} +- foo +- bar + +=== YAML_PARSE_ERR_SINGLE_LINE ++++ error: YAML_PARSE_ERR_SINGLE_LINE ++++ yaml +--- +- "foo" bar + +=== YAML_PARSE_ERR_BAD_ANCHOR ++++ error: YAML_PARSE_ERR_BAD_ANCHOR ++++ yaml +--- +- &X=y 42 + +#--- +#error: YAML_PARSE_ERR_BAD_NODEX +#load: | +#--- +#error: YAML_PARSE_ERR_BAD_EXPLICITX +#load: | +# I don't think this one can ever happen (yet) +#--- +#error: YAML_DUMP_USAGE_DUMPCODE +#code: | +# local $YAML::DumpCode = [0]; +# Dump(sub { $foo + 42 }); + +=== YAML_LOAD_ERR_FILE_INPUT ++++ error: YAML_LOAD_ERR_FILE_INPUT ++++ perl +LoadFile('fooxxx'); +# XXX - Causing bus error!?!? +#--- +#error: YAML_DUMP_ERR_FILE_CONCATENATE +#code: | +# DumpFile(">> YAML.pod", 42); + +=== YAML_DUMP_ERR_FILE_OUTPUT ++++ error: YAML_DUMP_ERR_FILE_OUTPUT ++++ perl +Test::YAML::DumpFile("x/y/z.yaml", 42); + +=== YAML_DUMP_ERR_NO_HEADER ++++ error: YAML_DUMP_ERR_NO_HEADER ++++ perl +local $YAML::UseHeader = 0; +Test::YAML::Dump(42); + +=== YAML_DUMP_ERR_NO_HEADER ++++ error: YAML_DUMP_ERR_NO_HEADER ++++ perl +local $YAML::UseHeader = 0; +Test::YAML::Dump([]); + +=== YAML_DUMP_ERR_NO_HEADER ++++ error: YAML_DUMP_ERR_NO_HEADER ++++ perl +local $YAML::UseHeader = 0; +Test::YAML::Dump({}); +#--- +#error: xYAML_DUMP_WARN_BAD_NODE_TYPE +#code: | +# # +#--- +#error: YAML_EMIT_WARN_KEYS +#code: | +# # +#--- +#error: YAML_DUMP_WARN_DEPARSE_FAILED +#code: | +# # +#--- +#error: YAML_DUMP_WARN_CODE_DUMMY +#code: | +# Dump(sub{ 42 }); + +=== YAML_PARSE_ERR_MANY_EXPLICIT ++++ error: YAML_PARSE_ERR_MANY_EXPLICIT ++++ yaml +--- +- !foo !bar 42 + +=== YAML_PARSE_ERR_MANY_IMPLICIT ++++ error: YAML_PARSE_ERR_MANY_IMPLICIT ++++ yaml +--- +- ! ! "42" + +=== YAML_PARSE_ERR_MANY_ANCHOR ++++ error: YAML_PARSE_ERR_MANY_ANCHOR ++++ yaml +--- +- &foo &bar 42 + +=== YAML_PARSE_ERR_ANCHOR_ALIAS ++++ error: YAML_PARSE_ERR_ANCHOR_ALIAS ++++ yaml +--- +- &bar *foo + +=== YAML_PARSE_ERR_BAD_ALIAS ++++ error: YAML_PARSE_ERR_BAD_ALIAS ++++ yaml +--- +- *foo=bar + +=== YAML_PARSE_ERR_MANY_ALIAS ++++ error: YAML_PARSE_ERR_MANY_ALIAS ++++ yaml +--- +- *foo *bar + +=== YAML_LOAD_ERR_NO_CONVERT ++++ SKIP +Actually this should load into a ynode... ++++ error: YAML_LOAD_ERR_NO_CONVERT ++++ yaml +--- +- !foo shoe + +=== YAML_LOAD_ERR_NO_DEFAULT_VALUE ++++ error: YAML_LOAD_ERR_NO_DEFAULT_VALUE ++++ yaml +--- +- !perl/ref + foo: bar +#--- +#error: YAML_LOAD_ERR_NON_EMPTY_STRING +#load: | +# --- +# - !map foo +#--- +#error: YAML_LOAD_ERR_NON_EMPTY_STRING +#load: | +# --- +# - !seq foo +#--- +#error: YAML_LOAD_ERR_BAD_MAP_TO_SEQ +#load: | +# --- !seq +# 0: zero +# won: one +# 2: two +# 3: three +#--- +#error: YAML_LOAD_ERR_BAD_GLOB +#load: | +# # +#--- +#error: YAML_LOAD_ERR_BAD_REGEXP +#load: | +# # + +=== YAML_LOAD_ERR_BAD_MAP_ELEMENT ++++ error: YAML_LOAD_ERR_BAD_MAP_ELEMENT ++++ yaml +--- +foo: bar +bar + +=== YAML_LOAD_WARN_DUPLICATE_KEY ++++ error: YAML_LOAD_WARN_DUPLICATE_KEY ++++ yaml +--- +foo: bar +bar: boo +foo: baz +boo: bah + +=== YAML_LOAD_ERR_BAD_SEQ_ELEMENT ++++ error: YAML_LOAD_ERR_BAD_SEQ_ELEMENT ++++ yaml +--- +- 42 +foo + +=== YAML_PARSE_ERR_INLINE_MAP ++++ error: YAML_PARSE_ERR_INLINE_MAP ++++ yaml +--- +- {foo:bar} + +=== YAML_PARSE_ERR_INLINE_SEQUENCE ++++ error: YAML_PARSE_ERR_INLINE_SEQUENCE ++++ yaml +--- +- [foo bar, baz + +=== YAML_PARSE_ERR_BAD_DOUBLE ++++ error: YAML_PARSE_ERR_BAD_DOUBLE ++++ yaml +--- +- "foo baz + +=== YAML_PARSE_ERR_BAD_SINGLE ++++ error: YAML_PARSE_ERR_BAD_SINGLE ++++ yaml +--- +- 'foo bar + +=== YAML_PARSE_ERR_BAD_INLINE_IMPLICIT ++++ error: YAML_PARSE_ERR_BAD_INLINE_IMPLICIT ++++ yaml +--- +- [^gold] + +=== YAML_PARSE_ERR_BAD_IMPLICIT ++++ error: YAML_PARSE_ERR_BAD_IMPLICIT ++++ yaml +--- ! > +- 4 foo bar +#--- +#error: xYAML_PARSE_ERR_INDENTATION +#load: | +# --- + +=== YAML_PARSE_ERR_INCONSISTENT_INDENTATION ++++ error: YAML_PARSE_ERR_INCONSISTENT_INDENTATION ++++ yaml +--- +foo: bar + bar: baz +#--- +#error: xYAML_LOAD_WARN_UNRESOLVED_ALIAS +#load: | +# --- +# foo: *bar + +# === YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP +# +++ error: YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP +# +++ yaml +# --- +# - !perl/regexp: +# foo: bar +# +# === YAML_LOAD_WARN_BAD_REGEXP_ELEM +# +++ error: YAML_LOAD_WARN_BAD_REGEXP_ELEM +# +++ yaml +# --- +# - !perl/regexp: +# REGEXP: foo +# foo: bar + +=== YAML_LOAD_WARN_GLOB_NAME ++++ error: YAML_LOAD_WARN_GLOB_NAME ++++ yaml +--- +- !perl/glob: + foo: bar +#--- +#error: xYAML_LOAD_WARN_PARSE_CODE +#load: | +# --- +#--- +#error: YAML_LOAD_WARN_CODE_DEPARSE +#load: | +# --- +# - !perl/code | +# sub { "foo" } +#--- +#error: xYAML_EMIT_ERR_BAD_LEVEL +#code: +# # +#--- +#error: YAML_PARSE_WARN_AMBIGUOUS_TAB +#load: | +# --- +# - | +# foo +# bar + +=== YAML_LOAD_WARN_BAD_GLOB_ELEM ++++ error: YAML_LOAD_WARN_BAD_GLOB_ELEM ++++ yaml +--- +- !perl/glob: + NAME: foo + bar: SHAME + +=== YAML_PARSE_ERR_ZERO_INDENT ++++ error: YAML_PARSE_ERR_ZERO_INDENT ++++ yaml +--- +- |0 + foo + +=== YAML_PARSE_ERR_NONSPACE_INDENTATION ++++ error: YAML_PARSE_ERR_NONSPACE_INDENTATION ++++ yaml +--- +some: + data-preceded-with-tab: abc + |