You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							359 lines
						
					
					
						
							10 KiB
						
					
					
				
			
		
		
	
	
							359 lines
						
					
					
						
							10 KiB
						
					
					
				var tap = require("tap") | 
						|
  , tar = require("../tar.js") | 
						|
  , fs = require("fs") | 
						|
  , path = require("path") | 
						|
  , file = path.resolve(__dirname, "fixtures/c.tar") | 
						|
  , index = 0 | 
						|
 | 
						|
  , expect = | 
						|
[ [ 'entry', | 
						|
    { path: 'c.txt', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 513, | 
						|
      mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), | 
						|
      cksum: 5422, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    undefined ], | 
						|
  [ 'entry', | 
						|
    { path: 'cc.txt', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 513, | 
						|
      mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), | 
						|
      cksum: 5525, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    undefined ], | 
						|
  [ 'entry', | 
						|
    { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 100, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), | 
						|
      cksum: 18124, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    undefined ], | 
						|
  [ 'entry', | 
						|
    { path: 'Ω.txt', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 2, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), | 
						|
      cksum: 5695, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    undefined ], | 
						|
  [ 'extendedHeader', | 
						|
    { path: 'PaxHeader/Ω.txt', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 120, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), | 
						|
      cksum: 6702, | 
						|
      type: 'x', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    { path: 'Ω.txt', | 
						|
      ctime: 1319737909, | 
						|
      atime: 1319739061, | 
						|
      dev: 234881026, | 
						|
      ino: 51693379, | 
						|
      nlink: 1 } ], | 
						|
  [ 'entry', | 
						|
    { path: 'Ω.txt', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 2, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), | 
						|
      cksum: 5695, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '', | 
						|
      ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), | 
						|
      atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), | 
						|
      dev: 234881026, | 
						|
      ino: 51693379, | 
						|
      nlink: 1 }, | 
						|
    undefined ], | 
						|
  [ 'extendedHeader', | 
						|
    { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 353, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 14488, | 
						|
      type: 'x', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      ctime: 1319686868, | 
						|
      atime: 1319741254, | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 1 } ], | 
						|
  [ 'entry', | 
						|
    { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 200, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 14570, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '', | 
						|
      ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 1 }, | 
						|
    undefined ], | 
						|
  [ 'longPath', | 
						|
    { path: '././@LongLink', | 
						|
      mode: 0, | 
						|
      uid: 0, | 
						|
      gid: 0, | 
						|
      size: 201, | 
						|
      mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), | 
						|
      cksum: 4976, | 
						|
      type: 'L', | 
						|
      linkpath: '', | 
						|
      ustar: false }, | 
						|
    '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], | 
						|
  [ 'entry', | 
						|
    { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 1000, | 
						|
      gid: 1000, | 
						|
      size: 201, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), | 
						|
      cksum: 14086, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: false }, | 
						|
    undefined ], | 
						|
  [ 'longLinkpath', | 
						|
    { path: '././@LongLink', | 
						|
      mode: 0, | 
						|
      uid: 0, | 
						|
      gid: 0, | 
						|
      size: 201, | 
						|
      mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), | 
						|
      cksum: 4975, | 
						|
      type: 'K', | 
						|
      linkpath: '', | 
						|
      ustar: false }, | 
						|
    '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], | 
						|
  [ 'longPath', | 
						|
    { path: '././@LongLink', | 
						|
      mode: 0, | 
						|
      uid: 0, | 
						|
      gid: 0, | 
						|
      size: 201, | 
						|
      mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), | 
						|
      cksum: 4976, | 
						|
      type: 'L', | 
						|
      linkpath: '', | 
						|
      ustar: false }, | 
						|
    '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], | 
						|
  [ 'entry', | 
						|
    { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', | 
						|
      mode: 511, | 
						|
      uid: 1000, | 
						|
      gid: 1000, | 
						|
      size: 0, | 
						|
      mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), | 
						|
      cksum: 21603, | 
						|
      type: '2', | 
						|
      linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      ustar: false }, | 
						|
    undefined ], | 
						|
  [ 'extendedHeader', | 
						|
    { path: 'PaxHeader/200-hard', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 143, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 6533, | 
						|
      type: 'x', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    { ctime: 1320617144, | 
						|
      atime: 1320617232, | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 2 } ], | 
						|
  [ 'entry', | 
						|
    { path: '200-hard', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 200, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 5526, | 
						|
      type: '0', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '', | 
						|
      ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), | 
						|
      atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 2 }, | 
						|
    undefined ], | 
						|
  [ 'extendedHeader', | 
						|
    { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 353, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 14488, | 
						|
      type: 'x', | 
						|
      linkpath: '', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '' }, | 
						|
    { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      ctime: 1320617144, | 
						|
      atime: 1320617406, | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 2 } ], | 
						|
  [ 'entry', | 
						|
    { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', | 
						|
      mode: 420, | 
						|
      uid: 24561, | 
						|
      gid: 20, | 
						|
      size: 0, | 
						|
      mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), | 
						|
      cksum: 15173, | 
						|
      type: '1', | 
						|
      linkpath: '200-hard', | 
						|
      ustar: 'ustar\0', | 
						|
      ustarver: '00', | 
						|
      uname: 'isaacs', | 
						|
      gname: 'staff', | 
						|
      devmaj: 0, | 
						|
      devmin: 0, | 
						|
      fill: '', | 
						|
      ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), | 
						|
      atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), | 
						|
      'LIBARCHIVE.creationtime': '1319686852', | 
						|
      dev: 234881026, | 
						|
      ino: 51681874, | 
						|
      nlink: 2 }, | 
						|
    undefined ] ] | 
						|
 | 
						|
 | 
						|
tap.test("parser test", function (t) { | 
						|
  var parser = tar.Parse() | 
						|
 | 
						|
  parser.on("end", function () { | 
						|
    t.equal(index, expect.length, "saw all expected events") | 
						|
    t.end() | 
						|
  }) | 
						|
 | 
						|
  fs.createReadStream(file) | 
						|
    .pipe(parser) | 
						|
    .on("*", function (ev, entry) { | 
						|
      var wanted = expect[index] | 
						|
      if (!wanted) { | 
						|
        return t.fail("Unexpected event: " + ev) | 
						|
      } | 
						|
      var result = [ev, entry.props] | 
						|
      entry.on("end", function () { | 
						|
        result.push(entry.fields || entry.body) | 
						|
 | 
						|
        t.equal(ev, wanted[0], index + " event type") | 
						|
        t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") | 
						|
        if (wanted[2]) { | 
						|
          t.equivalent(result[2], wanted[2], "metadata values") | 
						|
        } | 
						|
        index ++ | 
						|
      }) | 
						|
    }) | 
						|
})
 | 
						|
 |