MCPcopy Create free account
hub / github.com/ddev/ddev / TestGetGitHubRelease

Function TestGetGitHubRelease

pkg/github/github_test.go:11–56  ·  view source on GitHub ↗

TestGetGitHubRelease tests the GetGitHubRelease function with various scenarios.

(t *testing.T)

Source from the content-addressed store, hash-verified

9
10// TestGetGitHubRelease tests the GetGitHubRelease function with various scenarios.
11func TestGetGitHubRelease(t *testing.T) {
12 if !github.HasGitHubToken() {
13 t.Skip("Skipping because DDEV_GITHUB_TOKEN is not set")
14 }
15
16 // Test getting latest release
17 t.Run("GetLatestRelease", func(t *testing.T) {
18 tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis", "")
19 require.NoError(t, err, "Should successfully get latest release")
20 require.NotEmpty(t, tarballURL, "Tarball URL should not be empty")
21 require.NotEmpty(t, version, "Version should not be empty")
22 require.Contains(t, tarballURL, "github.com", "Tarball URL should be from GitHub")
23 })
24
25 // Test getting specific version
26 t.Run("GetSpecificVersion", func(t *testing.T) {
27 tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis", "v1.0.4")
28 require.NoError(t, err, "Should successfully get specific version")
29 require.Equal(t, "v1.0.4", version, "Should return requested version")
30 require.NotEmpty(t, tarballURL, "Tarball URL should not be empty")
31 })
32
33 // Test non-existent repository
34 t.Run("NonExistentRepo", func(t *testing.T) {
35 _, _, err := github.GetGitHubRelease("ddev", "non-existent-repo", "")
36 require.Error(t, err, "Should fail for non-existent repository")
37 require.Contains(t, err.Error(), "unable to get releases", "Error should mention inability to get releases")
38 })
39
40 // Test non-existent version
41 t.Run("NonExistentVersion", func(t *testing.T) {
42 _, _, err := github.GetGitHubRelease("ddev", "ddev-redis", "v999.999.999")
43 require.Error(t, err, "Should fail for non-existent version")
44 require.Contains(t, err.Error(), "no release found", "Error should mention no release found")
45 })
46
47 // Test real addon with dependencies
48 t.Run("RealAddonWithDependencies", func(t *testing.T) {
49 // Test ddev-redis-insight which depends on ddev-redis
50 tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis-insight", "")
51 require.NoError(t, err, "Should successfully get ddev-redis-insight release")
52 require.NotEmpty(t, tarballURL, "Tarball URL should not be empty")
53 require.NotEmpty(t, version, "Version should not be empty")
54 require.Contains(t, tarballURL, "github.com", "Tarball URL should be from GitHub")
55 })
56}
57
58// TestGetGitHubToken tests the GetGitHubToken function environment variable precedence.
59func TestGetGitHubToken(t *testing.T) {

Callers

nothing calls this directly

Calls 3

HasGitHubTokenFunction · 0.92
GetGitHubReleaseFunction · 0.92
ErrorMethod · 0.80

Tested by

no test coverage detected