@loopback/testlab 3.1.5 → 3.2.0

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,44 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.2.0](https://github.com/strongloop/loopback-next/compare/@loopback/testlab@3.1.8...@loopback/testlab@3.2.0) (2020-06-30)
7
+
8
+
9
+ ### Features
10
+
11
+ * **testlab:** add transform option for sandbox copyFile ([f5565fb](https://github.com/strongloop/loopback-next/commit/f5565fbfce2e88f4f0accaaa620f4237dc67545c))
12
+
13
+
14
+
15
+
16
+
17
+ ## [3.1.8](https://github.com/strongloop/loopback-next/compare/@loopback/testlab@3.1.7...@loopback/testlab@3.1.8) (2020-06-23)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * set node version to >=10.16 to support events.once ([e39da1c](https://github.com/strongloop/loopback-next/commit/e39da1ca47728eafaf83c10ce35b09b03b6a4edc))
23
+
24
+
25
+
26
+
27
+
28
+ ## [3.1.7](https://github.com/strongloop/loopback-next/compare/@loopback/testlab@3.1.6...@loopback/testlab@3.1.7) (2020-06-11)
29
+
30
+ **Note:** Version bump only for package @loopback/testlab
31
+
32
+
33
+
34
+
35
+
36
+ ## [3.1.6](https://github.com/strongloop/loopback-next/compare/@loopback/testlab@3.1.5...@loopback/testlab@3.1.6) (2020-05-28)
37
+
38
+ **Note:** Version bump only for package @loopback/testlab
39
+
40
+
41
+
42
+
43
+
6
44
  ## [3.1.5](https://github.com/strongloop/loopback-next/compare/@loopback/testlab@3.1.4...@loopback/testlab@3.1.5) (2020-05-20)
7
45
 
8
46
  **Note:** Version bump only for package @loopback/testlab
@@ -69,8 +69,9 @@ export declare class TestSandbox {
69
69
  * @param src - Absolute path of file to be copied to the TestSandbox
70
70
  * @param dest - Optional. Destination filename of the copy operation
71
71
  * (relative to TestSandbox). Original filename used if not specified.
72
+ * @param transform - Optional. A function to transform the file content.
72
73
  */
73
- copyFile(src: string, dest?: string): Promise<void>;
74
+ copyFile(src: string, dest?: string, transform?: (content: string) => string): Promise<void>;
74
75
  /**
75
76
  * Creates a new file and writes the given data serialized as JSON.
76
77
  *
@@ -95,12 +95,20 @@ class TestSandbox {
95
95
  * @param src - Absolute path of file to be copied to the TestSandbox
96
96
  * @param dest - Optional. Destination filename of the copy operation
97
97
  * (relative to TestSandbox). Original filename used if not specified.
98
+ * @param transform - Optional. A function to transform the file content.
98
99
  */
99
- async copyFile(src, dest) {
100
+ async copyFile(src, dest, transform) {
100
101
  dest = dest
101
102
  ? path_1.resolve(this.path, dest)
102
103
  : path_1.resolve(this.path, path_1.parse(src).base);
103
- await fs_extra_1.copy(src, dest);
104
+ if (transform == null) {
105
+ await fs_extra_1.copy(src, dest);
106
+ }
107
+ else {
108
+ let content = await fs_extra_1.readFile(src, 'utf-8');
109
+ content = transform(content);
110
+ await fs_extra_1.outputFile(dest, content, { encoding: 'utf-8' });
111
+ }
104
112
  if (path_1.parse(src).ext === '.js' && fs_extra_1.pathExists(src + '.map')) {
105
113
  const srcMap = src + '.map';
106
114
  await fs_extra_1.appendFile(dest, `\n//# sourceMappingURL=${srcMap}`);
@@ -114,9 +122,7 @@ class TestSandbox {
114
122
  */
115
123
  async writeJsonFile(dest, data) {
116
124
  dest = path_1.resolve(this.path, dest);
117
- const destDir = path_1.parse(dest).dir;
118
- await fs_extra_1.ensureDir(destDir);
119
- return fs_extra_1.writeJson(dest, data, { spaces: 2 });
125
+ return fs_extra_1.outputJson(dest, data, { spaces: 2 });
120
126
  }
121
127
  /**
122
128
  * Creates a new file and writes the given data as a UTF-8-encoded text.
@@ -126,9 +132,7 @@ class TestSandbox {
126
132
  */
127
133
  async writeTextFile(dest, data) {
128
134
  dest = path_1.resolve(this.path, dest);
129
- const destDir = path_1.parse(dest).dir;
130
- await fs_extra_1.ensureDir(destDir);
131
- return fs_extra_1.writeFile(dest, data, { encoding: 'utf-8' });
135
+ return fs_extra_1.outputFile(dest, data, 'utf-8');
132
136
  }
133
137
  }
134
138
  exports.TestSandbox = TestSandbox;
@@ -1 +1 @@
1
- {"version":3,"file":"test-sandbox.js","sourceRoot":"","sources":["../src/test-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-sandbox.js","sourceRoot":"","sources":["../src/test-sandbox.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@loopback/testlab",
3
- "version": "3.1.5",
3
+ "version": "3.2.0",
4
4
  "description": "A collection of test utilities we use to write LoopBack tests.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "engines": {
8
- "node": ">=10"
8
+ "node": ">=10.16"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "lb-tsc",
@@ -17,15 +17,18 @@
17
17
  "author": "IBM Corp.",
18
18
  "copyright.owner": "IBM Corp.",
19
19
  "license": "MIT",
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
20
23
  "dependencies": {
21
- "@hapi/shot": "^4.1.2",
24
+ "@hapi/shot": "^5.0.0",
22
25
  "@types/express": "^4.17.6",
23
26
  "@types/fs-extra": "^9.0.1",
24
27
  "@types/shot": "^4.0.0",
25
- "@types/sinon": "^9.0.3",
26
- "@types/supertest": "^2.0.9",
28
+ "@types/sinon": "^9.0.4",
29
+ "@types/supertest": "^2.0.10",
27
30
  "express": "^4.17.1",
28
- "fs-extra": "^9.0.0",
31
+ "fs-extra": "^9.0.1",
29
32
  "oas-validator": "^4.0.3",
30
33
  "should": "^13.2.3",
31
34
  "sinon": "^9.0.2",
@@ -33,9 +36,9 @@
33
36
  "tslib": "^2.0.0"
34
37
  },
35
38
  "devDependencies": {
36
- "@loopback/build": "^5.4.1",
37
- "@loopback/eslint-config": "^7.0.1",
38
- "@types/node": "^10.17.24"
39
+ "@loopback/build": "^6.1.0",
40
+ "@loopback/eslint-config": "^8.0.3",
41
+ "@types/node": "^10.17.26"
39
42
  },
40
43
  "files": [
41
44
  "README.md",
@@ -50,5 +53,5 @@
50
53
  "url": "https://github.com/strongloop/loopback-next.git",
51
54
  "directory": "packages/testlab"
52
55
  },
53
- "gitHead": "62aea854bf85c5a5995b59e6908fe5409f7eea96"
56
+ "gitHead": "b89db3d3b8be6a36e63e91c2331d217fda7538de"
54
57
  }
@@ -10,10 +10,11 @@ import {
10
10
  ensureDir,
11
11
  ensureDirSync,
12
12
  mkdtempSync,
13
+ outputFile,
14
+ outputJson,
13
15
  pathExists,
16
+ readFile,
14
17
  remove,
15
- writeFile,
16
- writeJson,
17
18
  } from 'fs-extra';
18
19
  import {join, parse, resolve} from 'path';
19
20
 
@@ -131,13 +132,24 @@ export class TestSandbox {
131
132
  * @param src - Absolute path of file to be copied to the TestSandbox
132
133
  * @param dest - Optional. Destination filename of the copy operation
133
134
  * (relative to TestSandbox). Original filename used if not specified.
135
+ * @param transform - Optional. A function to transform the file content.
134
136
  */
135
- async copyFile(src: string, dest?: string): Promise<void> {
137
+ async copyFile(
138
+ src: string,
139
+ dest?: string,
140
+ transform?: (content: string) => string,
141
+ ): Promise<void> {
136
142
  dest = dest
137
143
  ? resolve(this.path, dest)
138
144
  : resolve(this.path, parse(src).base);
139
145
 
140
- await copy(src, dest);
146
+ if (transform == null) {
147
+ await copy(src, dest);
148
+ } else {
149
+ let content = await readFile(src, 'utf-8');
150
+ content = transform(content);
151
+ await outputFile(dest, content, {encoding: 'utf-8'});
152
+ }
141
153
 
142
154
  if (parse(src).ext === '.js' && pathExists(src + '.map')) {
143
155
  const srcMap = src + '.map';
@@ -153,9 +165,7 @@ export class TestSandbox {
153
165
  */
154
166
  async writeJsonFile(dest: string, data: unknown): Promise<void> {
155
167
  dest = resolve(this.path, dest);
156
- const destDir = parse(dest).dir;
157
- await ensureDir(destDir);
158
- return writeJson(dest, data, {spaces: 2});
168
+ return outputJson(dest, data, {spaces: 2});
159
169
  }
160
170
 
161
171
  /**
@@ -166,8 +176,6 @@ export class TestSandbox {
166
176
  */
167
177
  async writeTextFile(dest: string, data: string): Promise<void> {
168
178
  dest = resolve(this.path, dest);
169
- const destDir = parse(dest).dir;
170
- await ensureDir(destDir);
171
- return writeFile(dest, data, {encoding: 'utf-8'});
179
+ return outputFile(dest, data, 'utf-8');
172
180
  }
173
181
  }