Skip to content

Commit 75b4c7d

Browse files
committed
Replace node-module 'tempfile' seamlessly with 'tmp'
1 parent c8724e6 commit 75b4c7d

21 files changed

+91
-20
lines changed

detox/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
"strip-ansi": "^6.0.1",
100100
"telnet-client": "1.2.8",
101101
"tempfile": "^2.0.0",
102+
"tmp": "^0.2.1",
102103
"trace-event-lib": "^1.3.1",
103104
"which": "^1.3.1",
104105
"ws": "^7.0.0",

detox/src/android/AndroidExpect.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('AndroidExpect', () => {
99

1010
beforeEach(() => {
1111
jest.mock('../utils/logger');
12-
jest.mock('tempfile');
12+
jest.mock('../utils/tempfile');
1313
jest.mock('fs-extra');
1414

1515
mockExecutor = new MockExecutor();
@@ -341,7 +341,7 @@ describe('AndroidExpect', () => {
341341
mockExecutor.executeResult = Promise.resolve(invokeResultInBase64);
342342

343343
fs = require('fs-extra');
344-
tempfile = require('tempfile');
344+
tempfile = require('../utils/tempfile');
345345
tempfile.mockReturnValue(tempFilePath);
346346

347347
_element = e.element(e.by.id('FancyElement'));

detox/src/android/core/NativeElement.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path');
22

33
const fs = require('fs-extra');
4-
const tempfile = require('tempfile');
4+
const tempfile = require('../../utils/tempfile');
55

66
const DetoxRuntimeError = require('../../errors/DetoxRuntimeError');
77
const invoke = require('../../invoke');

detox/src/artifacts/log/ios/SimulatorLogPlugin.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const path = require('path');
55

66
const fs = require('fs-extra');
77
const _ = require('lodash');
8-
const tempfile = require('tempfile');
8+
const tempfile = require('../../../utils/tempfile');
99

1010
const childProcess = require('../../../utils/childProcess');
1111

detox/src/artifacts/templates/artifact/FileArtifact.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
const path = require('path');
33

44
const fs = require('fs-extra');
5-
const tempfile = require('tempfile');
5+
const tempfile = require('../../../utils/tempfile');
66

77
const appendFile = require('../../../utils/appendFile');
88

detox/src/artifacts/templates/artifact/FileArtifact.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const fs = require('fs-extra');
22
const _ = require('lodash');
3-
const tempfile = require('tempfile');
3+
const tempfile = require('../../../utils/tempfile');
44

55
describe('FileArtifact', () => {
66
let FileArtifact, fileArtifact, logger, temporaryPath, temporaryData, destinationPath;

detox/src/artifacts/utils/temporaryPath.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const { promisify } = require('util');
33

44
const glob = require('glob');
55
const _ = require('lodash');
6-
const tempfile = require('tempfile');
6+
const tempfile = require('../../utils/tempfile');
77

88
const { useForwardSlashes } = require('../../utils/shellUtils');
99

detox/src/artifacts/utils/temporaryPath.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path');
22

33
const fs = require('fs-extra');
4-
const tempfile = require('tempfile');
4+
const tempfile = require('../../utils/tempfile');
55

66
const temporaryPath = require('./temporaryPath');
77

detox/src/client/Client.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
jest.useFakeTimers('modern');
33

44
const { serializeError } = require('serialize-error');
5-
const tempfile = require('tempfile');
5+
const tempfile = require('../utils/tempfile');
66

77
const { validSession } = require('../configuration/configurations.mock');
88
const Deferred = require('../utils/Deferred');

detox/src/devices/allocation/DeviceRegistry.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const fs = require('fs-extra');
2-
const tempfile = require('tempfile');
2+
const tempfile = require('../../utils/tempfile');
33

44
const DeviceRegistry = require('./DeviceRegistry'); // Adjust the path to your actual file
55

detox/src/ios/expectTwo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const path = require('path');
33

44
const fs = require('fs-extra');
55
const _ = require('lodash');
6-
const tempfile = require('tempfile');
6+
const tempfile = require('../utils/tempfile');
77

88
const { assertTraceDescription, assertEnum, assertNormalized } = require('../utils/assertArgument');
99
const { removeMilliseconds } = require('../utils/dateUtils');

detox/src/ios/expectTwo.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ describe('expectTwo', () => {
1111

1212
beforeEach(() => {
1313
jest.mock('../utils/logger');
14+
jest.mock('../utils/tempfile');
1415
jest.mock('fs-extra');
15-
jest.mock('tempfile');
1616

1717
fs = require('fs-extra');
1818
const IosExpect = require('./expectTwo');
@@ -690,7 +690,7 @@ describe('expectTwo', () => {
690690
screenshotPath: deviceTmpFilePath,
691691
});
692692

693-
require('tempfile').mockReturnValue(tmpFilePath);
693+
require('../utils/tempfile').mockReturnValue(tmpFilePath);
694694
result = await e.element(e.by.id('uniqueId')).takeScreenshot(imageName);
695695
});
696696

detox/src/logger/DetoxLogger.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const os = require('os');
88

99
const fs = require('fs-extra');
1010
const _ = require('lodash');
11-
const tempfile = require('tempfile');
11+
const tempfile = require('../utils/tempfile');
1212

1313
const sleep = require('../utils/sleep');
1414

detox/src/logger/utils/DetoxLogFinalizer.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const { PassThrough } = require('stream');
55

66
const fs = require('fs-extra');
77
const glob = require('glob');
8-
const tempfile = require('tempfile');
8+
const tempfile = require('../../utils/tempfile');
99

1010
const temporary = require('../../artifacts/utils/temporaryPath');
1111
const DetoxLogger = require('../DetoxLogger');

detox/src/logger/utils/streams/BunyanTransformer.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const fs = require('fs-extra');
2-
const tempfile = require('tempfile');
2+
const tempfile = require('../../../utils/tempfile');
33

44
describe('BunyanTransformer', () => {
55
/** @type {import('./BunyanTransformer')} */

detox/src/utils/ExclusiveLockfile.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ jest.mock('proper-lockfile');
22

33
const fs = require('fs-extra');
44
const plock = require('proper-lockfile');
5-
const tempfile = require('tempfile');
5+
const tempfile = require('./tempfile');
66

77
const ExclusiveLockFile = require('./ExclusiveLockfile');
88

detox/src/utils/appendFile.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const fs = require('fs-extra');
2-
const tempfile = require('tempfile');
2+
const tempfile = require('./tempfile');
33

44
const appendFile = require('./appendFile');
55

detox/src/utils/environment.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const path = require('path');
33

44
const fs = require('fs-extra');
55
const _ = require('lodash');
6-
const tempfile = require('tempfile');
6+
const tempfile = require('./tempfile');
77

88
describe('Environment', () => {
99
let Environment;

detox/src/utils/fsext.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path');
22

33
const fs = require('fs-extra');
4-
const tempfile = require('tempfile');
4+
const tempfile = require('./tempfile');
55

66
const fsext = require('./fsext');
77

detox/src/utils/tempfile.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const tmp = require('tmp');
2+
3+
tmp.setGracefulCleanup();
4+
5+
/**
6+
* Creates a temporary file path. If extension is provided, it will be appended to the path.
7+
* @param {string} [extension] - Optional file extension to append to the temporary file path
8+
* @returns {string} Path to a temporary file
9+
*/
10+
module.exports = function(extension) {
11+
const _extension = (extension && extension.startsWith('.'))
12+
? extension
13+
: (extension && `.${extension}`);
14+
15+
return tmp.tmpNameSync({
16+
template: `detox-${process.pid}-XXXXXX${_extension || ''}`,
17+
});
18+
};

detox/src/utils/tempfile.test.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
describe('tempfile', () => {
2+
let tmp;
3+
let tempfile;
4+
5+
beforeEach(() => {
6+
jest.mock('tmp');
7+
tmp = require('tmp');
8+
tempfile = require('./tempfile');
9+
});
10+
11+
const expectTmpCalled = (extension = '') => {
12+
const template = `detox-${process.pid}-XXXXXX${extension}`;
13+
expect(tmp.tmpNameSync).toHaveBeenCalledWith({ template });
14+
};
15+
16+
it(`should enable tmp's graceful cleanup`, () => {
17+
expect(tmp.setGracefulCleanup).toHaveBeenCalled();
18+
});
19+
20+
it('should return the value from tmp.tmpNameSync', () => {
21+
const mockPath = '/tmp/detox-123-abc123';
22+
tmp.tmpNameSync.mockReturnValueOnce(mockPath);
23+
24+
const result = tempfile();
25+
expect(result).toEqual(mockPath);
26+
});
27+
28+
it('should create a temporary file path without extension', () => {
29+
tempfile();
30+
expectTmpCalled();
31+
});
32+
33+
it('should create a temporary file path with extension', () => {
34+
tempfile('txt');
35+
expectTmpCalled('.txt');
36+
});
37+
38+
it('should handle extension with leading dot', () => {
39+
tempfile('.txt');
40+
expectTmpCalled('.txt');
41+
});
42+
43+
it('should handle empty extension', () => {
44+
tempfile('');
45+
expectTmpCalled();
46+
});
47+
48+
it('should handle undefined extension', () => {
49+
tempfile();
50+
expectTmpCalled();
51+
});
52+
});

0 commit comments

Comments
 (0)