sometimes fork() isn't available
[perl.git] / cpan / CPAN-Meta-YAML / t / 02_basic.t
1 #!/usr/bin/perl
2
3 # Testing of basic document structures
4
5 use strict;
6 BEGIN {
7         $|  = 1;
8         $^W = 1;
9 }
10
11 use File::Spec::Functions ':ALL';
12 use t::lib::Test;
13 use Test::More tests(30);
14 use CPAN::Meta::YAML;
15
16
17
18
19
20 #####################################################################
21 # Sample Testing
22
23 # Test a completely empty document
24 yaml_ok(
25         '',
26         [  ],
27         'empty',
28 );
29
30 # Just a newline
31 ### YAML.pm has a bug where it dies on a single newline
32 yaml_ok(
33         "\n\n",
34         [ ],
35         'only_newlines',
36 );
37
38 # Just a comment
39 yaml_ok(
40         "# comment\n",
41         [ ],
42         'only_comment',
43 );
44
45 # Empty documents
46 yaml_ok(
47         "---\n",
48         [ undef ],
49         'only_header',
50         noyamlperl => 1,
51 );
52 yaml_ok(
53         "---\n---\n",
54         [ undef, undef ],
55         'two_header',
56         noyamlperl => 1,
57 );
58 yaml_ok(
59         "--- ~\n",
60         [ undef ],
61         'one_undef',
62         noyamlperl => 1,
63 );
64 yaml_ok(
65         "---  ~\n",
66         [ undef ],
67         'one_undef2',
68         noyamlperl => 1,
69 );
70 yaml_ok(
71         "--- ~\n---\n",
72         [ undef, undef ],
73         'two_undef',
74         noyamlperl => 1,
75 );
76
77 # Just a scalar
78 yaml_ok(
79         "--- foo\n",
80         [ 'foo' ],
81         'one_scalar',
82 );
83 yaml_ok(
84         "---  foo\n",
85         [ 'foo' ],
86         'one_scalar2',
87 );
88 yaml_ok(
89         "--- foo\n--- bar\n",
90         [ 'foo', 'bar' ],
91         'two_scalar',
92         noyamlperl => 1,
93 );
94
95 # Simple lists
96 yaml_ok(
97         "---\n- foo\n",
98         [ [ 'foo' ] ],
99         'one_list1',
100 );
101 yaml_ok(
102         "---\n- foo\n- bar\n",
103         [ [ 'foo', 'bar' ] ],
104         'one_list2',
105 );
106 yaml_ok(
107         "---\n- ~\n- bar\n",
108         [ [ undef, 'bar' ] ],
109         'one_listundef',
110         noyamlperl => 1,
111 );
112
113 # Simple hashs
114 yaml_ok(
115         "---\nfoo: bar\n",
116         [ { foo => 'bar' } ],
117         'one_hash1',
118 );
119
120 yaml_ok(
121         "---\nfoo: bar\nthis: ~\n",
122         [ { this => undef, foo => 'bar' } ],
123         'one_hash2',
124         noyamlperl => 1,
125 );
126
127 # Simple array inside a hash with an undef
128 yaml_ok(
129         <<'END_YAML',
130 ---
131 foo:
132   - bar
133   - ~
134   - baz
135 END_YAML
136         [ { foo => [ 'bar', undef, 'baz' ] } ],
137         'array_in_hash',
138         noyamlperl => 1,
139 );
140
141 # Simple hash inside a hash with an undef
142 yaml_ok(
143         <<'END_YAML',
144 ---
145 foo: ~
146 bar:
147   foo: bar
148 END_YAML
149         [ { foo => undef, bar => { foo => 'bar' } } ],
150         'hash_in_hash',
151         noyamlperl => 1,
152 );
153
154 # Mixed hash and scalars inside an array
155 yaml_ok(
156         <<'END_YAML',
157 ---
158 -
159   foo: ~
160   this: that
161 - foo
162 - ~
163 -
164   foo: bar
165   this: that
166 END_YAML
167         [ [
168                 { foo => undef, this => 'that' },
169                 'foo',
170                 undef,
171                 { foo => 'bar', this => 'that' },
172         ] ],
173         'hash_in_array',
174         noyamlperl => 1,
175 );
176
177 # Simple single quote
178 yaml_ok(
179         "---\n- 'foo'\n",
180         [ [ 'foo' ] ],
181         'single_quote1',
182 );
183 yaml_ok(
184         "---\n- '  '\n",
185         [ [ '  ' ] ],
186         'single_spaces',
187 );
188 yaml_ok(
189         "---\n- ''\n",
190         [ [ '' ] ],
191         'single_null',
192 );
193
194 # Double quotes
195 yaml_ok(
196         "--- \"  \"\n",
197         [ '  ' ],
198         "only_spaces",
199         noyamlpm   => 1,
200         noyamlperl => 1,
201 );
202
203 yaml_ok(
204         "--- \"  foo\"\n--- \"bar  \"\n",
205         [ "  foo", "bar  " ],
206         "leading_trailing_spaces",
207         noyamlpm   => 1,
208         noyamlperl => 1,
209 );
210
211 # Implicit document start
212 yaml_ok(
213         "foo: bar\n",
214         [ { foo => 'bar' } ],
215         'implicit_hash',
216 );
217 yaml_ok(
218         "- foo\n",
219         [ [ 'foo' ] ],
220         'implicit_array',
221 );
222
223 # Inline nested hash
224 yaml_ok(
225         <<'END_YAML',
226 ---
227 - ~
228 - foo: bar
229   this: that
230 - baz
231 END_YAML
232         [ [ undef, { foo => 'bar', this => 'that' }, 'baz' ] ],
233         'inline_nested_hash',
234         noyamlperl => 1,
235 );
236
237 # Empty comments
238 yaml_ok(
239         "---\n- foo\n#\n- bar\n",
240         [ [ 'foo', 'bar' ] ],
241         'empty_comment_in_list',
242 );
243
244 yaml_ok(
245         "---\nfoo: bar\n# foo\none: two\n",
246         [ { foo => 'bar', one => 'two' } ],
247         'empty_comment_in_hash',
248 );
249
250 # Complex keys
251 yaml_ok(
252         "---\na b: c d\n",
253         [ { 'a b' => 'c d' } ],
254         'key_with_whitespace',
255 );