コード例 #1
0
        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"));
        }
コード例 #2
0
ファイル: UpdaterChef.cs プロジェクト: diogomafra/AppUpdater
        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);
                }
            }
        }
コード例 #3
0
        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"));
        }
コード例 #4
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"));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }