Initial commit
[yaffs-website] / node_modules / tar / test / parse.js
1 var tap = require("tap")
2   , tar = require("../tar.js")
3   , fs = require("fs")
4   , path = require("path")
5   , file = path.resolve(__dirname, "fixtures/c.tar")
6   , index = 0
7
8   , expect =
9 [ [ 'entry',
10     { path: 'c.txt',
11       mode: 420,
12       uid: 24561,
13       gid: 20,
14       size: 513,
15       mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'),
16       cksum: 5422,
17       type: '0',
18       linkpath: '',
19       ustar: 'ustar\0',
20       ustarver: '00',
21       uname: 'isaacs',
22       gname: 'staff',
23       devmaj: 0,
24       devmin: 0,
25       fill: '' },
26     undefined ],
27   [ 'entry',
28     { path: 'cc.txt',
29       mode: 420,
30       uid: 24561,
31       gid: 20,
32       size: 513,
33       mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'),
34       cksum: 5525,
35       type: '0',
36       linkpath: '',
37       ustar: 'ustar\0',
38       ustarver: '00',
39       uname: 'isaacs',
40       gname: 'staff',
41       devmaj: 0,
42       devmin: 0,
43       fill: '' },
44     undefined ],
45   [ 'entry',
46     { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
47       mode: 420,
48       uid: 24561,
49       gid: 20,
50       size: 100,
51       mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'),
52       cksum: 18124,
53       type: '0',
54       linkpath: '',
55       ustar: 'ustar\0',
56       ustarver: '00',
57       uname: 'isaacs',
58       gname: 'staff',
59       devmaj: 0,
60       devmin: 0,
61       fill: '' },
62     undefined ],
63   [ 'entry',
64     { path: 'Ω.txt',
65       mode: 420,
66       uid: 24561,
67       gid: 20,
68       size: 2,
69       mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
70       cksum: 5695,
71       type: '0',
72       linkpath: '',
73       ustar: 'ustar\0',
74       ustarver: '00',
75       uname: 'isaacs',
76       gname: 'staff',
77       devmaj: 0,
78       devmin: 0,
79       fill: '' },
80     undefined ],
81   [ 'extendedHeader',
82     { path: 'PaxHeader/Ω.txt',
83       mode: 420,
84       uid: 24561,
85       gid: 20,
86       size: 120,
87       mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
88       cksum: 6702,
89       type: 'x',
90       linkpath: '',
91       ustar: 'ustar\0',
92       ustarver: '00',
93       uname: 'isaacs',
94       gname: 'staff',
95       devmaj: 0,
96       devmin: 0,
97       fill: '' },
98     { path: 'Ω.txt',
99       ctime: 1319737909,
100       atime: 1319739061,
101       dev: 234881026,
102       ino: 51693379,
103       nlink: 1 } ],
104   [ 'entry',
105     { path: 'Ω.txt',
106       mode: 420,
107       uid: 24561,
108       gid: 20,
109       size: 2,
110       mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
111       cksum: 5695,
112       type: '0',
113       linkpath: '',
114       ustar: 'ustar\0',
115       ustarver: '00',
116       uname: 'isaacs',
117       gname: 'staff',
118       devmaj: 0,
119       devmin: 0,
120       fill: '',
121       ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
122       atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'),
123       dev: 234881026,
124       ino: 51693379,
125       nlink: 1 },
126     undefined ],
127   [ 'extendedHeader',
128     { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
129       mode: 420,
130       uid: 24561,
131       gid: 20,
132       size: 353,
133       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
134       cksum: 14488,
135       type: 'x',
136       linkpath: '',
137       ustar: 'ustar\0',
138       ustarver: '00',
139       uname: 'isaacs',
140       gname: 'staff',
141       devmaj: 0,
142       devmin: 0,
143       fill: '' },
144     { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
145       ctime: 1319686868,
146       atime: 1319741254,
147       'LIBARCHIVE.creationtime': '1319686852',
148       dev: 234881026,
149       ino: 51681874,
150       nlink: 1 } ],
151   [ 'entry',
152     { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
153       mode: 420,
154       uid: 24561,
155       gid: 20,
156       size: 200,
157       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
158       cksum: 14570,
159       type: '0',
160       linkpath: '',
161       ustar: 'ustar\0',
162       ustarver: '00',
163       uname: 'isaacs',
164       gname: 'staff',
165       devmaj: 0,
166       devmin: 0,
167       fill: '',
168       ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
169       atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'),
170       'LIBARCHIVE.creationtime': '1319686852',
171       dev: 234881026,
172       ino: 51681874,
173       nlink: 1 },
174     undefined ],
175   [ 'longPath',
176     { path: '././@LongLink',
177       mode: 0,
178       uid: 0,
179       gid: 0,
180       size: 201,
181       mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
182       cksum: 4976,
183       type: 'L',
184       linkpath: '',
185       ustar: false },
186     '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
187   [ 'entry',
188     { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
189       mode: 420,
190       uid: 1000,
191       gid: 1000,
192       size: 201,
193       mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'),
194       cksum: 14086,
195       type: '0',
196       linkpath: '',
197       ustar: false },
198     undefined ],
199   [ 'longLinkpath',
200     { path: '././@LongLink',
201       mode: 0,
202       uid: 0,
203       gid: 0,
204       size: 201,
205       mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
206       cksum: 4975,
207       type: 'K',
208       linkpath: '',
209       ustar: false },
210     '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
211   [ 'longPath',
212     { path: '././@LongLink',
213       mode: 0,
214       uid: 0,
215       gid: 0,
216       size: 201,
217       mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
218       cksum: 4976,
219       type: 'L',
220       linkpath: '',
221       ustar: false },
222     '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ],
223   [ 'entry',
224     { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL',
225       mode: 511,
226       uid: 1000,
227       gid: 1000,
228       size: 0,
229       mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'),
230       cksum: 21603,
231       type: '2',
232       linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
233       ustar: false },
234     undefined ],
235   [ 'extendedHeader',
236     { path: 'PaxHeader/200-hard',
237       mode: 420,
238       uid: 24561,
239       gid: 20,
240       size: 143,
241       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
242       cksum: 6533,
243       type: 'x',
244       linkpath: '',
245       ustar: 'ustar\0',
246       ustarver: '00',
247       uname: 'isaacs',
248       gname: 'staff',
249       devmaj: 0,
250       devmin: 0,
251       fill: '' },
252     { ctime: 1320617144,
253       atime: 1320617232,
254       'LIBARCHIVE.creationtime': '1319686852',
255       dev: 234881026,
256       ino: 51681874,
257       nlink: 2 } ],
258   [ 'entry',
259     { path: '200-hard',
260       mode: 420,
261       uid: 24561,
262       gid: 20,
263       size: 200,
264       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
265       cksum: 5526,
266       type: '0',
267       linkpath: '',
268       ustar: 'ustar\0',
269       ustarver: '00',
270       uname: 'isaacs',
271       gname: 'staff',
272       devmaj: 0,
273       devmin: 0,
274       fill: '',
275       ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
276       atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'),
277       'LIBARCHIVE.creationtime': '1319686852',
278       dev: 234881026,
279       ino: 51681874,
280       nlink: 2 },
281     undefined ],
282   [ 'extendedHeader',
283     { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
284       mode: 420,
285       uid: 24561,
286       gid: 20,
287       size: 353,
288       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
289       cksum: 14488,
290       type: 'x',
291       linkpath: '',
292       ustar: 'ustar\0',
293       ustarver: '00',
294       uname: 'isaacs',
295       gname: 'staff',
296       devmaj: 0,
297       devmin: 0,
298       fill: '' },
299     { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
300       ctime: 1320617144,
301       atime: 1320617406,
302       'LIBARCHIVE.creationtime': '1319686852',
303       dev: 234881026,
304       ino: 51681874,
305       nlink: 2 } ],
306   [ 'entry',
307     { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
308       mode: 420,
309       uid: 24561,
310       gid: 20,
311       size: 0,
312       mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
313       cksum: 15173,
314       type: '1',
315       linkpath: '200-hard',
316       ustar: 'ustar\0',
317       ustarver: '00',
318       uname: 'isaacs',
319       gname: 'staff',
320       devmaj: 0,
321       devmin: 0,
322       fill: '',
323       ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
324       atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'),
325       'LIBARCHIVE.creationtime': '1319686852',
326       dev: 234881026,
327       ino: 51681874,
328       nlink: 2 },
329     undefined ] ]
330
331
332 tap.test("parser test", function (t) {
333   var parser = tar.Parse()
334
335   parser.on("end", function () {
336     t.equal(index, expect.length, "saw all expected events")
337     t.end()
338   })
339
340   fs.createReadStream(file)
341     .pipe(parser)
342     .on("*", function (ev, entry) {
343       var wanted = expect[index]
344       if (!wanted) {
345         return t.fail("Unexpected event: " + ev)
346       }
347       var result = [ev, entry.props]
348       entry.on("end", function () {
349         result.push(entry.fields || entry.body)
350
351         t.equal(ev, wanted[0], index + " event type")
352         t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties")
353         if (wanted[2]) {
354           t.equivalent(result[2], wanted[2], "metadata values")
355         }
356         index ++
357       })
358     })
359 })