(t *testing.T)
| 1111 | } |
| 1112 | |
| 1113 | func TestManager_Install_binary(t *testing.T) { |
| 1114 | fakeExtensionName := "gh-bin-ext" |
| 1115 | repo := ghrepo.NewWithHost("owner", fakeExtensionName, "example.com") |
| 1116 | |
| 1117 | reg := httpmock.Registry{} |
| 1118 | defer reg.Verify(t) |
| 1119 | |
| 1120 | reg.Register( |
| 1121 | httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"), |
| 1122 | httpmock.JSONResponse( |
| 1123 | release{ |
| 1124 | Assets: []releaseAsset{ |
| 1125 | { |
| 1126 | Name: "gh-bin-ext-windows-amd64.exe", |
| 1127 | APIURL: "https://example.com/release/cool", |
| 1128 | }, |
| 1129 | }, |
| 1130 | })) |
| 1131 | reg.Register( |
| 1132 | httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"), |
| 1133 | httpmock.JSONResponse( |
| 1134 | release{ |
| 1135 | Tag: "v1.0.1", |
| 1136 | Assets: []releaseAsset{ |
| 1137 | { |
| 1138 | Name: "gh-bin-ext-windows-amd64.exe", |
| 1139 | APIURL: "https://example.com/release/cool", |
| 1140 | }, |
| 1141 | }, |
| 1142 | })) |
| 1143 | reg.Register( |
| 1144 | httpmock.REST("GET", "release/cool"), |
| 1145 | httpmock.StringResponse("FAKE BINARY")) |
| 1146 | |
| 1147 | ios, _, stdout, stderr := iostreams.Test() |
| 1148 | dataDir := t.TempDir() |
| 1149 | updateDir := t.TempDir() |
| 1150 | |
| 1151 | // Create a temporary directory to simulate the local extension update state |
| 1152 | extensionUpdatePath := filepath.Join(updateDir, fakeExtensionName) |
| 1153 | require.NoError(t, stubExtensionUpdate(extensionUpdatePath)) |
| 1154 | |
| 1155 | m := newTestManager(dataDir, updateDir, &http.Client{Transport: ®}, nil, ios) |
| 1156 | |
| 1157 | err := m.Install(repo, "") |
| 1158 | assert.NoError(t, err) |
| 1159 | |
| 1160 | manifest, err := os.ReadFile(filepath.Join(dataDir, "extensions/gh-bin-ext", manifestName)) |
| 1161 | assert.NoError(t, err) |
| 1162 | |
| 1163 | var bm binManifest |
| 1164 | err = yaml.Unmarshal(manifest, &bm) |
| 1165 | assert.NoError(t, err) |
| 1166 | |
| 1167 | assert.Equal(t, binManifest{ |
| 1168 | Name: fakeExtensionName, |
| 1169 | Owner: "owner", |
| 1170 | Host: "example.com", |
nothing calls this directly
no test coverage detected