1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Handle error about no helm repositories when updating repositories

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-06-07 13:45:55 +03:00
parent 88fd267988
commit 484aadb920
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
3 changed files with 1440 additions and 1444 deletions

View File

@ -218,7 +218,7 @@ describe("listing active helm repositories in preferences", () => {
expect(readYamlFileMock).not.toHaveBeenCalled(); expect(readYamlFileMock).not.toHaveBeenCalled();
}); });
describe("when updating repositories reject", () => { describe("when updating repositories reject with any other error", () => {
beforeEach(async () => { beforeEach(async () => {
await execFileMock.reject("Some error"); await execFileMock.reject("Some error");
}); });
@ -246,65 +246,12 @@ describe("listing active helm repositories in preferences", () => {
}); });
}); });
describe("when updating repositories resolve", () => { describe("when updating repositories reject with error about no existing repositories", () => {
beforeEach(async () => { beforeEach(async () => {
execFileMock.mockClear(); execFileMock.mockClear();
await execFileMock.resolveSpecific( await execFileMock.reject(
["some-helm-binary-path", ["repo", "update"]], "Error: no repositories found. You must add one before updating",
"",
);
});
it("loads repositories from file system", () => {
expect(readYamlFileMock).toHaveBeenCalledWith(
"some-helm-repository-config-file.yaml",
);
});
describe("when loading repositories resolves with existing repositories", () => {
beforeEach(async () => {
execFileMock.mockClear();
await readYamlFileMock.resolveSpecific(
["some-helm-repository-config-file.yaml"],
repositoryConfigStub,
);
});
it("does not add default repository", () => {
expect(execFileMock).not.toHaveBeenCalledWith(
"some-helm-binary-path",
["repo", "add", "bitnami", "https://charts.bitnami.com/bitnami"],
);
});
it("renders", () => {
expect(rendered.baseElement).toMatchSnapshot();
});
it("does not show loader for repositories anymore", () => {
expect(
rendered.queryByTestId("helm-repositories-are-loading"),
).not.toBeInTheDocument();
});
it("shows repositories in use", () => {
const actual = rendered.getAllByTestId(
/^helm-repository-(some-repository|some-other-repository)$/,
);
expect(actual).toHaveLength(2);
});
});
describe("when loading repositories resolves with no existing repositories", () => {
beforeEach(async () => {
execFileMock.mockClear();
await readYamlFileMock.resolveSpecific(
["some-helm-repository-config-file.yaml"],
{ repositories: [] },
); );
}); });
@ -426,6 +373,58 @@ describe("listing active helm repositories in preferences", () => {
}); });
}); });
}); });
describe("when updating repositories resolve", () => {
beforeEach(async () => {
execFileMock.mockClear();
await execFileMock.resolveSpecific(
["some-helm-binary-path", ["repo", "update"]],
"",
);
});
it("loads repositories from file system", () => {
expect(readYamlFileMock).toHaveBeenCalledWith(
"some-helm-repository-config-file.yaml",
);
});
describe("when repositories resolves", () => {
beforeEach(async () => {
execFileMock.mockClear();
await readYamlFileMock.resolveSpecific(
["some-helm-repository-config-file.yaml"],
repositoryConfigStub,
);
});
it("does not add default repository", () => {
expect(execFileMock).not.toHaveBeenCalledWith(
"some-helm-binary-path",
["repo", "add", "bitnami", "https://charts.bitnami.com/bitnami"],
);
});
it("renders", () => {
expect(rendered.baseElement).toMatchSnapshot();
});
it("does not show loader for repositories anymore", () => {
expect(
rendered.queryByTestId("helm-repositories-are-loading"),
).not.toBeInTheDocument();
});
it("shows repositories in use", () => {
const actual = rendered.getAllByTestId(
/^helm-repository-(some-repository|some-other-repository)$/,
);
expect(actual).toHaveLength(2);
});
});
}); });
}); });
}); });

View File

@ -8,7 +8,6 @@ import type { ReadYamlFile } from "../../../../common/fs/read-yaml-file.injectab
import readYamlFileInjectable from "../../../../common/fs/read-yaml-file.injectable"; import readYamlFileInjectable from "../../../../common/fs/read-yaml-file.injectable";
import getHelmEnvInjectable from "../../get-helm-env/get-helm-env.injectable"; import getHelmEnvInjectable from "../../get-helm-env/get-helm-env.injectable";
import execHelmInjectable from "../../exec-helm/exec-helm.injectable"; import execHelmInjectable from "../../exec-helm/exec-helm.injectable";
import { isEmpty } from "lodash/fp";
import loggerInjectable from "../../../../common/logger.injectable"; import loggerInjectable from "../../../../common/logger.injectable";
import type { AsyncResult } from "../../../../common/utils/async-result"; import type { AsyncResult } from "../../../../common/utils/async-result";
@ -84,15 +83,13 @@ const getActiveHelmRepositoriesInjectable = getInjectable({
const updateResult = await execHelm("repo", "update"); const updateResult = await execHelm("repo", "update");
if (!updateResult.callWasSuccessful) { if (!updateResult.callWasSuccessful) {
if (!updateResult.error.includes(internalHelmErrorForNoRepositoriesFound)) {
return { return {
callWasSuccessful: false, callWasSuccessful: false,
error: `Error updating Helm repositories: ${updateResult.error}`, error: `Error updating Helm repositories: ${updateResult.error}`,
}; };
} }
const repositories = await getRepositories();
if (isEmpty(repositories)) {
const resultOfAddingDefaultRepository = await execHelm("repo", "add", "bitnami", "https://charts.bitnami.com/bitnami"); const resultOfAddingDefaultRepository = await execHelm("repo", "add", "bitnami", "https://charts.bitnami.com/bitnami");
if (!resultOfAddingDefaultRepository.callWasSuccessful) { if (!resultOfAddingDefaultRepository.callWasSuccessful) {
@ -101,11 +98,9 @@ const getActiveHelmRepositoriesInjectable = getInjectable({
error: `Error when adding default Helm repository: ${resultOfAddingDefaultRepository.error}`, error: `Error when adding default Helm repository: ${resultOfAddingDefaultRepository.error}`,
}; };
} }
return { callWasSuccessful: true, response: await getRepositories() };
} }
return { callWasSuccessful: true, response: repositories }; return { callWasSuccessful: true, response: await getRepositories() };
}; };
}, },
}); });
@ -132,3 +127,5 @@ const getRepositoriesForFor =
cacheFilePath: `${helmRepositoryCacheDirPath}/${repository.name}-index.yaml`, cacheFilePath: `${helmRepositoryCacheDirPath}/${repository.name}-index.yaml`,
})); }));
}; };
const internalHelmErrorForNoRepositoriesFound = "no repositories found. You must add one before updating";