public void PostDeploymentActionWhichFailsShouldFailDeployment() { string testName = "PostDeploymentActionsShouldBeCalledOnSuccessfulPublish"; string testLine1 = "test script 1 is running"; string testLine2 = "test script 2 is running too"; string failScriptCommand = "\n exit /b 1"; using (new LatencyLogger(testName)) { ApplicationManager.Run(testName, appManager => { using (var appRepository = Git.Clone("HelloKudu")) { TestTracer.Trace("Add action scripts, first script should fail, second script shouldn't run"); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_1.cmd", @"@echo off echo " + testLine1 + failScriptCommand); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_2.bat", @"@echo off echo " + testLine2); TestTracer.Trace("Deploy test app"); appManager.GitDeploy(appRepository.PhysicalPath); TestTracer.Trace("Verify results"); var deploymentResults = appManager.DeploymentManager.GetResultsAsync().Result.ToList(); Assert.Equal(1, deploymentResults.Count); Assert.Equal(DeployStatus.Failed, deploymentResults[0].Status); KuduAssert.VerifyLogOutput(appManager, deploymentResults[0].Id, testLine1); KuduAssert.VerifyLogOutputWithUnexpected(appManager, deploymentResults[0].Id, testLine2); TestTracer.Trace("Update action scripts, first script should succeed, second script should fail"); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_1.cmd", @"@echo off echo " + testLine1); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_2.bat", @"@echo off echo " + testLine2 + failScriptCommand); TestTracer.Trace("Deploy test app"); appManager.DeploymentManager.DeployAsync(null).Wait(); TestTracer.Trace("Verify results"); deploymentResults = appManager.DeploymentManager.GetResultsAsync().Result.ToList(); Assert.Equal(1, deploymentResults.Count); Assert.Equal(DeployStatus.Failed, deploymentResults[0].Status); KuduAssert.VerifyLogOutput(appManager, deploymentResults[0].Id, testLine1, testLine2); } }); } }
public void PostDeploymentActionsShouldNotBeCalledOnFailedDeployment() { string testName = "PostDeploymentActionsShouldNotBeCalledOnFailedDeployment"; string testLine1 = "test script 1 is running"; string testLine2 = "test script 2 is running too"; using (new LatencyLogger(testName)) { ApplicationManager.Run(testName, appManager => { using (var appRepository = Git.Clone("WarningsAsErrors")) { TestTracer.Trace("Add action scripts"); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_1.cmd", @"@echo off echo " + testLine1); appManager.VfsManager.WriteAllText( @"site\deployments\tools\PostDeploymentActions\test_script_2.bat", @"@echo off echo " + testLine2); TestTracer.Trace("Deploy test app"); appManager.GitDeploy(appRepository.PhysicalPath); TestTracer.Trace("Verify results"); var deploymentResults = appManager.DeploymentManager.GetResultsAsync().Result.ToList(); Assert.Equal(1, deploymentResults.Count); Assert.Equal(DeployStatus.Failed, deploymentResults[0].Status); KuduAssert.VerifyLogOutputWithUnexpected(appManager, deploymentResults[0].Id, testLine1, testLine2); } }); } }