123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // Copyright 2020 The Gogs Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
- package gitutil
- import (
- "fmt"
- "testing"
- "github.com/gogs/git-module"
- "github.com/pkg/errors"
- "github.com/stretchr/testify/assert"
- )
- func TestModuler_PullRequestMeta(t *testing.T) {
- headPath := "/head/path"
- basePath := "/base/path"
- headBranch := "head_branch"
- baseBranch := "base_branch"
- mergeBase := "MERGE-BASE"
- changedFiles := []string{"a.go", "b.txt"}
- commits := []*git.Commit{
- {ID: git.MustIDFromString("adfd6da3c0a3fb038393144becbf37f14f780087")},
- }
- SetMockModuleStore(t, &MockModuleStore{
- repoAddRemote: func(repoPath, name, url string, opts ...git.AddRemoteOptions) error {
- if repoPath != headPath {
- return fmt.Errorf("repoPath: want %q but got %q", headPath, repoPath)
- } else if name == "" {
- return errors.New("empty name")
- } else if url != basePath {
- return fmt.Errorf("url: want %q but got %q", basePath, url)
- }
- if len(opts) == 0 {
- return errors.New("no options")
- } else if !opts[0].Fetch {
- return fmt.Errorf("opts.Fetch: want %v but got %v", true, opts[0].Fetch)
- }
- return nil
- },
- repoMergeBase: func(repoPath, base, head string, opts ...git.MergeBaseOptions) (string, error) {
- if repoPath != headPath {
- return "", fmt.Errorf("repoPath: want %q but got %q", headPath, repoPath)
- } else if base == "" {
- return "", errors.New("empty base")
- } else if head != headBranch {
- return "", fmt.Errorf("head: want %q but got %q", headBranch, head)
- }
- return mergeBase, nil
- },
- repoLog: func(repoPath, rev string, opts ...git.LogOptions) ([]*git.Commit, error) {
- if repoPath != headPath {
- return nil, fmt.Errorf("repoPath: want %q but got %q", headPath, repoPath)
- }
- expRev := mergeBase + "..." + headBranch
- if rev != expRev {
- return nil, fmt.Errorf("rev: want %q but got %q", expRev, rev)
- }
- return commits, nil
- },
- repoDiffNameOnly: func(repoPath, base, head string, opts ...git.DiffNameOnlyOptions) ([]string, error) {
- if repoPath != headPath {
- return nil, fmt.Errorf("repoPath: want %q but got %q", headPath, repoPath)
- } else if base == "" {
- return nil, errors.New("empty base")
- } else if head != headBranch {
- return nil, fmt.Errorf("head: want %q but got %q", headBranch, head)
- }
- if len(opts) == 0 {
- return nil, errors.New("no options")
- } else if !opts[0].NeedsMergeBase {
- return nil, fmt.Errorf("opts.NeedsMergeBase: want %v but got %v", true, opts[0].NeedsMergeBase)
- }
- return changedFiles, nil
- },
- repoRemoveRemote: func(repoPath, name string, opts ...git.RemoveRemoteOptions) error {
- if repoPath != headPath {
- return fmt.Errorf("repoPath: want %q but got %q", headPath, repoPath)
- } else if name == "" {
- return errors.New("empty name")
- }
- return nil
- },
- pullRequestMeta: Module.PullRequestMeta,
- })
- meta, err := Module.PullRequestMeta(headPath, basePath, headBranch, baseBranch)
- if err != nil {
- t.Fatal(err)
- }
- expMeta := &PullRequestMeta{
- MergeBase: mergeBase,
- Commits: commits,
- NumFiles: 2,
- }
- assert.Equal(t, expMeta, meta)
- }
|