| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952 | 
							
- // the symlink file is excluded from git, because it makes
 
- // windows freak the hell out.
 
- var fs = require("fs")
 
-   , path = require("path")
 
-   , symlink = path.resolve(__dirname, "fixtures/symlink")
 
- try { fs.unlinkSync(symlink) } catch (e) {}
 
- fs.symlinkSync("./hardlink-1", symlink)
 
- process.on("exit", function () {
 
-   fs.unlinkSync(symlink)
 
- })
 
- var tap = require("tap")
 
-   , tar = require("../tar.js")
 
-   , pkg = require("../package.json")
 
-   , Pack = tar.Pack
 
-   , fstream = require("fstream")
 
-   , Reader = fstream.Reader
 
-   , Writer = fstream.Writer
 
-   , input = path.resolve(__dirname, "fixtures/")
 
-   , target = path.resolve(__dirname, "tmp/pack.tar")
 
-   , uid = process.getuid ? process.getuid() : 0
 
-   , gid = process.getgid ? process.getgid() : 0
 
-   , entries =
 
-     // the global header and root fixtures/ dir are going to get
 
-     // a different date each time, so omit that bit.
 
-     // Also, dev/ino values differ across machines, so that's not
 
-     // included.
 
-     [ [ 'globalExtendedHeader',
 
-       { path: 'PaxHeader/',
 
-         mode: 438,
 
-         uid: 0,
 
-         gid: 0,
 
-         type: 'g',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' },
 
-       { "NODETAR.author": pkg.author,
 
-         "NODETAR.name": pkg.name,
 
-         "NODETAR.description": pkg.description,
 
-         "NODETAR.version": pkg.version,
 
-         "NODETAR.repository.type": pkg.repository.type,
 
-         "NODETAR.repository.url": pkg.repository.url,
 
-         "NODETAR.main": pkg.main,
 
-         "NODETAR.scripts.test": pkg.scripts.test } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'extendedHeader',
 
-       { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         type: 'x',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' },
 
-       { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
 
-         'NODETAR.depth': '1',
 
-         'NODETAR.type': 'File',
 
-         nlink: 1,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 200,
 
-         'NODETAR.blksize': '4096',
 
-         'NODETAR.blocks': '8' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 200,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '',
 
-         'NODETAR.depth': '1',
 
-         'NODETAR.type': 'File',
 
-         nlink: 1,
 
-         'NODETAR.blksize': '4096',
 
-         'NODETAR.blocks': '8' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/a.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 257,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/b.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 512,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/c.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 513,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/cc.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 513,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/dir/',
 
-         mode: 488,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/dir/sub/',
 
-         mode: 488,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/foo.js',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 4,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/hardlink-1',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 200,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/hardlink-2',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '1',
 
-         linkpath: 'fixtures/hardlink-1',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/omega.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 2,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/packtest/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/packtest/omega.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 2,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/packtest/star.4.html',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 54081,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'extendedHeader',
 
-       { path: 'PaxHeader/fixtures/packtest/Ω.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         type: 'x',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' },
 
-       { path: 'fixtures/packtest/Ω.txt',
 
-         'NODETAR.depth': '2',
 
-         'NODETAR.type': 'File',
 
-         nlink: 1,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 2,
 
-         'NODETAR.blksize': '4096',
 
-         'NODETAR.blocks': '8' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/packtest/Ω.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 2,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '',
 
-         'NODETAR.depth': '2',
 
-         'NODETAR.type': 'File',
 
-         nlink: 1,
 
-         'NODETAR.blksize': '4096',
 
-         'NODETAR.blocks': '8' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/',
 
-         mode: 493,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '5',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 100,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/symlink',
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 0,
 
-         type: '2',
 
-         linkpath: 'hardlink-1',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' } ]
 
-     , [ 'extendedHeader',
 
-       { path: 'PaxHeader/fixtures/Ω.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         type: 'x',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '' },
 
-       { path: "fixtures/Ω.txt"
 
-       , "NODETAR.depth": "1"
 
-       , "NODETAR.type": "File"
 
-       , nlink: 1
 
-       , uid: uid
 
-       , gid: gid
 
-       , size: 2
 
-       , "NODETAR.blksize": "4096"
 
-       , "NODETAR.blocks": "8" } ]
 
-     , [ 'entry',
 
-       { path: 'fixtures/Ω.txt',
 
-         mode: 420,
 
-         uid: uid,
 
-         gid: gid,
 
-         size: 2,
 
-         type: '0',
 
-         linkpath: '',
 
-         ustar: 'ustar\u0000',
 
-         ustarver: '00',
 
-         uname: '',
 
-         gname: '',
 
-         devmaj: 0,
 
-         devmin: 0,
 
-         fill: '',
 
-         'NODETAR.depth': '1',
 
-         'NODETAR.type': 'File',
 
-         nlink: 1,
 
-         'NODETAR.blksize': '4096',
 
-         'NODETAR.blocks': '8' } ]
 
-     ]
 
- // first, make sure that the hardlinks are actually hardlinks, or this
 
- // won't work.  Git has a way of replacing them with a copy.
 
- var hard1 = path.resolve(__dirname, "fixtures/hardlink-1")
 
-   , hard2 = path.resolve(__dirname, "fixtures/hardlink-2")
 
-   , fs = require("fs")
 
- try { fs.unlinkSync(hard2) } catch (e) {}
 
- fs.linkSync(hard1, hard2)
 
- tap.test("with global header", { timeout: 10000 }, function (t) {
 
-   runTest(t, true)
 
- })
 
- tap.test("without global header", { timeout: 10000 }, function (t) {
 
-   runTest(t, false)
 
- })
 
- tap.test("with from base", { timeout: 10000 }, function (t) {
 
-   runTest(t, true, true)
 
- })
 
- function alphasort (a, b) {
 
-   return a === b ? 0
 
-        : a.toLowerCase() > b.toLowerCase() ? 1
 
-        : a.toLowerCase() < b.toLowerCase() ? -1
 
-        : a > b ? 1
 
-        : -1
 
- }
 
- function runTest (t, doGH, doFromBase) {
 
-   var reader = Reader({ path: input
 
-                       , filter: function () {
 
-                           return !this.path.match(/\.(tar|hex)$/)
 
-                         }
 
-                       , sort: alphasort
 
-                       })
 
-   var props = doGH ? pkg : {}
 
-   if(doFromBase) props.fromBase = true;
 
-   var pack = Pack(props)
 
-   var writer = Writer(target)
 
-   // skip the global header if we're not doing that.
 
-   var entry = doGH ? 0 : 1
 
-   t.ok(reader, "reader ok")
 
-   t.ok(pack, "pack ok")
 
-   t.ok(writer, "writer ok")
 
-   pack.pipe(writer)
 
-   var parse = tar.Parse()
 
-   t.ok(parse, "parser should be ok")
 
-   pack.on("data", function (c) {
 
-     // console.error("PACK DATA")
 
-     if (c.length !== 512) {
 
-       // this one is too noisy, only assert if it'll be relevant
 
-       t.equal(c.length, 512, "parser should emit data in 512byte blocks")
 
-     }
 
-     parse.write(c)
 
-   })
 
-   pack.on("end", function () {
 
-     // console.error("PACK END")
 
-     t.pass("parser ends")
 
-     parse.end()
 
-   })
 
-   pack.on("error", function (er) {
 
-     t.fail("pack error", er)
 
-   })
 
-   parse.on("error", function (er) {
 
-     t.fail("parse error", er)
 
-   })
 
-   writer.on("error", function (er) {
 
-     t.fail("writer error", er)
 
-   })
 
-   reader.on("error", function (er) {
 
-     t.fail("reader error", er)
 
-   })
 
-   parse.on("*", function (ev, e) {
 
-     var wanted = entries[entry++]
 
-     if (!wanted) {
 
-       t.fail("unexpected event: "+ev)
 
-       return
 
-     }
 
-     t.equal(ev, wanted[0], "event type should be "+wanted[0])
 
-     if(doFromBase) {
 
-       if(wanted[1].path.indexOf('fixtures/') && wanted[1].path.length == 100)
 
-         wanted[1].path = wanted[1].path.replace('fixtures/', '') + 'ccccccccc'
 
-       if(wanted[1]) wanted[1].path = wanted[1].path.replace('fixtures/', '').replace('//', '/')
 
-       if(wanted[1].path == '') wanted[1].path = '/'
 
-       if(wanted[2] && wanted[2].path) wanted[2].path = wanted[2].path.replace('fixtures', '').replace(/^\//, '')
 
-       wanted[1].linkpath = wanted[1].linkpath.replace('fixtures/', '')
 
-     }
 
-     if (ev !== wanted[0] || e.path !== wanted[1].path) {
 
-       console.error("wanted", wanted)
 
-       console.error([ev, e.props])
 
-       e.on("end", function () {
 
-         console.error(e.fields)
 
-         throw "break"
 
-       })
 
-     }
 
-     t.has(e.props, wanted[1], "properties "+wanted[1].path)
 
-     if (wanted[2]) {
 
-       e.on("end", function () {
 
-         if (!e.fields) {
 
-           t.ok(e.fields, "should get fields")
 
-         } else {
 
-           t.has(e.fields, wanted[2], "should get expected fields")
 
-         }
 
-       })
 
-     }
 
-   })
 
-   reader.pipe(pack)
 
-   writer.on("close", function () {
 
-     t.equal(entry, entries.length, "should get all expected entries")
 
-     t.pass("it finished")
 
-     t.end()
 
-   })
 
- }
 
 
  |