testcontainers 7.20.1 → 7.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,48 +21,40 @@ const getDockerHost = (dockerode) => __awaiter(void 0, void 0, void 0, function*
21
21
  if (process.env.DOCKER_HOST) {
22
22
  logger_1.log.info(`Detected DOCKER_HOST environment variable: ${process.env.DOCKER_HOST}`);
23
23
  }
24
- for (const hostStrategy of hostStrategies(dockerode)) {
24
+ for (const [hostStrategyName, hostStrategy] of Object.entries(hostStrategies(dockerode))) {
25
25
  const result = yield hostStrategy();
26
- if (result && result.host) {
27
- result.callback();
28
- return result.host;
26
+ if (result) {
27
+ logger_1.log.info(`Docker host strategy ${hostStrategyName}: ${result}`);
28
+ return result;
29
29
  }
30
30
  }
31
- logger_1.log.info(`Using fallback Docker host: ${DEFAULT_HOST}`);
31
+ logger_1.log.info(`Docker host strategy FALLBACK: ${DEFAULT_HOST}`);
32
32
  return DEFAULT_HOST;
33
33
  });
34
34
  exports.getDockerHost = getDockerHost;
35
- const hostStrategies = (dockerode) => [
36
- () => __awaiter(void 0, void 0, void 0, function* () {
37
- const host = dockerode.modem.host;
38
- return { host, callback: () => logger_1.log.info(`Using Docker host from modem: ${host}`) };
39
- }),
40
- () => __awaiter(void 0, void 0, void 0, function* () {
41
- const host = process.env["TESTCONTAINERS_HOST_OVERRIDE"];
42
- return { host, callback: () => logger_1.log.info(`Using TESTCONTAINERS_HOST_OVERRIDE: ${host}`) };
43
- }),
44
- () => __awaiter(void 0, void 0, void 0, function* () {
35
+ const hostStrategies = (dockerode) => ({
36
+ MODEM: () => __awaiter(void 0, void 0, void 0, function* () { return dockerode.modem.host; }),
37
+ TESTCONTAINERS_HOST_OVERRIDE: () => __awaiter(void 0, void 0, void 0, function* () { return process.env["TESTCONTAINERS_HOST_OVERRIDE"]; }),
38
+ OUTSIDE_CONTAINER: () => __awaiter(void 0, void 0, void 0, function* () {
45
39
  if (!isInContainer()) {
46
- return { host: DEFAULT_HOST, callback: () => logger_1.log.info(`Using default Docker host: ${DEFAULT_HOST}`) };
40
+ return DEFAULT_HOST;
47
41
  }
48
42
  }),
49
- () => __awaiter(void 0, void 0, void 0, function* () {
43
+ INSIDE_CONTAINER_NO_IPAM: () => __awaiter(void 0, void 0, void 0, function* () {
50
44
  const network = yield dockerode.getNetwork("bridge").inspect();
51
45
  if (!network.IPAM || !network.IPAM.Config) {
52
- return {
53
- host: DEFAULT_HOST,
54
- callback: () => logger_1.log.info(`Using default Docker host from within container: ${DEFAULT_HOST}`),
55
- };
56
- }
57
- const gateways = network.IPAM.Config.filter((config) => !!config.Gateway);
58
- if (gateways.length > 0) {
59
- const host = gateways[0].Gateway;
60
- return { host, callback: () => logger_1.log.info(`Using Docker host from network gateway within container: ${host}`) };
46
+ return DEFAULT_HOST;
61
47
  }
62
48
  }),
63
- () => __awaiter(void 0, void 0, void 0, function* () {
64
- const host = yield run_in_container_1.runInContainer("alpine:3.5", ["sh", "-c", "ip route|awk '/default/ { print $3 }'"]);
65
- return { host, callback: () => logger_1.log.info(`Using Docker host from evaluated gateway within container: ${host}`) };
49
+ INSIDE_CONTAINER_IPAM: () => __awaiter(void 0, void 0, void 0, function* () {
50
+ const network = yield dockerode.getNetwork("bridge").inspect();
51
+ if (network.IPAM && network.IPAM.Config) {
52
+ const gateways = network.IPAM.Config.filter((config) => !!config.Gateway);
53
+ if (gateways.length > 0) {
54
+ return gateways[0].Gateway;
55
+ }
56
+ }
66
57
  }),
67
- ];
58
+ CONTAINER_GATEWAY: () => __awaiter(void 0, void 0, void 0, function* () { return yield run_in_container_1.runInContainer("alpine:3.5", ["sh", "-c", "ip route|awk '/default/ { print $3 }'"]); }),
59
+ });
68
60
  const isInContainer = () => fs_1.default.existsSync("/.dockerenv");
@@ -20,8 +20,9 @@ const dockerComposeDown = (options) => __awaiter(void 0, void 0, void 0, functio
20
20
  logger_1.log.info(`Downed DockerCompose environment`);
21
21
  }
22
22
  catch (err) {
23
- logger_1.log.error(`Failed to down DockerCompose environment: ${err}`);
24
- throw new Error(err);
23
+ const errorMessage = err.err || err.message || err;
24
+ logger_1.log.error(`Failed to down DockerCompose environment: ${errorMessage}`);
25
+ throw new Error(errorMessage);
25
26
  }
26
27
  });
27
28
  exports.dockerComposeDown = dockerComposeDown;
@@ -20,8 +20,9 @@ const dockerComposeStop = (options) => __awaiter(void 0, void 0, void 0, functio
20
20
  logger_1.log.info(`Stopped DockerCompose environment`);
21
21
  }
22
22
  catch (err) {
23
- logger_1.log.error(`Failed to stop DockerCompose environment: ${err}`);
24
- throw new Error(err);
23
+ const errorMessage = err.err || err.message || err;
24
+ logger_1.log.error(`Failed to stop DockerCompose environment: ${errorMessage}`);
25
+ throw new Error(errorMessage);
25
26
  }
26
27
  });
27
28
  exports.dockerComposeStop = dockerComposeStop;
@@ -26,14 +26,15 @@ const dockerComposeUp = (options, services) => __awaiter(void 0, void 0, void 0,
26
26
  logger_1.log.info(`Upped DockerCompose environment`);
27
27
  }
28
28
  catch (err) {
29
- logger_1.log.error(`Failed to up DockerCompose environment: ${err}`);
29
+ const errorMessage = err.err || err.message || err;
30
+ logger_1.log.error(`Failed to up DockerCompose environment: ${errorMessage}`);
30
31
  try {
31
32
  yield docker_compose_down_1.dockerComposeDown(options);
32
33
  }
33
34
  catch (_a) {
34
35
  logger_1.log.warn(`Failed to down DockerCompose environment after failed up`);
35
36
  }
36
- throw new Error(err);
37
+ throw new Error(errorMessage);
37
38
  }
38
39
  });
39
40
  exports.dockerComposeUp = dockerComposeUp;
@@ -8,7 +8,15 @@ class DockerImageName {
8
8
  this.image = image;
9
9
  this.tag = tag;
10
10
  if (this.registry) {
11
- this.string = `${this.registry}/${this.image}:${this.tag}`;
11
+ if (this.tag.startsWith("sha256:")) {
12
+ this.string = `${this.registry}/${this.image}@${this.tag}`;
13
+ }
14
+ else {
15
+ this.string = `${this.registry}/${this.image}:${this.tag}`;
16
+ }
17
+ }
18
+ else if (this.tag.startsWith("sha256:")) {
19
+ this.string = `${this.image}@${this.tag}`;
12
20
  }
13
21
  else {
14
22
  this.string = `${this.image}:${this.tag}`;
package/dist/network.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { Uuid } from "./uuid";
2
2
  import { CreateNetworkOptions } from "./docker/functions/network/create-network";
3
3
  export declare class Network {
4
- private readonly uuid;
5
4
  private readonly createNetworkOptions;
6
5
  constructor(createNetworkOptions?: Partial<CreateNetworkOptions>, uuid?: Uuid);
7
6
  start(): Promise<StartedNetwork>;
package/dist/network.js CHANGED
@@ -17,8 +17,7 @@ const create_network_1 = require("./docker/functions/network/create-network");
17
17
  const remove_network_1 = require("./docker/functions/network/remove-network");
18
18
  class Network {
19
19
  constructor(createNetworkOptions = {}, uuid = new uuid_1.RandomUuid()) {
20
- this.uuid = uuid;
21
- this.createNetworkOptions = Object.assign({ name: this.uuid.nextUuid(), driver: "bridge", checkDuplicate: true, internal: false, attachable: false, ingress: false, enableIPv6: false }, createNetworkOptions);
20
+ this.createNetworkOptions = Object.assign({ name: uuid.nextUuid(), driver: "bridge", checkDuplicate: true, internal: false, attachable: false, ingress: false, enableIPv6: false }, createNetworkOptions);
22
21
  }
23
22
  start() {
24
23
  return __awaiter(this, void 0, void 0, function* () {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "testcontainers",
3
3
  "author": "Cristian Greco",
4
- "version": "7.20.1",
4
+ "version": "7.20.5",
5
5
  "main": "dist/index",
6
6
  "types": "dist/index",
7
7
  "keywords": [
@@ -37,8 +37,8 @@
37
37
  "archiver": "^5.3.0",
38
38
  "byline": "^5.0.0",
39
39
  "debug": "^4.3.2",
40
- "docker-compose": "^0.23.12",
41
- "dockerode": "^3.3.0",
40
+ "docker-compose": "^0.23.13",
41
+ "dockerode": "^3.3.1",
42
42
  "get-port": "^5.1.1",
43
43
  "glob": "^7.1.7",
44
44
  "slash": "^3.0.0",
@@ -46,32 +46,32 @@
46
46
  "tar-fs": "^2.1.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@elastic/elasticsearch": "^7.13.0",
49
+ "@elastic/elasticsearch": "^7.14.1",
50
50
  "@types/byline": "^4.2.33",
51
- "@types/debug": "4.1.6",
51
+ "@types/debug": "4.1.7",
52
52
  "@types/glob": "^7.1.4",
53
- "@types/jest": "^26.0.24",
54
- "@types/node": "^16.3.2",
53
+ "@types/jest": "^27.0.2",
54
+ "@types/node": "^16.9.4",
55
55
  "@types/node-fetch": "^2.5.11",
56
56
  "@types/pg": "^8.6.1",
57
57
  "@types/tar-fs": "^2.0.1",
58
- "@typescript-eslint/eslint-plugin": "^4.28.3",
59
- "@typescript-eslint/parser": "^4.28.3",
58
+ "@typescript-eslint/eslint-plugin": "^4.31.2",
59
+ "@typescript-eslint/parser": "^4.31.2",
60
60
  "arangojs": "^7.5.0",
61
61
  "cross-env": "^7.0.3",
62
- "eslint": "^7.30.0",
62
+ "eslint": "^7.32.0",
63
63
  "eslint-config-prettier": "^8.3.0",
64
- "husky": "^7.0.0",
65
- "jest": "^27.0.6",
64
+ "husky": "^7.0.2",
65
+ "jest": "^27.2.1",
66
66
  "kafkajs": "^1.15.0",
67
- "lint-staged": "^10.5.4",
68
- "neo4j-driver": "^4.3.1",
67
+ "lint-staged": "^11.1.2",
68
+ "neo4j-driver": "^4.3.3",
69
69
  "node-fetch": "^2.6.1",
70
- "pg": "^8.6.0",
71
- "prettier": "^2.3.2",
70
+ "pg": "^8.7.1",
71
+ "prettier": "^2.4.1",
72
72
  "rimraf": "^3.0.2",
73
- "ts-jest": "^27.0.3",
74
- "ts-node": "^10.1.0",
73
+ "ts-jest": "^27.0.5",
74
+ "ts-node": "^10.2.1",
75
75
  "typescript": "^4.3.5",
76
76
  "wait-for-expect": "^3.0.2"
77
77
  },