mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-21 09:35:27 -04:00
67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
const path = require('path');
|
|
|
|
module.exports = {
|
|
/**
|
|
* Create a fake file system to be used in tests. Useful to test
|
|
* things like exports.
|
|
* @param {libGDevelop} gd
|
|
* @param {Record<string, string>} fakeFileContents - Content of files that would be read by the file system.
|
|
* @returns
|
|
*/
|
|
makeFakeAbstractFileSystem: (gd, fakeFileContents) => {
|
|
const fs = new gd.AbstractFileSystemJS();
|
|
fs.mkDir = fs.clearDir = function () {};
|
|
fs.getTempDir = function (path) {
|
|
return '/tmp/';
|
|
};
|
|
fs.fileNameFrom = function (fullPath) {
|
|
return path.posix.basename(fullPath);
|
|
};
|
|
fs.dirNameFrom = function (fullPath) {
|
|
return path.posix.dirname(fullPath);
|
|
};
|
|
fs.makeAbsolute = function (relativePath, baseDirectory) {
|
|
return path.posix.resolve(baseDirectory, relativePath);
|
|
};
|
|
fs.makeRelative = function (absolutePath, baseDirectory) {
|
|
return path.posix.relative(baseDirectory, absolutePath);
|
|
};
|
|
fs.isAbsolute = function (fullPath) {
|
|
return path.posix.isAbsolute(fullPath);
|
|
};
|
|
fs.dirExists = function (directoryPath) {
|
|
return true; // Fake that all directory required exist.
|
|
};
|
|
fs.fileExists = function (directoryPath) {
|
|
return true; // Fake that all files required exist.
|
|
};
|
|
fs.readDir = function () {
|
|
return new gd.VectorString(); // Return nothing, but "readDir" is deprecated anyway.
|
|
};
|
|
fs.readFile = function (filePath) {
|
|
if (!fakeFileContents.hasOwnProperty(filePath)) {
|
|
throw new Error(
|
|
`FakeAbstractFileSystem tried to access "${filePath}", but content for this file was not specified.`
|
|
);
|
|
}
|
|
return fakeFileContents[filePath];
|
|
};
|
|
|
|
// In particular, create a mock copyFile, that we can track to verify
|
|
// files are properly copied.
|
|
fs.copyFile = jest.fn();
|
|
fs.copyFile.mockImplementation(function (srcPath, destPath) {
|
|
return true;
|
|
});
|
|
|
|
fs.writeToFile = jest.fn();
|
|
fs.writeToFile.mockImplementation(function (filePath, content) {
|
|
// Uncomment to log what is being written:
|
|
// console.log('writeToFile called with', filePath, content);
|
|
return true;
|
|
});
|
|
|
|
return fs;
|
|
},
|
|
};
|