| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- #!/usr/bin/env node
 
- var concat = require('concat-stream')
 
- var cp = require('child_process')
 
- var fs = require('fs')
 
- var hyperquest = require('hyperquest')
 
- var path = require('path')
 
- var split = require('split')
 
- var through = require('through2')
 
- var url = 'https://api.github.com/repos/nodejs/node/contents'
 
- var dirs = [
 
-   '/test/parallel',
 
-   '/test/pummel'
 
- ]
 
- cp.execSync('rm -rf node/*.js', { cwd: path.join(__dirname, '../test') })
 
- var httpOpts = {
 
-   headers: {
 
-     'User-Agent': null
 
-     // auth if github rate-limits you...
 
-     // 'Authorization': 'Basic ' + Buffer('username:password').toString('base64'),
 
-   }
 
- }
 
- dirs.forEach(function (dir) {
 
-   var req = hyperquest(url + dir, httpOpts)
 
-   req.pipe(concat(function (data) {
 
-     if (req.response.statusCode !== 200) {
 
-       throw new Error(url + dir + ': ' + data.toString())
 
-     }
 
-     downloadBufferTests(dir, JSON.parse(data))
 
-   }))
 
- })
 
- function downloadBufferTests (dir, files) {
 
-   files.forEach(function (file) {
 
-     if (!/test-buffer.*/.test(file.name)) return
 
-     if (file.name === 'test-buffer-fakes.js') {
 
-       // These teses only apply to node, where they're calling into C++ and need to
 
-       // ensure the prototype can't be faked, or else there will be a segfault.
 
-       return
 
-     }
 
-     console.log(file.download_url)
 
-     var out = path.join(__dirname, '../test/node', file.name)
 
-     hyperquest(file.download_url, httpOpts)
 
-       .pipe(split())
 
-       .pipe(testfixer(file.name))
 
-       .pipe(fs.createWriteStream(out))
 
-       .on('finish', function () {
 
-         console.log('wrote ' + file.name)
 
-       })
 
-   })
 
- }
 
- function testfixer (filename) {
 
-   var firstline = true
 
-   return through(function (line, enc, cb) {
 
-     line = line.toString()
 
-     if (firstline) {
 
-       // require buffer explicitly
 
-       var preamble = 'var Buffer = require(\'../../\').Buffer;\n'
 
-       if (/use strict/.test(line)) line += '\n' + preamble
 
-       else line + preamble + '\n' + line
 
-       firstline = false
 
-     }
 
-     // use `var` instead of `const`/`let`
 
-     line = line.replace(/(const|let) /g, 'var ')
 
-     // make `var common = require('common')` work
 
-     line = line.replace(/(var common = require.*)/g, 'var common = { skip: function () {} };')
 
-     // make `require('../common')` work
 
-     line = line.replace(/require\('\.\.\/common'\);/g, '')
 
-     // require browser buffer
 
-     line = line.replace(/(.*)require\('buffer'\)(.*)/g, '$1require(\'../../\')$2')
 
-     // comment out console logs
 
-     line = line.replace(/(.*console\..*)/g, '// $1')
 
-     // we can't reliably test typed array max-sizes in the browser
 
-     if (filename === 'test-buffer-big.js') {
 
-       line = line.replace(/(.*new Int8Array.*RangeError.*)/, '// $1')
 
-       line = line.replace(/(.*new ArrayBuffer.*RangeError.*)/, '// $1')
 
-       line = line.replace(/(.*new Float64Array.*RangeError.*)/, '// $1')
 
-     }
 
-     // https://github.com/nodejs/node/blob/v0.12/test/parallel/test-buffer.js#L1138
 
-     // unfortunately we can't run this because crypto-browserify doesn't work in old
 
-     // versions of ie
 
-     if (filename === 'test-buffer.js') {
 
-       line = line.replace(/^(\s*)(var crypto = require.*)/, '$1// $2')
 
-       line = line.replace(/(crypto.createHash.*\))/, '1 /*$1*/')
 
-     }
 
-     cb(null, line + '\n')
 
-   })
 
- }
 
 
  |