diff --git a/cmd/xsDeploy.go b/cmd/xsDeploy.go index decb5a9bd..ae1643ed8 100644 --- a/cmd/xsDeploy.go +++ b/cmd/xsDeploy.go @@ -265,6 +265,9 @@ func runXsDeploy(XsDeployOptions xsDeployOptions, s shellRunner, if err == nil && (mode == BGDeploy && action == None) { XsDeployOptions.OperationID = retrieveOperationID(o, XsDeployOptions.OperationIDLogPattern) + if len(XsDeployOptions.OperationID) == 0 { + err = errors.New("No operationID found") + } } if err != nil { diff --git a/cmd/xsDeploy_test.go b/cmd/xsDeploy_test.go index c7fa92cf4..a774861a9 100644 --- a/cmd/xsDeploy_test.go +++ b/cmd/xsDeploy_test.go @@ -182,8 +182,12 @@ func TestDeploy(t *testing.T) { fileUtilsMock.copiedFiles = nil removedFiles = nil s.Calls = nil + s.StdoutReturn = make(map[string]string) }() + s.StdoutReturn = make(map[string]string) + s.StdoutReturn[".*xs bg-deploy.*"] = "Use \"xs bg-deploy -i 1234 -a resume\" to resume the process.\n" + oldMode := myXsDeployOptions.Mode defer func() { @@ -200,6 +204,30 @@ func TestDeploy(t *testing.T) { assert.Len(t, s.Calls, 2) // There are two entries --> no logout in this case. }) + t.Run("BG deploy fails, missing operationID", func(t *testing.T) { + + defer func() { + fileUtilsMock.copiedFiles = nil + removedFiles = nil + s.Calls = nil + s.StdoutReturn = make(map[string]string) + }() + + s.StdoutReturn = make(map[string]string) + s.StdoutReturn[".*xs bg-deploy.*"] = "There is no operation id\n" + + oldMode := myXsDeployOptions.Mode + + defer func() { + myXsDeployOptions.Mode = oldMode + }() + + myXsDeployOptions.Mode = "BG_DEPLOY" + + e := runXsDeploy(myXsDeployOptions, &s, &fileUtilsMock, fRemove, ioutil.Discard) + checkErr(t, e, "No operationID found") + }) + t.Run("BG deploy abort succeeds", func(t *testing.T) { defer func() {