Skip to content

Commit 00e3a0f

Browse files
committed
churn(test): use redislabs/client-libs-test for testing
1 parent 558ebb4 commit 00e3a0f

File tree

12 files changed

+84
-34
lines changed

12 files changed

+84
-34
lines changed

packages/bloom/lib/test-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import TestUtils from '@redis/test-utils';
22
import RedisBloomModules from '.';
33

44
export default new TestUtils({
5-
dockerImageName: 'redis/redis-stack',
5+
dockerImageName: 'redislabs/client-libs-test',
66
dockerImageVersionArgument: 'redisbloom-version',
7-
defaultDockerVersion: '7.4.0-v1'
7+
defaultDockerVersion: '8.0-M04-pre'
88
});
99

1010
export const GLOBAL = {

packages/client/lib/test-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { Command } from './RESP/types';
66
import { BasicCommandParser } from './client/parser';
77

88
const utils = new TestUtils({
9-
dockerImageName: 'redis/redis-stack',
9+
dockerImageName: 'redislabs/client-libs-test',
1010
dockerImageVersionArgument: 'redis-version',
11-
defaultDockerVersion: '7.4.0-v1'
11+
defaultDockerVersion: '8.0-M04-pre'
1212
});
1313

1414
export default utils;

packages/entraid/lib/test-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import TestUtils from '@redis/test-utils';
44
import { EntraidCredentialsProvider } from './entraid-credentials-provider';
55

66
export const testUtils = new TestUtils({
7-
dockerImageName: 'redis/redis-stack',
7+
dockerImageName: 'redislabs/client-libs-test',
88
dockerImageVersionArgument: 'redis-version',
9-
defaultDockerVersion: '7.4.0-v1'
9+
defaultDockerVersion: '8.0-M04-pre'
1010
});
1111

1212
const DEBUG_MODE_ARGS = testUtils.isVersionGreaterThan([7]) ?

packages/graph/lib/test-utils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import TestUtils from '@redis/test-utils';
22
import RedisGraph from '.';
33

4+
45
export default new TestUtils({
5-
dockerImageName: 'redis/redis-stack',
6+
dockerImageName: 'redislabs/client-libs-test',
67
dockerImageVersionArgument: 'redisgraph-version',
7-
defaultDockerVersion: '7.4.0-v1'
8+
defaultDockerVersion: '8.0-M04-pre'
89
});
910

1011
export const GLOBAL = {

packages/json/lib/test-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import TestUtils from '@redis/test-utils';
22
import RedisJSON from '.';
33

44
export default new TestUtils({
5-
dockerImageName: 'redis/redis-stack',
5+
dockerImageName: 'redislabs/client-libs-test',
66
dockerImageVersionArgument: 'redisgraph-version',
7-
defaultDockerVersion: '7.4.0-v1'
7+
defaultDockerVersion: '8.0-M04-pre'
88
});
99

1010
export const GLOBAL = {

packages/search/lib/test-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import TestUtils from '@redis/test-utils';
22
import RediSearch from '.';
33

44
export default new TestUtils({
5-
dockerImageName: 'redis/redis-stack',
5+
dockerImageName: 'redislabs/client-libs-test',
66
dockerImageVersionArgument: 'redisearch-version',
7-
defaultDockerVersion: '7.4.0-v1'
7+
defaultDockerVersion: '8.0-M04-pre'
88
});
99

1010
export const GLOBAL = {

packages/search/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"!dist/tsconfig.tsbuildinfo"
1010
],
1111
"scripts": {
12-
"test": "nyc -r text-summary -r lcov mocha -r tsx './lib/**/*.spec.ts'"
12+
"test": "nyc -r text-summary -r lcov mocha -r tsx './lib/**/*.spec.ts'",
13+
"test-sourcemap": "mocha -r ts-node/register/transpile-only './lib/**/*.spec.ts'"
1314
},
1415
"peerDependencies": {
1516
"@redis/client": "^5.0.0-next.6"

packages/test-utils/lib/dockers.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,14 @@ export interface RedisServerDocker {
4646
dockerId: string;
4747
}
4848

49-
async function spawnRedisServerDocker({ image, version }: RedisServerDockerConfig, serverArguments: Array<string>): Promise<RedisServerDocker> {
50-
const port = (await portIterator.next()).value,
51-
{ stdout, stderr } = await execAsync(
52-
`docker run -e REDIS_ARGS="--port ${port.toString()} ${serverArguments.join(' ')}" -d --network host ${image}:${version}`
53-
);
49+
async function spawnRedisServerDocker({
50+
image,
51+
version
52+
}: RedisServerDockerConfig, serverArguments: Array<string>): Promise<RedisServerDocker> {
53+
54+
const port = (await portIterator.next()).value
55+
const command = `docker run -e PORT="${port.toString()}" -d --network host ${image}:${version} --port ${port.toString()} ${serverArguments.join(' ')}`
56+
const { stdout, stderr } = await execAsync(command);
5457

5558
if (!stdout) {
5659
throw new Error(`docker run error - ${stderr}`);
@@ -140,7 +143,7 @@ async function spawnRedisClusterNodeDockers(
140143
await replica.client.clusterMeet('127.0.0.1', master.docker.port);
141144

142145
while ((await replica.client.clusterSlots()).length === 0) {
143-
await setTimeout(50);
146+
await setTimeout(25);
144147
}
145148

146149
await replica.client.clusterReplicate(

packages/test-utils/lib/index.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { strict as assert } from 'node:assert';
2+
import TestUtils from './index';
3+
4+
describe('TestUtils', () => {
5+
describe('parseVersionNumber', () => {
6+
it('should handle special versions', () => {
7+
assert.deepStrictEqual(TestUtils.parseVersionNumber('latest'), [Infinity]);
8+
assert.deepStrictEqual(TestUtils.parseVersionNumber('edge'), [Infinity]);
9+
});
10+
11+
it('should parse simple version numbers', () => {
12+
assert.deepStrictEqual(TestUtils.parseVersionNumber('7.4.0'), [7, 4, 0]);
13+
});
14+
15+
it('should handle versions with multiple dashes and prefixes', () => {
16+
assert.deepStrictEqual(TestUtils.parseVersionNumber('rs-7.4.0-v2'), [7, 4, 0]);
17+
assert.deepStrictEqual(TestUtils.parseVersionNumber('rs-7.4.0'), [7, 4, 0]);
18+
assert.deepStrictEqual(TestUtils.parseVersionNumber('7.4.0-v2'), [7, 4, 0]);
19+
});
20+
21+
it('should handle various version number formats', () => {
22+
assert.deepStrictEqual(TestUtils.parseVersionNumber('10.5'), [10, 5]);
23+
assert.deepStrictEqual(TestUtils.parseVersionNumber('8.0.0'), [8, 0, 0]);
24+
assert.deepStrictEqual(TestUtils.parseVersionNumber('rs-6.2.4-v1'), [6, 2, 4]);
25+
});
26+
27+
it('should throw TypeError for invalid version strings', () => {
28+
['', 'invalid', 'rs-', 'v2', 'rs-invalid-v2'].forEach(version => {
29+
assert.throws(
30+
() => TestUtils.parseVersionNumber(version),
31+
TypeError,
32+
`Expected TypeError for version string: ${version}`
33+
);
34+
});
35+
});
36+
});
37+
});

packages/test-utils/lib/index.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,22 +83,27 @@ interface Version {
8383
}
8484

8585
export default class TestUtils {
86-
static #parseVersionNumber(version: string): Array<number> {
86+
static parseVersionNumber(version: string): Array<number> {
8787
if (version === 'latest' || version === 'edge') return [Infinity];
8888

89-
const dashIndex = version.indexOf('-');
90-
return (dashIndex === -1 ? version : version.substring(0, dashIndex))
91-
.split('.')
92-
.map(x => {
93-
const value = Number(x);
94-
if (Number.isNaN(value)) {
95-
throw new TypeError(`${version} is not a valid redis version`);
96-
}
9789

98-
return value;
99-
});
100-
}
90+
// Match complete version number patterns
91+
const versionMatch = version.match(/(^|\-)\d+(\.\d+)*($|\-)/);
92+
if (!versionMatch) {
93+
throw new TypeError(`${version} is not a valid redis version`);
94+
}
10195

96+
// Extract just the numbers and dots between first and last dash (or start/end)
97+
const versionNumbers = versionMatch[0].replace(/^\-|\-$/g, '');
98+
99+
return versionNumbers.split('.').map(x => {
100+
const value = Number(x);
101+
if (Number.isNaN(value)) {
102+
throw new TypeError(`${version} is not a valid redis version`);
103+
}
104+
return value;
105+
});
106+
}
102107
static #getVersion(argumentName: string, defaultVersion = 'latest'): Version {
103108
return yargs(hideBin(process.argv))
104109
.option(argumentName, {
@@ -108,7 +113,7 @@ export default class TestUtils {
108113
.coerce(argumentName, (version: string) => {
109114
return {
110115
string: version,
111-
numbers: TestUtils.#parseVersionNumber(version)
116+
numbers: TestUtils.parseVersionNumber(version)
112117
};
113118
})
114119
.demandOption(argumentName)

0 commit comments

Comments
 (0)