mirror of
https://github.com/hanzoai/Detox.git
synced 2026-09-24 16:55:12 +00:00
Replace node-module 'tempfile' seamlessly with 'tmp' (#4777)
This commit is contained in:
@@ -2,9 +2,10 @@ const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
const yargs = require('yargs');
|
||||
|
||||
const tempfile = require('../src/utils/tempfile');
|
||||
|
||||
function callCli(modulePath, cmd) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const originalModule = require(path.join(__dirname, '../local-cli', modulePath));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const { callCli } = require('../__tests__/helpers');
|
||||
const tempfile = require('../src/utils/tempfile');
|
||||
|
||||
|
||||
describe('build', () => {
|
||||
let execSync, detox;
|
||||
|
||||
@@ -659,7 +659,8 @@ describe('CLI', () => {
|
||||
// Helpers
|
||||
|
||||
function tempfile(extension, content) {
|
||||
const tempFilePath = require('tempfile')(extension);
|
||||
const _tempfile = require('../src/utils/tempfile');
|
||||
const tempFilePath = _tempfile(extension);
|
||||
|
||||
fs.ensureFileSync(tempFilePath);
|
||||
if (content) {
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@
|
||||
"stream-json": "^1.7.4",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"telnet-client": "1.2.8",
|
||||
"tempfile": "^2.0.0",
|
||||
"tmp": "^0.2.1",
|
||||
"trace-event-lib": "^1.3.1",
|
||||
"which": "^1.3.1",
|
||||
"ws": "^7.0.0",
|
||||
|
||||
@@ -9,7 +9,7 @@ describe('AndroidExpect', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
jest.mock('../utils/logger');
|
||||
jest.mock('tempfile');
|
||||
jest.mock('../utils/tempfile');
|
||||
jest.mock('fs-extra');
|
||||
|
||||
mockExecutor = new MockExecutor();
|
||||
@@ -341,7 +341,7 @@ describe('AndroidExpect', () => {
|
||||
mockExecutor.executeResult = Promise.resolve(invokeResultInBase64);
|
||||
|
||||
fs = require('fs-extra');
|
||||
tempfile = require('tempfile');
|
||||
tempfile = require('../utils/tempfile');
|
||||
tempfile.mockReturnValue(tempFilePath);
|
||||
|
||||
_element = e.element(e.by.id('FancyElement'));
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
|
||||
const DetoxRuntimeError = require('../../errors/DetoxRuntimeError');
|
||||
const invoke = require('../../invoke');
|
||||
const { removeMilliseconds } = require('../../utils/dateUtils');
|
||||
const { actionDescription } = require('../../utils/invocationTraceDescriptions');
|
||||
const mapLongPressArguments = require('../../utils/mapLongPressArguments');
|
||||
const tempfile = require('../../utils/tempfile');
|
||||
const actions = require('../actions/native');
|
||||
const DetoxMatcherApi = require('../espressoapi/DetoxMatcher');
|
||||
const { ActionInteraction } = require('../interactions/native');
|
||||
|
||||
@@ -5,9 +5,10 @@ const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const childProcess = require('../../../utils/childProcess');
|
||||
const tempfile = require('../../../utils/tempfile');
|
||||
|
||||
|
||||
describe('SimulatorLogPlugin', () => {
|
||||
async function majorWorkflow() {
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const appendFile = require('../../../utils/appendFile');
|
||||
const tempfile = require('../../../utils/tempfile');
|
||||
|
||||
|
||||
const Artifact = require('./Artifact');
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const tempfile = require('../../../utils/tempfile');
|
||||
|
||||
describe('FileArtifact', () => {
|
||||
let FileArtifact, fileArtifact, logger, temporaryPath, temporaryData, destinationPath;
|
||||
|
||||
@@ -3,9 +3,10 @@ const { promisify } = require('util');
|
||||
|
||||
const glob = require('glob');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const { useForwardSlashes } = require('../../utils/shellUtils');
|
||||
const tempfile = require('../../utils/tempfile');
|
||||
|
||||
|
||||
const globSync = glob.sync;
|
||||
const globAsync = promisify(glob);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const tempfile = require('../../utils/tempfile');
|
||||
|
||||
const temporaryPath = require('./temporaryPath');
|
||||
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
jest.useFakeTimers('modern');
|
||||
|
||||
const { serializeError } = require('serialize-error');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
|
||||
const { validSession } = require('../configuration/configurations.mock');
|
||||
const Deferred = require('../utils/Deferred');
|
||||
const tempfile = require('../utils/tempfile');
|
||||
|
||||
const actions = require('./actions/actions');
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const tempfile = require('../../utils/tempfile');
|
||||
|
||||
const DeviceRegistry = require('./DeviceRegistry'); // Adjust the path to your actual file
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
|
||||
const { assertTraceDescription, assertEnum, assertNormalized } = require('../utils/assertArgument');
|
||||
const { removeMilliseconds } = require('../utils/dateUtils');
|
||||
@@ -11,6 +11,7 @@ const { actionDescription, expectDescription } = require('../utils/invocationTra
|
||||
const { isRegExp } = require('../utils/isRegExp');
|
||||
const log = require('../utils/logger').child({ cat: 'ws-client, ws' });
|
||||
const mapLongPressArguments = require('../utils/mapLongPressArguments');
|
||||
const tempfile = require('../utils/tempfile');
|
||||
const traceInvocationCall = require('../utils/traceInvocationCall').bind(null, log);
|
||||
|
||||
const { systemElement, systemMatcher, systemExpect, isSystemElement } = require('./system');
|
||||
|
||||
@@ -11,8 +11,8 @@ describe('expectTwo', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
jest.mock('../utils/logger');
|
||||
jest.mock('../utils/tempfile');
|
||||
jest.mock('fs-extra');
|
||||
jest.mock('tempfile');
|
||||
|
||||
fs = require('fs-extra');
|
||||
const IosExpect = require('./expectTwo');
|
||||
@@ -690,7 +690,7 @@ describe('expectTwo', () => {
|
||||
screenshotPath: deviceTmpFilePath,
|
||||
});
|
||||
|
||||
require('tempfile').mockReturnValue(tmpFilePath);
|
||||
require('../utils/tempfile').mockReturnValue(tmpFilePath);
|
||||
result = await e.element(e.by.id('uniqueId')).takeScreenshot(imageName);
|
||||
});
|
||||
|
||||
|
||||
@@ -8,9 +8,10 @@ const os = require('os');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const sleep = require('../utils/sleep');
|
||||
const tempfile = require('../utils/tempfile');
|
||||
|
||||
|
||||
jest.retryTimes(2);
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ const { PassThrough } = require('stream');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const glob = require('glob');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const temporary = require('../../artifacts/utils/temporaryPath');
|
||||
const tempfile = require('../../utils/tempfile');
|
||||
const DetoxLogger = require('../DetoxLogger');
|
||||
|
||||
const DetoxLogFinalizer = require('./DetoxLogFinalizer');
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const tempfile = require('../../../utils/tempfile');
|
||||
|
||||
describe('BunyanTransformer', () => {
|
||||
/** @type {import('./BunyanTransformer')} */
|
||||
|
||||
@@ -2,9 +2,10 @@ jest.mock('proper-lockfile');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const plock = require('proper-lockfile');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const ExclusiveLockFile = require('./ExclusiveLockfile');
|
||||
const tempfile = require('./tempfile');
|
||||
|
||||
|
||||
describe('ExclusiveLockFile', () => {
|
||||
let filePath;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const appendFile = require('./appendFile');
|
||||
const tempfile = require('./tempfile');
|
||||
|
||||
|
||||
describe('appendFile', () => {
|
||||
let src, dest;
|
||||
|
||||
@@ -3,7 +3,8 @@ const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const tempfile = require('./tempfile');
|
||||
|
||||
describe('Environment', () => {
|
||||
let Environment;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
const path = require('path');
|
||||
|
||||
const fs = require('fs-extra');
|
||||
const tempfile = require('tempfile');
|
||||
|
||||
const fsext = require('./fsext');
|
||||
const tempfile = require('./tempfile');
|
||||
|
||||
|
||||
test('isDirEmptySync', async () => {
|
||||
const tempDir = tempfile();
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
const tmp = require('tmp');
|
||||
|
||||
tmp.setGracefulCleanup();
|
||||
|
||||
/**
|
||||
* Creates a temporary file path. If extension is provided, it will be appended to the path.
|
||||
* @param {string} [extension] - Optional file extension to append to the temporary file path
|
||||
* @returns {string} Path to a temporary file
|
||||
*/
|
||||
module.exports = function(extension) {
|
||||
const _extension = (extension && extension.startsWith('.'))
|
||||
? extension
|
||||
: (extension && `.${extension}`);
|
||||
|
||||
return tmp.tmpNameSync({
|
||||
template: `detox-${process.pid}-XXXXXX${_extension || ''}`,
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,72 @@
|
||||
describe('tempfile', () => {
|
||||
let tmp;
|
||||
let tempfile;
|
||||
|
||||
describe('in full integration with tmp module', () => {
|
||||
beforeEach(() => {
|
||||
jest.restoreAllMocks();
|
||||
tempfile = require('./tempfile');
|
||||
});
|
||||
|
||||
it('should work with the real tmp module', () => {
|
||||
const tmpdir = require('node:os').tmpdir();
|
||||
const path = require('node:path');
|
||||
|
||||
const expectedFile = path.join(tmpdir, `detox-${process.pid}-[a-zA-Z0-9]+.log`).replace(/\\/g, '\\\\');
|
||||
const expectedResult = new RegExp(`^${expectedFile}$`);
|
||||
|
||||
const result = tempfile('.log');
|
||||
expect(result).toMatch(expectedResult);
|
||||
});
|
||||
});
|
||||
|
||||
describe('with mocked tmp module', () => {
|
||||
beforeEach(() => {
|
||||
jest.mock('tmp');
|
||||
tmp = require('tmp');
|
||||
tempfile = require('./tempfile');
|
||||
});
|
||||
|
||||
const expectTmpCalled = ({ withExtension = '' } = {}) => {
|
||||
const template = `detox-${process.pid}-XXXXXX${withExtension}`;
|
||||
expect(tmp.tmpNameSync).toHaveBeenCalledWith({ template });
|
||||
};
|
||||
|
||||
it(`should enable tmp's graceful cleanup`, () => {
|
||||
expect(tmp.setGracefulCleanup).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should return the value from tmp.tmpNameSync', () => {
|
||||
const mockPath = '/tmp/detox-123-abc123';
|
||||
tmp.tmpNameSync.mockReturnValueOnce(mockPath);
|
||||
|
||||
const result = tempfile();
|
||||
expect(result).toEqual(mockPath);
|
||||
});
|
||||
|
||||
it('should create a temporary file path without extension', () => {
|
||||
tempfile();
|
||||
expectTmpCalled();
|
||||
});
|
||||
|
||||
it('should create a temporary file path with extension', () => {
|
||||
tempfile('txt');
|
||||
expectTmpCalled({ withExtension: '.txt' });
|
||||
});
|
||||
|
||||
it('should handle extension with leading dot', () => {
|
||||
tempfile('.txt');
|
||||
expectTmpCalled({ withExtension: '.txt' });
|
||||
});
|
||||
|
||||
it('should handle empty extension', () => {
|
||||
tempfile('');
|
||||
expectTmpCalled();
|
||||
});
|
||||
|
||||
it('should handle undefined extension', () => {
|
||||
tempfile();
|
||||
expectTmpCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
const temporaryPath = require('detox/src/artifacts/utils/temporaryPath');
|
||||
const DeviceDriverBase = require('detox/src/devices/runtime/drivers/DeviceDriverBase');
|
||||
const tempfile = require('tempfile');
|
||||
const tempfile = require('../../../src/utils/tempfile');
|
||||
|
||||
const {
|
||||
sleepSomeTime,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const path = require('path');
|
||||
|
||||
const _ = require('lodash');
|
||||
const tempfile = require('tempfile');
|
||||
const tempfile = require('../../src/utils/tempfile');
|
||||
const fs = require('fs-extra');
|
||||
const { promisify } = require('util');
|
||||
const { execCommand } = require('./utils/exec');
|
||||
|
||||
Reference in New Issue
Block a user