Add ExtUtils::Miniperl to the list of core modules for all versions >= 5.00504
[p5sagit/p5-mst-13.2.git] / lib / Module / Build / t / mbyaml.t
CommitLineData
a314697d 1#!/usr/local/bin/perl -w
2
dc8021d3 3use strict;
4use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
5use MBTest 'no_plan';
a314697d 6
738349a8 7use_ok 'Module::Build::YAML';
8ensure_blib('Module::Build::YAML');
9
a314697d 10my ($dir);
11$dir = ".";
12$dir = "t" if (-d "t");
13
14{
f943a5bf 15 my ($expected, $got, $var);
16 ##########################################################
17 # Test a typical-looking Module::Build structure (alphabetized)
18 ##########################################################
19 $var = {
a314697d 20 'resources' => {
21 'license' => 'http://opensource.org/licenses/artistic-license.php'
22 },
23 'meta-spec' => {
24 'version' => '1.2',
25 'url' => 'http://module-build.sourceforge.net/META-spec-v1.2.html'
26 },
27 'generated_by' => 'Module::Build version 0.2709',
28 'version' => '0.13',
29 'name' => 'js-app',
30 'dynamic_config' => '1',
31 'author' => [
32 '"Stephen Adkins" <spadkins@gmail.com>'
33 ],
34 'license' => 'lgpl',
35 'build_requires' => {
36 'App::Build' => '0',
37 'File::Spec' => '0',
38 'Module::Build' => '0'
39 },
40 'provides' => {
41 'JavaScript::App' => {
42 'version' => '0',
43 'file' => 'lib/JavaScript/App.pm'
44 }
45 },
46 'requires' => {
47 'App::Options' => '0'
48 },
49 'abstract' => 'A framework for building dynamic widgets or full applications in Javascript'
50 };
f943a5bf 51 $expected = <<'EOF';
a314697d 52---
53abstract: A framework for building dynamic widgets or full applications in Javascript
54author:
f943a5bf 55 - '"Stephen Adkins" <spadkins@gmail.com>'
a314697d 56build_requires:
57 App::Build: 0
58 File::Spec: 0
59 Module::Build: 0
60dynamic_config: 1
61generated_by: Module::Build version 0.2709
62license: lgpl
63meta-spec:
64 url: http://module-build.sourceforge.net/META-spec-v1.2.html
65 version: 1.2
66name: js-app
67provides:
68 JavaScript::App:
69 file: lib/JavaScript/App.pm
70 version: 0
71requires:
72 App::Options: 0
73resources:
74 license: http://opensource.org/licenses/artistic-license.php
75version: 0.13
76EOF
77 $got = &Module::Build::YAML::Dump($var);
78 is($got, $expected, "Dump(): single deep hash");
79
f943a5bf 80 ##########################################################
81 # Test a typical-looking Module::Build structure (ordered)
82 ##########################################################
83 $expected = <<'EOF';
a314697d 84---
85name: js-app
86version: 0.13
87author:
f943a5bf 88 - '"Stephen Adkins" <spadkins@gmail.com>'
a314697d 89abstract: A framework for building dynamic widgets or full applications in Javascript
90license: lgpl
91resources:
92 license: http://opensource.org/licenses/artistic-license.php
93requires:
94 App::Options: 0
95build_requires:
96 App::Build: 0
97 File::Spec: 0
98 Module::Build: 0
99dynamic_config: 1
100provides:
101 JavaScript::App:
102 file: lib/JavaScript/App.pm
103 version: 0
104generated_by: Module::Build version 0.2709
105meta-spec:
106 url: http://module-build.sourceforge.net/META-spec-v1.2.html
107 version: 1.2
108EOF
109 $var->{_order} = [qw(name version author abstract license resources requires build_requires dynamic_config provides)];
110 $got = &Module::Build::YAML::Dump($var);
111 is($got, $expected, "Dump(): single deep hash, ordered");
112
f943a5bf 113 ##########################################################
114 # Test that an array turns into multiple documents
115 ##########################################################
a314697d 116 $var = [
117 "e",
118 2.71828,
119 [ "pi", "is", 3.1416 ],
120 { fun => "under_sun", 6 => undef, "more", undef },
121 ];
f943a5bf 122 $expected = <<'EOF';
a314697d 123---
124e
125---
1262.71828
127---
128- pi
129- is
130- 3.1416
131---
f943a5bf 1326: ~
a314697d 133fun: under_sun
f943a5bf 134more: ~
a314697d 135EOF
136 $got = &Module::Build::YAML::Dump(@$var);
137 is($got, $expected, "Dump(): multiple, various");
138
f943a5bf 139 ##########################################################
140 # Test that a single array ref turns into one document
141 ##########################################################
142 $expected = <<'EOF';
a314697d 143---
144- e
145- 2.71828
146-
147 - pi
148 - is
149 - 3.1416
150-
f943a5bf 151 6: ~
a314697d 152 fun: under_sun
f943a5bf 153 more: ~
a314697d 154EOF
155 $got = &Module::Build::YAML::Dump($var);
156 is($got, $expected, "Dump(): single array of various");
157
f943a5bf 158 ##########################################################
159 # Test Object-Oriented Flavor of the API
160 ##########################################################
a314697d 161 my $y = Module::Build::YAML->new();
162 $got = $y->Dump($var);
163 is($got, $expected, "Dump(): single array of various (OO)");
f943a5bf 164
165 ##########################################################
166 # Test Quoting Conditions (newlines, quotes, tildas, undefs)
167 ##########################################################
168 $var = {
169 'foo01' => '`~!@#$%^&*()_+-={}|[]\\;\':",./?<>
170<nl>',
171 'foo02' => '~!@#$%^&*()_+-={}|[]\\;:,./<>?',
172 'foo03' => undef,
173 'foo04' => '~',
174 };
175 $expected = <<'EOF';
176---
177foo01: "`~!@#$%^&*()_+-={}|[]\;':\",./?<>\n<nl>"
178foo02: "~!@#$%^&*()_+-={}|[]\;:,./<>?"
179foo03: ~
180foo04: "~"
181EOF
182 $got = &Module::Build::YAML::Dump($var);
183 is($got, $expected, "Dump(): tricky embedded characters");
184
185 $var = {
186 'foo10' => undef,
187 'foo40' => '!',
188 'foo41' => '@',
189 'foo42' => '#',
190 'foo43' => '$',
191 'foo44' => '%',
192 'foo45' => '^',
193 'foo47' => '&',
194 'foo48' => '*',
195 'foo49' => '(',
196 'foo50' => ')',
197 'foo51' => '_',
198 'foo52' => '+',
199 'foo53' => '-',
200 'foo54' => '=',
201 'foo55' => '{',
202 'foo56' => '}',
203 'foo57' => '|',
204 'foo58' => '[',
205 'foo59' => ']',
206 'foo60' => '\\',
207 'foo61' => ';',
208 'foo62' => ':',
209 'foo63' => ',',
210 'foo64' => '.',
211 'foo65' => '/',
212 'foo66' => '<',
213 'foo67' => '>',
214 'foo68' => '?',
215 'foo69' => '\'',
216 'foo70' => '"',
217 'foo71' => '`',
218 'foo72' => '
219',
220 };
221 $expected = <<'EOF';
222---
223foo10: ~
224foo40: "!"
225foo41: '@'
226foo42: "#"
227foo43: $
228foo44: %
229foo45: "^"
230foo47: "&"
231foo48: "*"
232foo49: "("
233foo50: ")"
234foo51: _
235foo52: +
236foo53: -
237foo54: =
238foo55: "{"
239foo56: "}"
240foo57: "|"
241foo58: "["
242foo59: "]"
243foo60: \
244foo61: ;
245foo62: :
246foo63: ,
247foo64: .
248foo65: /
249foo66: '<'
250foo67: '>'
251foo68: "?"
252foo69: "'"
253foo70: '"'
254foo71: "`"
255foo72: "\n"
256EOF
257 $got = &Module::Build::YAML::Dump($var);
258 is($got, $expected, "Dump(): tricky embedded characters (singles)");
259
a314697d 260}
261
262