fs: make writeFile consistent with readFile wrt fd · nodejs/node@8f4b924 (original) (raw)

1

1

`'use strict';

`

2

``

`-

require('../common');

`

``

2

`+

const common = require('../common');

`

3

3

``

4

4

`// Test fs.readFile using a file descriptor.

`

5

5

``

6

6

`const fixtures = require('../common/fixtures');

`

7

7

`const assert = require('assert');

`

8

8

`const fs = require('fs');

`

9

9

`const fn = fixtures.path('empty.txt');

`

``

10

`+

const join = require('path').join;

`

``

11

`+

const tmpdir = require('../common/tmpdir');

`

``

12

`+

tmpdir.refresh();

`

10

13

``

11

14

`tempFd(function(fd, close) {

`

12

15

`fs.readFile(fd, function(err, data) {

`

`@@ -46,3 +49,48 @@ function tempFdSync(callback) {

`

46

49

`callback(fd);

`

47

50

`fs.closeSync(fd);

`

48

51

`}

`

``

52

+

``

53

`+

{

`

``

54

`+

/*

`

``

55

`` +

``

``

56

`+

`

``

57

`+

`

``

58

`+

*/

`

``

59

+

``

60

`+

const filename = join(tmpdir.path, 'test.txt');

`

``

61

`+

fs.writeFileSync(filename, 'Hello World');

`

``

62

+

``

63

`+

{

`

``

64

`+

/* Tests the fs.readFileSync(). */

`

``

65

`+

const fd = fs.openSync(filename, 'r');

`

``

66

+

``

67

`+

/* Read only five bytes, so that the position moves to five. */

`

``

68

`+

const buf = Buffer.alloc(5);

`

``

69

`+

assert.deepStrictEqual(fs.readSync(fd, buf, 0, 5), 5);

`

``

70

`+

assert.deepStrictEqual(buf.toString(), 'Hello');

`

``

71

+

``

72

`+

/* readFileSync() should read from position five, instead of zero. */

`

``

73

`+

assert.deepStrictEqual(fs.readFileSync(fd).toString(), ' World');

`

``

74

`+

}

`

``

75

+

``

76

`+

{

`

``

77

`+

/* Tests the fs.readFile(). */

`

``

78

`+

fs.open(filename, 'r', common.mustCall((err, fd) => {

`

``

79

`+

assert.ifError(err);

`

``

80

`+

const buf = Buffer.alloc(5);

`

``

81

+

``

82

`+

/* Read only five bytes, so that the position moves to five. */

`

``

83

`+

fs.read(fd, buf, 0, 5, null, common.mustCall((err, bytes) => {

`

``

84

`+

assert.ifError(err);

`

``

85

`+

assert.strictEqual(bytes, 5);

`

``

86

`+

assert.deepStrictEqual(buf.toString(), 'Hello');

`

``

87

+

``

88

`+

fs.readFile(fd, common.mustCall((err, data) => {

`

``

89

`+

assert.ifError(err);

`

``

90

`+

/* readFile() should read from position five, instead of zero. */

`

``

91

`+

assert.deepStrictEqual(data.toString(), ' World');

`

``

92

`+

}));

`

``

93

`+

}));

`

``

94

`+

}));

`

``

95

`+

}

`

``

96

`+

}

`