Ejemplo n.º 1
0
    updateMetadata(fd, file, function(err, fd2) {
      expect(fchmodSpy.calls.length).toEqual(1);
      var stats = fs.fstatSync(fd);
      expect(file.stat.mode).toEqual(stats.mode);

      fs.close(fd2, done);
    });
Ejemplo n.º 2
0
function copyFileSync (srcFile, destFile, options) {
  var clobber = options.clobber
  var preserveTimestamps = options.preserveTimestamps

  if (fs.existsSync(destFile)) {
    if (clobber) {
      fs.chmodSync(destFile, parseInt('777', 8))
      fs.unlinkSync(destFile)
    } else {
      throw Error('EEXIST')
    }
  }

  var fdr = fs.openSync(srcFile, 'r')
  var stat = fs.fstatSync(fdr)
  var fdw = fs.openSync(destFile, 'w', stat.mode)
  var bytesRead = 1
  var pos = 0

  while (bytesRead > 0) {
    bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos)
    fs.writeSync(fdw, _buff, 0, bytesRead)
    pos += bytesRead
  }

  if (preserveTimestamps) {
    fs.futimesSync(fdw, stat.atime, stat.mtime)
  }

  fs.closeSync(fdr)
  fs.closeSync(fdw)
}
Ejemplo n.º 3
0
  it('updates the vinyl object with fs stats', function(done) {
    if (isWindows) {
      this.skip();
      return;
    }

    var file = new File({
      base: outputBase,
      path: outputPath,
      contents: null,
      stat: {},
    });

    var fd = fs.openSync(outputPath, 'w+');
    var stats = fs.fstatSync(fd);

    updateMetadata(fd, file, function() {
      // Not sure why .toEqual doesn't match these
      Object.keys(file.stat).forEach(function(key) {
        expect(file.stat[key]).toEqual(stats[key]);
      });

      fs.close(fd, done);
    });
  });
Ejemplo n.º 4
0
    updateMetadata(fd, file, function() {
      expect(futimesSpy.calls.length).toEqual(1);
      var stats = fs.fstatSync(fd);

      expect(file.stat.mtime).toEqual(new Date(mtimeEarlier));
      expect(stats.mtime.getTime()).toEqual(mtimeEarlier);
      expect(file.stat.atime).toEqual(new Date(atimeEarlier));
      expect(stats.atime.getTime()).toEqual(atimeEarlier);

      fs.close(fd, done);
    });
Ejemplo n.º 5
0
    updateMetadata(fd, file, function(err, fd2) {
      expect(futimesSpy.calls.length).toEqual(1);
      var stats = fs.fstatSync(fd);
      var mtimeMs = Date.parse(file.stat.mtime);
      var mtime = resolution ? mtimeMs - (mtimeMs % resolution) : mtimeMs;
      var atimeMs = Date.parse(file.stat.atime);
      var atime = resolution ? atimeMs - (atimeMs % resolution) : atimeMs;
      expect(file.stat.mtime).toEqual(new Date(then));
      expect(mtime).toEqual(Date.parse(stats.mtime));
      expect(file.stat.atime).toEqual(new Date(then));
      expect(atime).toEqual(Date.parse(stats.atime));

      fs.close(fd2, done);
    });
Ejemplo n.º 6
0
  it('updates the vinyl object with fs stats', function(done) {
    if (isWindows) {
      this.skip();
      return;
    }

    var fd = fs.openSync(inputPath, 'w+');
    var stats = fs.fstatSync(fd);

    updateMetadata(fd, file, function(err, fd2) {
      // Not sure why .toEqual doesn't match these
      Object.keys(file.stat).forEach(function(key) {
        expect(file.stat[key]).toEqual(stats[key]);
      });

      fs.close(fd2, done);
    });
  });
Ejemplo n.º 7
0
    function readData() {
      readOffsetEnd = fs.fstatSync(fd).size;
      if (readOffsetEnd == readOffsetStart) {
        if (options.isStillGrowing()) {
          // if reading the file is faster than writing it
          setTimeout(readData, options.pollingRate);
        } else {
          fs.closeSync(fd);
          options.endCallback();
        }
        return;
      }
      buffer = new Buffer(readOffsetEnd - readOffsetStart);
      fs.read(fd, buffer, 0, buffer.length, readOffsetStart, function (err, bytesRead, buffer) {
        options.onData(buffer);
        readOffsetStart += bytesRead;
        setTimeout(readData, options.pollingRate);
      });

    }
Ejemplo n.º 8
0
module.exports.sync = function (src, dest, opts) {
	if (!src || !dest) {
		throw new CpFileError('`src` and `dest` required');
	}

	opts = objectAssign({overwrite: true}, opts);

	var read;
	var bytesRead;
	var pos;
	var write;
	var stat;
	var BUF_LENGTH = 100 * 1024;
	var buf = new Buffer(BUF_LENGTH);

	function readSync(pos) {
		try {
			return fs.readSync(read, buf, 0, BUF_LENGTH, pos);
		} catch (err) {
			throw new CpFileError('cannot read from `' + src + '`: ' + err.message, err);
		}
	}

	function writeSync() {
		try {
			fs.writeSync(write, buf, 0, bytesRead);
		} catch (err) {
			throw new CpFileError('cannot write to `' + dest + '`: ' + err.message, err);
		}
	}

	try {
		read = fs.openSync(src, 'r');
	} catch (err) {
		throw new CpFileError('cannot open `' + src + '`: ' + err.message, err);
	}

	pos = bytesRead = readSync(0);

	try {
		mkdirp.sync(path.dirname(dest));
	} catch (err) {
		if (err.code !== 'EEXIST') {
			throw new CpFileError('cannot create directory `' + path.dirname(dest) + '`: ' + err.message, err);
		}
	}

	try {
		write = fs.openSync(dest, opts.overwrite ? 'w' : 'wx');
	} catch (err) {
		if (!opts.overwrite && err.code === 'EEXIST') {
			return;
		}

		throw new CpFileError('cannot write to `' + dest + '`: ' + err.message, err);
	}

	writeSync();

	while (bytesRead === BUF_LENGTH) {
		bytesRead = readSync(pos);
		writeSync();
		pos += bytesRead;
	}

	try {
		stat = fs.fstatSync(read);
	} catch (err) {
		throw new CpFileError('stat `' + src + '` failed: ' + err.message, err);
	}

	try {
		fs.futimesSync(write, stat.atime, stat.mtime);
	} catch (err) {
		throw new CpFileError('utimes `' + dest + '` failed: ' + err.message, err);
	}

	fs.closeSync(read);
	fs.closeSync(write);
};