/
file-sync-test.js
127 lines (114 loc) · 3.8 KB
/
file-sync-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* eslint-disable no-octal */
// vim: expandtab:ts=2:sw=2
var
assert = require('assert'),
fs = require('fs'),
inbandStandardTests = require('./inband-standard'),
assertions = require('./assertions'),
childProcess = require('./child-process').genericChildProcess,
rimraf = require('rimraf'),
tmp = require('../lib/tmp');
// make sure that everything gets cleaned up
tmp.setGracefulCleanup();
describe('tmp', function () {
describe('#fileSync()', function () {
describe('when running inband standard tests', function () {
inbandStandardTests(true, function before() {
this.topic = tmp.fileSync(this.opts);
});
describe('with invalid tries', function () {
it('should result in an error on negative tries', function () {
try {
tmp.fileSync({ tries: -1 });
assert.fail('should have failed');
} catch (err) {
assert.ok(err instanceof Error);
}
});
it('should result in an error on non numeric tries', function () {
try {
tmp.fileSync({ tries: 'nan' });
assert.fail('should have failed');
} catch (err) {
assert.ok(err instanceof Error);
}
});
});
});
describe('when running issue specific inband tests', function () {
it('on issue #182: should not replace empty postfix with ".tmp"', function () {
const tmpobj = tmp.fileSync({ postfix: '' });
assert.ok(!tmpobj.name.endsWith('.tmp'));
});
});
describe('when running standard outband tests', function () {
it('on graceful', function (done) {
childProcess(this, 'graceful-file-sync.json', function (err, stderr, stdout) {
if (err) return done(err);
if (!stderr) return done(new Error('stderr expected'));
try {
assertions.assertDoesNotExist(stdout);
} catch (err) {
rimraf.sync(stdout);
return done(err);
}
done();
});
});
it('on non graceful', function (done) {
childProcess(this, 'non-graceful-file-sync.json', function (err, stderr, stdout) {
if (err) return done(err);
if (!stderr) return done(new Error('stderr expected'));
try {
assertions.assertExists(stdout, true);
} catch (err) {
rimraf.sync(stdout);
return done(err);
}
done();
});
});
it('on keep', function (done) {
childProcess(this, 'keep-file-sync.json', function (err, stderr, stdout) {
if (err) return done(err);
if (stderr) return done(new Error(stderr));
try {
assertions.assertExists(stdout, true);
} catch (err) {
rimraf.sync(stdout);
return done(err);
}
done();
});
});
it('on unlink (keep == false)', function (done) {
childProcess(this, 'unlink-file-sync.json', function (err, stderr, stdout) {
if (err) return done(err);
if (stderr) return done(new Error(stderr));
try {
assertions.assertDoesNotExist(stdout);
} catch (err) {
rimraf.sync(stdout);
return done(err);
}
done();
});
});
});
describe('when running issue specific outband tests', function () {
it('on issue #115', function (done) {
childProcess(this, 'issue115-sync.json', function (err, stderr, stdout) {
if (err) return done(err);
if (stderr) return done(new Error(stderr));
try {
assertions.assertDoesNotExist(stdout);
} catch (err) {
rimraf.sync(stdout);
return done(err);
}
done();
});
});
});
});
});