Skip to content
Snippets Groups Projects
Unverified Commit dc34060c authored by Sergei Zharinov's avatar Sergei Zharinov Committed by GitHub
Browse files

fix(onboarding): warnings for external host errors (#15587)


Co-authored-by: default avatarRhys Arkins <rhys@arkins.net>
parent 8ce54366
No related branches found
No related tags found
No related merge requests found
import { RenovateConfig, getConfig, mocked } from '../../../../test/util';
import { MavenDatasource } from '../../../modules/datasource/maven';
import type { PackageFile } from '../../../modules/manager/types';
import { ExternalHostError } from '../../../types/errors/external-host-error';
import { fetchUpdates } from './fetch';
import * as lookup from './lookup';
......@@ -141,5 +142,70 @@ describe('workers/repository/process/fetch', () => {
await fetchUpdates(config, packageFiles);
expect(packageFiles.maven[0].deps[0].updates).toHaveLength(2);
});
it('throws lookup errors for onboarded repos', async () => {
config.rangeStrategy = 'auto';
const packageFiles: any = {
maven: [
{
packageFile: 'pom.xml',
deps: [{ datasource: MavenDatasource.id, depName: 'bbb' }],
},
],
};
lookupUpdates.mockRejectedValueOnce(new Error('some error'));
await expect(
fetchUpdates({ ...config, repoIsOnboarded: true }, packageFiles)
).rejects.toThrow();
});
it('throws lookup errors for not onboarded repos', async () => {
config.rangeStrategy = 'auto';
const packageFiles: any = {
maven: [
{
packageFile: 'pom.xml',
deps: [{ datasource: MavenDatasource.id, depName: 'bbb' }],
},
],
};
lookupUpdates.mockRejectedValueOnce(new Error('some error'));
await expect(
fetchUpdates({ ...config, repoIsOnboarded: true }, packageFiles)
).rejects.toThrow();
});
it('produces external host warnings for not onboarded repos', async () => {
config.rangeStrategy = 'auto';
const packageFiles: any = {
maven: [
{
packageFile: 'pom.xml',
deps: [{ datasource: MavenDatasource.id, depName: 'bbb' }],
},
],
};
const err = new ExternalHostError(new Error('some error'));
lookupUpdates.mockRejectedValueOnce(err);
await fetchUpdates({ ...config, repoIsOnboarded: false }, packageFiles);
expect(packageFiles).toMatchObject({
maven: [
{
deps: [
{
depName: 'bbb',
warnings: [
{ topic: 'Lookup Error', message: 'bbb: some error' },
],
},
],
},
],
});
});
});
});
......@@ -9,6 +9,7 @@ import type {
PackageDependency,
PackageFile,
} from '../../../modules/manager/types';
import { ExternalHostError } from '../../../types/errors/external-host-error';
import { clone } from '../../../util/clone';
import { applyPackageRules } from '../../../util/package-rules';
import { PackageFiles } from '../package-files';
......@@ -47,10 +48,26 @@ async function fetchDepUpdates(
dep.skipReason = 'disabled';
} else {
if (depConfig.datasource) {
try {
dep = {
...dep,
...(await lookupUpdates(depConfig as LookupUpdateConfig)),
};
} catch (err) {
if (
packageFileConfig.repoIsOnboarded ||
!(err instanceof ExternalHostError)
) {
throw err;
}
const cause = err.err;
dep.warnings ??= [];
dep.warnings.push({
topic: 'Lookup Error',
message: `${depName}: ${cause.message}`,
});
}
}
dep.updates = dep.updates ?? [];
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment