1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
// Copyright 2014 The go-github AUTHORS. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build integration
// +build integration
package integration
import (
"context"
"fmt"
"math/rand"
"net/http"
"os"
"github.com/google/go-github/v60/github"
)
var (
client *github.Client
// auth indicates whether tests are being run with an OAuth token.
// Tests can use this flag to skip certain tests when run without auth.
auth bool
)
func init() {
token := os.Getenv("GITHUB_AUTH_TOKEN")
if token == "" {
print("!!! No OAuth token. Some tests won't run. !!!\n\n")
client = github.NewClient(nil)
} else {
client = github.NewClient(nil).WithAuthToken(token)
auth = true
}
}
func checkAuth(name string) bool {
if !auth {
fmt.Printf("No auth - skipping portions of %v\n", name)
}
return auth
}
func createRandomTestRepository(owner string, autoinit bool) (*github.Repository, error) {
// determine the owner to use if one wasn't specified
if owner == "" {
owner = os.Getenv("GITHUB_OWNER")
if owner == "" {
me, _, err := client.Users.Get(context.Background(), "")
if err != nil {
return nil, err
}
owner = *me.Login
}
}
// create random repo name that does not currently exist
var repoName string
for {
repoName = fmt.Sprintf("test-%d", rand.Int())
_, resp, err := client.Repositories.Get(context.Background(), owner, repoName)
if err != nil {
if resp.StatusCode == http.StatusNotFound {
// found a non-existent repo, perfect
break
}
return nil, err
}
}
// create the repository
repo, _, err := client.Repositories.Create(
context.Background(),
owner,
&github.Repository{
Name: github.String(repoName),
AutoInit: github.Bool(autoinit),
},
)
if err != nil {
return nil, err
}
return repo, nil
}
|