summaryrefslogtreecommitdiff
path: root/t/errors.t
diff options
context:
space:
mode:
Diffstat (limited to 't/errors.t')
-rw-r--r--t/errors.t387
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
+