public void Cook_CreatesTheVersionDirectory() { UpdateRecipe updateRecipe = new UpdateRecipe("2.0.0", "1.0.0", new UpdateRecipeFile[0]); updaterChef.Cook(updateRecipe); localStructureManager.AssertWasCalled(x => x.CreateVersionDir("2.0.0")); }
public void Cook(UpdateRecipe recipe) { if (localStructureManager.HasVersionFolder(recipe.NewVersion)) { localStructureManager.DeleteVersionDir(recipe.NewVersion); } localStructureManager.CreateVersionDir(recipe.NewVersion); foreach (var file in recipe.Files) { if (file.Action == FileUpdateAction.Copy) { log.Debug("Copying file \"{0}\" from version \"{1}\".", file.Name, recipe.CurrentVersion); localStructureManager.CopyFile(recipe.CurrentVersion, recipe.NewVersion, file.Name); } else if (file.Action == FileUpdateAction.Download) { log.Debug("Downloading file \"{0}\".", file.FileToDownload); byte[] data = updateServer.DownloadFile(recipe.NewVersion, file.FileToDownload); log.Debug("Decompressing the file."); data = DataCompressor.Decompress(data); log.Debug("Saving the file \"{0}\".", file.Name); localStructureManager.SaveFile(recipe.NewVersion, file.Name, data); } else if (file.Action == FileUpdateAction.DownloadDelta) { log.Debug("Downloading patch file \"{0}\".", file.FileToDownload); byte[] data = updateServer.DownloadFile(recipe.NewVersion, file.FileToDownload); log.Debug("Applying patch file."); localStructureManager.ApplyDelta(recipe.CurrentVersion, recipe.NewVersion, file.Name, data); } } }
public void Cook_WithAVersionAlreadyDownloaded_CreatesTheVersionDirectory() { localStructureManager.Stub(x => x.HasVersionFolder("2.0.0")).Return(true); UpdateRecipe updateRecipe = new UpdateRecipe("2.0.0", "1.0.0", new UpdateRecipeFile[0]); updaterChef.Cook(updateRecipe); localStructureManager.AssertWasCalled(x => x.DeleteVersionDir("2.0.0")); }
public void Cook_CopyExistingFiles() { UpdateRecipeFile file1 = new UpdateRecipeFile("test1.txt", "123", 100, FileUpdateAction.Copy, null); UpdateRecipeFile file2 = new UpdateRecipeFile("test2.txt", "123", 100, FileUpdateAction.Download, "test2.txt.deploy"); UpdateRecipe updateRecipe = new UpdateRecipe("2.0.0", "1.0.0", new UpdateRecipeFile[] { file1, file2 }); updaterChef.Cook(updateRecipe); localStructureManager.AssertWasCalled(x => x.CopyFile("1.0.0", "2.0.0", "test1.txt")); }
public void Cook_SavesNewFiles() { byte[] data = new byte[]{1,2,3,4,5}; updateServer.Stub(x => x.DownloadFile("2.0.0", "test2.txt.deploy")).Return(DataCompressor.Compress(data)); UpdateRecipeFile file1 = new UpdateRecipeFile("test1.txt", "123", 100, FileUpdateAction.Copy, null); UpdateRecipeFile file2 = new UpdateRecipeFile("test2.txt", "123", 100, FileUpdateAction.Download, "test2.txt.deploy"); UpdateRecipe updateRecipe = new UpdateRecipe("2.0.0", "1.0.0", new UpdateRecipeFile[] { file1, file2 }); updaterChef.Cook(updateRecipe); localStructureManager.AssertWasCalled(x => x.SaveFile("2.0.0", "test2.txt", data)); }
public void Cook_ApplyDeltaInModifiedFiles() { byte[] data = new byte[] { 1, 2, 3, 4, 5 }; updateServer.Stub(x => x.DownloadFile("2.0.0", "test2.txt.deploy")).Return(data); UpdateRecipeFile file1 = new UpdateRecipeFile("test1.txt", "123", 100, FileUpdateAction.Copy, null); UpdateRecipeFile file2 = new UpdateRecipeFile("test2.txt", "123", 100, FileUpdateAction.DownloadDelta, "test2.txt.deploy"); UpdateRecipe updateRecipe = new UpdateRecipe("2.0.0", "1.0.0", new UpdateRecipeFile[] { file1, file2 }); updaterChef.Cook(updateRecipe); localStructureManager.AssertWasCalled(x => x.ApplyDelta("1.0.0", "2.0.0", "test2.txt", data)); }