From 747edb5a960016ae987c178e515cb78fc7f3fa3b Mon Sep 17 00:00:00 2001 From: Andy Hume Date: Sat, 3 Dec 2016 18:31:18 +0000 Subject: [PATCH] Adds method for getting a single Repo Deployment --- github/repos_deployments.go | 21 +++++++++++++++++++++ github/repos_deployments_test.go | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/github/repos_deployments.go b/github/repos_deployments.go index f3272b0..4b40fbe 100644 --- a/github/repos_deployments.go +++ b/github/repos_deployments.go @@ -82,6 +82,27 @@ func (s *RepositoriesService) ListDeployments(owner, repo string, opt *Deploymen return *deployments, resp, err } +// GetDeployment returns a single deployment of a repository. +// +// GitHub API docs: https://developer.github.com/v3/repos/deployments/ +// Note: GetDeployment uses the undocumented GitHub API endpoint /repos/:owner/:repo/deployments/:id. +func (s *RepositoriesService) GetDeployment(owner, repo string, deploymentID int) (*Deployment, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/deployments/%v", owner, repo, deploymentID) + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + deployment := new(Deployment) + resp, err := s.client.Do(req, deployment) + if err != nil { + return nil, resp, err + } + + return deployment, resp, err +} + // CreateDeployment creates a new deployment for a repository. // // GitHub API docs: https://developer.github.com/v3/repos/deployments/#create-a-deployment diff --git a/github/repos_deployments_test.go b/github/repos_deployments_test.go index 4d77723..6fa1870 100644 --- a/github/repos_deployments_test.go +++ b/github/repos_deployments_test.go @@ -35,6 +35,27 @@ func TestRepositoriesService_ListDeployments(t *testing.T) { } } +func TestRepositoriesService_GetDeployment(t *testing.T) { + setup() + defer teardown() + + mux.HandleFunc("/repos/o/r/deployments/3", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{"id":3}`) + }) + + deployment, _, err := client.Repositories.GetDeployment("o", "r", 3) + if err != nil { + t.Errorf("Repositories.GetDeployment returned error: %v", err) + } + + want := &Deployment{ID: Int(3)} + + if !reflect.DeepEqual(deployment, want) { + t.Errorf("Repositories.GetDeployment returned %+v, want %+v", deployment, want) + } +} + func TestRepositoriesService_CreateDeployment(t *testing.T) { setup() defer teardown()