public void Test_CreateMapMetaData_Returns_Correct_FilePaths() { SessionPath.ToSession = TestPaths.ToSessionTestFolder; string pathToMapImporting = Path.Combine(TestPaths.ToTestFilesFolder, "Mock_Map_Files", "cool_valid_map"); MapMetaData expectedResult = new MapMetaData() { FilePaths = new List <string>() { Path.Combine(SessionPath.ToContent, "coolmap.uexp"), Path.Combine(SessionPath.ToContent, "coolmap.umap"), Path.Combine(SessionPath.ToContent, "coolmap_BuiltData.uexp"), Path.Combine(SessionPath.ToContent, "coolmap_BuiltData.uasset"), Path.Combine(SessionPath.ToContent, "coolmap_BuiltData.ubulk") } }; MapMetaData actualResult = MetaDataManager.CreateMapMetaData(pathToMapImporting, true); actualResult.FilePaths.TrueForAll(s => expectedResult.FilePaths.Contains(s)); expectedResult.FilePaths.TrueForAll(s => actualResult.FilePaths.Contains(s)); }
internal Task <BoolWithMessage> ImportMapAsync() { Task <BoolWithMessage> task = Task.Factory.StartNew(() => { string sourceFolderToCopy; if (IsZipFileImport) { // extract compressed file before copying if (File.Exists(PathToFileOrFolder) == false) { return(BoolWithMessage.False($"{PathToFileOrFolder} does not exist.")); } // extract files first before copying BoolWithMessage didExtract = BoolWithMessage.False(""); try { Directory.CreateDirectory(PathToTempUnzipFolder); didExtract = FileUtils.ExtractCompressedFile(PathToFileOrFolder, PathToTempUnzipFolder); } catch (Exception e) { Logger.Error(e, "failed to extract zip"); didExtract.Message = e.Message; } if (didExtract.Result == false) { UserMessage = $"Failed to extract file: {didExtract.Message}"; return(BoolWithMessage.False($"Failed to extract: {didExtract.Message}.")); } sourceFolderToCopy = EnsurePathToMapFilesIsCorrect(PathToTempUnzipFolder); } else { // validate folder exists and contains a valid map file if (Directory.Exists(PathToFileOrFolder) == false) { return(BoolWithMessage.False($"{PathToFileOrFolder} does not exist.")); } sourceFolderToCopy = PathToFileOrFolder; bool hasValidMap = MetaDataManager.DoesValidMapExistInFolder(sourceFolderToCopy); if (hasValidMap == false) { return(BoolWithMessage.False($"{PathToFileOrFolder} does not contain a valid .umap file to import.")); } } // create meta data for new map and save to disk MapMetaData metaData = MetaDataManager.CreateMapMetaData(sourceFolderToCopy, true); if (AssetToImport != null) { metaData.AssetName = AssetToImport.ID; } if (IsZipFileImport == false && metaData != null) { metaData.OriginalImportPath = sourceFolderToCopy; } MetaDataManager.SaveMapMetaData(metaData); // copy/move files if (IsZipFileImport) { FileUtils.MoveDirectoryRecursively(sourceFolderToCopy, SessionPath.ToContent, filesToExclude: FilesToExclude, foldersToExclude: AllStockFoldersToExclude, doContainsSearch: false); } else { FileUtils.CopyDirectoryRecursively(sourceFolderToCopy, SessionPath.ToContent, filesToExclude: FilesToExclude, foldersToExclude: AllStockFoldersToExclude, doContainsSearch: false); } if (IsZipFileImport && Directory.Exists(PathToTempUnzipFolder)) { // remove unzipped temp files Directory.Delete(PathToTempUnzipFolder, true); } return(BoolWithMessage.True()); }); return(task); }