<commit_before>
var request = require('../../')
  , express = require('express')
  , assert = require('assert')
  , app = express()
  , fs = require('fs');

function read(file) {
  return fs.readFileSync(file, 'utf8');
}

app.post('/echo', function(req, res){
  res.writeHead(200, req.headers);
  req.pipe(res);
});

app.listen(3005);

// function boundary(ct) {
//   return ct.match(/boundary="(.*)"/)[1];
// }

describe('Request', function(){
//   describe('#part()', function(){
//     it('should return a new Part', function(){
//       var req = request.post('http://localhost:3005');
//       req.part().constructor.name.should.equal('Part');
//       req.part().constructor.name.should.equal('Part');
//       req.part().should.not.equal(req.part());
//     })
//   })

//   it('should default res.files to {}', function(done){
//     var req = request.post('http://localhost:3005/echo');

//     req.end(function(err, res){
//       if (err) return done(err);
//       res.files.should.eql({});
//       res.body.should.eql({});
//       done();
//     });
//   })

//   describe('#field(name, value)', function(){
//     it('should set a multipart field value', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.field('user[name]', 'tobi');
//       req.field('user[age]', '2');
//       req.field('user[species]', 'ferret');

//       req.end(function(err, res){
//         if (err) return done(err);
//         res.body['user[name]'].should.equal('tobi');
//         res.body['user[age]'].should.equal('2');
//         res.body['user[species]'].should.equal('ferret');
//         done();
//       });
//     })

//     it('should work with file attachments', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.field('name', 'Tobi');
//       req.attach('document', 'test/node/fixtures/user.html');
//       req.field('species', 'ferret');

//       req.end(function(err, res){
//         if (err) return done(err);
//         res.body.name.should.equal('Tobi');
//         res.body.species.should.equal('ferret');

//         var html = res.files.document;
//         html.name.should.equal('user.html');
//         html.type.should.equal('text/html');
//         read(html.path).should.equal('<h1>name</h1>');
//         done();
//       })
//     })
//   })

//   describe('#attach(name, path)', function(){
//     it('should attach a file', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.attach('one', 'test/node/fixtures/user.html');
//       req.attach('two', 'test/node/fixtures/user.json');
//       req.attach('three', 'test/node/fixtures/user.txt');

//       req.end(function(err, res){
//         if (err) return done(err);
//         var html = res.files.one;
//         var json = res.files.two
//         var text = res.files.three;

//         html.name.should.equal('user.html');
//         html.type.should.equal('text/html');
//         read(html.path).should.equal('<h1>name</h1>');

//         json.name.should.equal('user.json');
//         json.type.should.equal('application/json');
//         read(json.path).should.equal('{"name":"tobi"}');

//         text.name.should.equal('user.txt');
//         text.type.should.equal('text/plain');
//         read(text.path).should.equal('Tobi');

//         done();
//       })
//     })

//     describe('when a file does not exist', function(){
//       it('should emit an error', function(done){
//         var req = request.post('http://localhost:3005/echo');

//         req.attach('name', 'foo');
//         req.attach('name2', 'bar');
//         req.attach('name3', 'baz');

//         req.on('error', function(err){
//           err.message.should.include('ENOENT');
//           err.path.should.equal('foo');
//           done();
//         });

//         req.end(function(err, res){
//           if (err) return done(err);
//           assert(0, 'end() was called');
//         });
//       })
//     })
//   })

  describe('#attach(name, path, filename)', function(){
    it('should use the custom filename', function(done){
      request
      .post(':3005/echo')
      .attach('document', 'test/node/fixtures/user.html', 'doc.html')
      .end(function(err, res){
        if (err) return done(err);
        var html = res.files.document;
        html.name.should.equal('doc.html');
        html.type.should.equal('text/html');
        read(html.path).should.equal('<h1>name</h1>');
        done();
      })
    })
    it('should fire progress event', function(done){
      var loaded = 0;
      var total = 0;
      var direction = '';
      request
      .post(':3005/echo')
      .attach('document', 'test/node/fixtures/user.html')
      .on('progress', function (event) {
        total = event.total;
        loaded = event.loaded;
        direction = event.direction;
      })
      .end(function(err, res){
        if (err) return done(err);
        var html = res.files.document;
        html.name.should.equal('user.html');
        html.type.should.equal('text/html');
        read(html.path).should.equal('<h1>name</h1>');
        total.should.equal(221);
        loaded.should.equal(221);
        direction.should.equal('upload');
        done();
      })<commit_msg>Make 'progress' event test forwards-compatible<commit_after>
var request = require('../../')
  , express = require('express')
  , assert = require('assert')
  , app = express()
  , fs = require('fs');

function read(file) {
  return fs.readFileSync(file, 'utf8');
}

app.post('/echo', function(req, res){
  res.writeHead(200, req.headers);
  req.pipe(res);
});

app.listen(3005);

// function boundary(ct) {
//   return ct.match(/boundary="(.*)"/)[1];
// }

describe('Request', function(){
//   describe('#part()', function(){
//     it('should return a new Part', function(){
//       var req = request.post('http://localhost:3005');
//       req.part().constructor.name.should.equal('Part');
//       req.part().constructor.name.should.equal('Part');
//       req.part().should.not.equal(req.part());
//     })
//   })

//   it('should default res.files to {}', function(done){
//     var req = request.post('http://localhost:3005/echo');

//     req.end(function(err, res){
//       if (err) return done(err);
//       res.files.should.eql({});
//       res.body.should.eql({});
//       done();
//     });
//   })

//   describe('#field(name, value)', function(){
//     it('should set a multipart field value', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.field('user[name]', 'tobi');
//       req.field('user[age]', '2');
//       req.field('user[species]', 'ferret');

//       req.end(function(err, res){
//         if (err) return done(err);
//         res.body['user[name]'].should.equal('tobi');
//         res.body['user[age]'].should.equal('2');
//         res.body['user[species]'].should.equal('ferret');
//         done();
//       });
//     })

//     it('should work with file attachments', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.field('name', 'Tobi');
//       req.attach('document', 'test/node/fixtures/user.html');
//       req.field('species', 'ferret');

//       req.end(function(err, res){
//         if (err) return done(err);
//         res.body.name.should.equal('Tobi');
//         res.body.species.should.equal('ferret');

//         var html = res.files.document;
//         html.name.should.equal('user.html');
//         html.type.should.equal('text/html');
//         read(html.path).should.equal('<h1>name</h1>');
//         done();
//       })
//     })
//   })

//   describe('#attach(name, path)', function(){
//     it('should attach a file', function(done){
//       var req = request.post('http://localhost:3005/echo');

//       req.attach('one', 'test/node/fixtures/user.html');
//       req.attach('two', 'test/node/fixtures/user.json');
//       req.attach('three', 'test/node/fixtures/user.txt');

//       req.end(function(err, res){
//         if (err) return done(err);
//         var html = res.files.one;
//         var json = res.files.two
//         var text = res.files.three;

//         html.name.should.equal('user.html');
//         html.type.should.equal('text/html');
//         read(html.path).should.equal('<h1>name</h1>');

//         json.name.should.equal('user.json');
//         json.type.should.equal('application/json');
//         read(json.path).should.equal('{"name":"tobi"}');

//         text.name.should.equal('user.txt');
//         text.type.should.equal('text/plain');
//         read(text.path).should.equal('Tobi');

//         done();
//       })
//     })

//     describe('when a file does not exist', function(){
//       it('should emit an error', function(done){
//         var req = request.post('http://localhost:3005/echo');

//         req.attach('name', 'foo');
//         req.attach('name2', 'bar');
//         req.attach('name3', 'baz');

//         req.on('error', function(err){
//           err.message.should.include('ENOENT');
//           err.path.should.equal('foo');
//           done();
//         });

//         req.end(function(err, res){
//           if (err) return done(err);
//           assert(0, 'end() was called');
//         });
//       })
//     })
//   })

  describe('#attach(name, path, filename)', function(){
    it('should use the custom filename', function(done){
      request
      .post(':3005/echo')
      .attach('document', 'test/node/fixtures/user.html', 'doc.html')
      .end(function(err, res){
        if (err) return done(err);
        var html = res.files.document;
        html.name.should.equal('doc.html');
        html.type.should.equal('text/html');
        read(html.path).should.equal('<h1>name</h1>');
        done();
      })
    })
    it('should fire progress event', function(done){
      var loaded = 0;
      var total = 0;
      var uploadEventWasFired = false;
      request
      .post(':3005/echo')
      .attach('document', 'test/node/fixtures/user.html')
      .on('progress', function (event) {
        total = event.total;
        loaded = event.loaded;
        if (event.direction === 'upload') {
          uploadEventWasFired = true;
        }
      })
      .end(function(err, res){
        if (err) return done(err);
        var html = res.files.document;
        html.name.should.equal('user.html');
        html.type.should.equal('text/html');
        read(html.path).should.equal('<h1>name</h1>');
        total.should.equal(221);
        loaded.should.equal(221);
        uploadEventWasFired.should.equal(true);
        done();
      })
{'fraction_non_alphanumeric': 0.22199383350462487, 'fraction_numerical': 0.01158553676539288, 'mean_word_length': 2.153800824985268, 'pattern_counts': {'":': 2, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6237669', 'n_tokens_mistral': 3482, 'n_tokens_neox': 3404, 'n_words': 544}