Skip to content

Commit

Permalink
Merge branch 'main' into ubuntu-stable
Browse files Browse the repository at this point in the history
  • Loading branch information
lucacome authored Sep 25, 2024
2 parents e652e89 + 5ce54a3 commit 868c059
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 14 deletions.
26 changes: 26 additions & 0 deletions lib/modules/datasource/custom/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { getPkgReleases } from '..';
import { Fixtures } from '../../../../test/fixtures';
import * as httpMock from '../../../../test/http-mock';
import { fs } from '../../../../test/util';
import { logger } from '../../../logger';
import { CustomDatasource } from './index';

jest.mock('../../../util/fs');
Expand Down Expand Up @@ -228,6 +229,31 @@ describe('modules/datasource/custom/index', () => {
expect(result).toEqual(expected);
});

it('returns null if transformation using jsonata rules fail', async () => {
httpMock
.scope('https://example.com')
.get('/v1')
.reply(200, '1.0.0 \n2.0.0 \n 3.0.0 ', {
'Content-Type': 'text/plain',
});
const result = await getPkgReleases({
datasource: `${CustomDatasource.id}.foo`,
packageName: 'myPackage',
customDatasources: {
foo: {
defaultRegistryUrlTemplate: 'https://example.com/v1',
transformTemplates: ['$[.name = "Alice" and'],
format: 'plain',
},
},
});
expect(result).toBeNull();
expect(logger.debug).toHaveBeenCalledWith(
{ err: expect.any(Object), transformTemplate: '$[.name = "Alice" and' },
'Error while transforming response',
);
});

it('return releases for plain text API when only returns a single version', async () => {
const expected = {
releases: [
Expand Down
12 changes: 10 additions & 2 deletions lib/modules/datasource/custom/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,16 @@ export class CustomDatasource extends Datasource {
logger.trace({ data }, `Custom manager fetcher '${format}' returned data.`);

for (const transformTemplate of transformTemplates) {
const expression = jsonata(transformTemplate);
data = await expression.evaluate(data);
try {
const expression = jsonata(transformTemplate);
data = await expression.evaluate(data);
} catch (err) {
logger.debug(
{ err, transformTemplate },
'Error while transforming response',
);
return null;
}
}

try {
Expand Down
11 changes: 6 additions & 5 deletions lib/modules/datasource/postprocess-release.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { postprocessRelease } from './postprocess-release';
import type {
GetReleasesConfig,
PostprocessReleaseConfig,
PostprocessReleaseResult,
Release,
ReleaseResult,
} from './types';
Expand Down Expand Up @@ -61,7 +62,7 @@ describe('modules/datasource/postprocess-release', () => {
postprocessRelease(
_config: PostprocessReleaseConfig,
release: Release,
): Promise<Release | null> {
): Promise<PostprocessReleaseResult> {
return Promise.resolve(release);
}
}
Expand All @@ -84,7 +85,7 @@ describe('modules/datasource/postprocess-release', () => {
postprocessRelease(
_config: PostprocessReleaseConfig,
release: Release,
): Promise<Release | null> {
): Promise<PostprocessReleaseResult> {
release.releaseTimestamp = '2024-09-05';
return Promise.resolve(release);
}
Expand All @@ -109,8 +110,8 @@ describe('modules/datasource/postprocess-release', () => {
postprocessRelease(
_config: PostprocessReleaseConfig,
_release: Release,
): Promise<Release | null> {
return Promise.resolve(null);
): Promise<PostprocessReleaseResult> {
return Promise.resolve('reject');
}
}
getDatasourceFor.mockReturnValueOnce(new SomeDatasource());
Expand All @@ -130,7 +131,7 @@ describe('modules/datasource/postprocess-release', () => {
postprocessRelease(
_config: PostprocessReleaseConfig,
_release: Release,
): Promise<Release | null> {
): Promise<PostprocessReleaseResult> {
return Promise.reject(new Error('unknown error'));
}
}
Expand Down
3 changes: 2 additions & 1 deletion lib/modules/datasource/postprocess-release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ export async function postprocessRelease(
release,
);

if (!result) {
if (result === 'reject') {
logger.debug(
{ datasource, packageName, registryUrl, version: release.version },
'Rejected release',
);
return null;
}

return result;
Expand Down
4 changes: 3 additions & 1 deletion lib/modules/datasource/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ export interface PostprocessReleaseConfig {
registryUrl: string | null;
}

export type PostprocessReleaseResult = Release | 'reject';

export type RegistryStrategy = 'first' | 'hunt' | 'merge';
export type SourceUrlSupport = 'package' | 'release' | 'none';
export interface DatasourceApi extends ModuleApi {
Expand Down Expand Up @@ -161,5 +163,5 @@ export interface DatasourceApi extends ModuleApi {
postprocessRelease?(
config: PostprocessReleaseConfig,
release: Release,
): Promise<Release | null>;
): Promise<PostprocessReleaseResult>;
}
5 changes: 3 additions & 2 deletions lib/workers/repository/process/lookup/filter-checks.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { mocked } from '../../../../../test/util';
import type {
GetReleasesConfig,
PostprocessReleaseConfig,
PostprocessReleaseResult,
Release,
ReleaseResult,
} from '../../../../modules/datasource';
Expand Down Expand Up @@ -93,9 +94,9 @@ describe('workers/repository/process/lookup/filter-checks', () => {
postprocessRelease(
_: PostprocessReleaseConfig,
release: Release,
): Promise<Release | null> {
): Promise<PostprocessReleaseResult> {
if (release.version !== '1.0.2') {
return Promise.resolve(null);
return Promise.resolve('reject');
}

release.isStable = true;
Expand Down
6 changes: 3 additions & 3 deletions tools/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ ARG BASE_IMAGE_TYPE=slim
# --------------------------------------
# slim image
# --------------------------------------
FROM ghcr.io/renovatebot/base-image:7.28.6@sha256:60e828cd6a232d555837a71c7f13fdb19088bc947a84e6c211ead294177e3cca AS slim-base
FROM ghcr.io/renovatebot/base-image:7.28.7@sha256:74f93ee9d0806abc603c2188b52948bab54bc9fd1bdd0a3302e39e3f63f1d704 AS slim-base

# --------------------------------------
# full image
# --------------------------------------
FROM ghcr.io/renovatebot/base-image:7.28.6-full@sha256:5f09e5aa69fc4429bc20ec3e61223808aea83cb53bf4100ae564f18475de0bcb AS full-base
FROM ghcr.io/renovatebot/base-image:7.28.7-full@sha256:2426e7050ce50c4d4c43065976c25264ad1f04bbcd42006763c06b496d3ec8d3 AS full-base

# --------------------------------------
# build image
# --------------------------------------
FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:7.28.6@sha256:60e828cd6a232d555837a71c7f13fdb19088bc947a84e6c211ead294177e3cca AS build
FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:7.28.7@sha256:74f93ee9d0806abc603c2188b52948bab54bc9fd1bdd0a3302e39e3f63f1d704 AS build

# We want a specific node version here
# renovate: datasource=node-version
Expand Down

0 comments on commit 868c059

Please sign in to comment.