|
5 | 5 | package integrations
|
6 | 6 |
|
7 | 7 | import (
|
| 8 | + "encoding/hex" |
8 | 9 | "fmt"
|
9 | 10 | "io/ioutil"
|
10 | 11 | "math/rand"
|
11 | 12 | "net/http"
|
12 | 13 | "net/url"
|
| 14 | + "os" |
13 | 15 | "path"
|
14 | 16 | "path/filepath"
|
15 | 17 | "strconv"
|
@@ -452,26 +454,41 @@ func doMergeFork(ctx, baseCtx APITestContext, baseBranch, headBranch string) fun
|
452 | 454 |
|
453 | 455 | // Then get the diff string
|
454 | 456 | var diffHash string
|
| 457 | + var diffLength int |
455 | 458 | t.Run("GetDiff", func(t *testing.T) {
|
456 | 459 | req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index))
|
457 | 460 | resp := ctx.Session.MakeRequestNilResponseHashSumRecorder(t, req, http.StatusOK)
|
458 | 461 | diffHash = string(resp.Hash.Sum(nil))
|
| 462 | + diffLength = resp.Length |
| 463 | + if diffLength == 0 { |
| 464 | + fmt.Fprintf(os.Stdout, "Had to request diff twice due to 0 bytes\n") |
| 465 | + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(baseCtx.Username), url.PathEscape(baseCtx.Reponame), pr.Index)) |
| 466 | + resp := ctx.Session.MakeRequestNilResponseHashSumRecorder(t, req, http.StatusOK) |
| 467 | + diffHash = string(resp.Hash.Sum(nil)) |
| 468 | + diffLength = resp.Length |
| 469 | + } |
459 | 470 | })
|
460 | 471 |
|
461 | 472 | // Now: Merge the PR & make sure that doesn't break the PR page or change its diff
|
462 | 473 | t.Run("MergePR", doAPIMergePullRequest(baseCtx, baseCtx.Username, baseCtx.Reponame, pr.Index))
|
463 | 474 | t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr))
|
464 |
| - t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash)) |
| 475 | + t.Run("CheckPR", func(t *testing.T) { |
| 476 | + oldMergeBase := pr.MergeBase |
| 477 | + pr2, err := doAPIGetPullRequest(baseCtx, baseCtx.Username, baseCtx.Reponame, pr.Index)(t) |
| 478 | + assert.NoError(t, err) |
| 479 | + assert.Equal(t, oldMergeBase, pr2.MergeBase) |
| 480 | + }) |
| 481 | + t.Run("EnsurDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash, diffLength)) |
465 | 482 |
|
466 | 483 | // Then: Delete the head branch & make sure that doesn't break the PR page or change its diff
|
467 | 484 | t.Run("DeleteHeadBranch", doBranchDelete(baseCtx, baseCtx.Username, baseCtx.Reponame, headBranch))
|
468 | 485 | t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr))
|
469 |
| - t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash)) |
| 486 | + t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash, diffLength)) |
470 | 487 |
|
471 | 488 | // Delete the head repository & make sure that doesn't break the PR page or change its diff
|
472 | 489 | t.Run("DeleteHeadRepository", doAPIDeleteRepository(ctx))
|
473 | 490 | t.Run("EnsureCanSeePull", doEnsureCanSeePull(baseCtx, pr))
|
474 |
| - t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash)) |
| 491 | + t.Run("EnsureDiffNoChange", doEnsureDiffNoChange(baseCtx, pr, diffHash, diffLength)) |
475 | 492 | }
|
476 | 493 | }
|
477 | 494 |
|
@@ -515,14 +532,15 @@ func doEnsureCanSeePull(ctx APITestContext, pr api.PullRequest) func(t *testing.
|
515 | 532 | }
|
516 | 533 | }
|
517 | 534 |
|
518 |
| -func doEnsureDiffNoChange(ctx APITestContext, pr api.PullRequest, diffHash string) func(t *testing.T) { |
| 535 | +func doEnsureDiffNoChange(ctx APITestContext, pr api.PullRequest, diffHash string, diffLength int) func(t *testing.T) { |
519 | 536 | return func(t *testing.T) {
|
520 | 537 | req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d.diff", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr.Index))
|
521 | 538 | resp := ctx.Session.MakeRequestNilResponseHashSumRecorder(t, req, http.StatusOK)
|
522 | 539 | actual := string(resp.Hash.Sum(nil))
|
| 540 | + actualLength := resp.Length |
523 | 541 |
|
524 | 542 | equal := diffHash == actual
|
525 |
| - assert.True(t, equal, "Unexpected change in the diff string: expected hash: %s but was actually: %s", diffHash, actual) |
| 543 | + assert.True(t, equal, "Unexpected change in the diff string: expected hash: %s size: %d but was actually: %s size: %d", hex.EncodeToString([]byte(diffHash)), diffLength, hex.EncodeToString([]byte(actual)), actualLength) |
526 | 544 | }
|
527 | 545 | }
|
528 | 546 |
|
|
0 commit comments