@webos-tools/cli 3.2.0 → 3.2.1

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.
Files changed (152) hide show
  1. package/.eslintignore +1 -1
  2. package/.eslintrc.js +52 -52
  3. package/.vscode/c_cpp_properties.json +21 -0
  4. package/.vscode/launch.json +97 -0
  5. package/.vscode/settings.json +13 -0
  6. package/.vscode/tasks.json +32 -0
  7. package/APIs.js +79 -79
  8. package/CHANGELOG.md +11 -5
  9. package/LICENSE +201 -201
  10. package/bin/ares-config.js +1 -1
  11. package/bin/ares-device-info.js +30 -30
  12. package/bin/ares-generate.js +274 -274
  13. package/bin/ares-inspect.js +179 -179
  14. package/bin/ares-install.js +223 -223
  15. package/bin/ares-log.js +259 -259
  16. package/bin/ares-pull.js +156 -156
  17. package/bin/ares-push.js +155 -155
  18. package/bin/ares-server.js +174 -174
  19. package/bin/ares-setup-device.js +6 -10
  20. package/bin/ares-shell.js +132 -132
  21. package/bin/ares.js +166 -166
  22. package/files/conf/ares.json +1 -2
  23. package/files/conf/ipk.json +30 -30
  24. package/files/conf/novacom-devices.json +2 -2
  25. package/files/conf/query/query-app.json +14 -14
  26. package/files/conf/query/query-hosted.json +18 -18
  27. package/files/conf/query/query-package.json +10 -10
  28. package/files/conf/query/query-service.json +6 -6
  29. package/files/conf/webos_emul +27 -27
  30. package/files/conf-base/env/sdk-apollo.json +8 -8
  31. package/files/conf-base/env/sdk-ose.json +8 -8
  32. package/files/conf-base/env/sdk-tv.json +8 -8
  33. package/files/conf-base/profile/config-apollo.json +29 -29
  34. package/files/conf-base/profile/config-ose.json +29 -29
  35. package/files/conf-base/profile/config-tv.json +31 -31
  36. package/files/conf-base/query/query-app.json +14 -14
  37. package/files/conf-base/query/query-hosted.json +18 -18
  38. package/files/conf-base/query/query-package.json +10 -10
  39. package/files/conf-base/query/query-service.json +6 -6
  40. package/files/conf-base/query/signage/query-app.json +1 -1
  41. package/files/conf-base/query/signage/query-service.json +1 -1
  42. package/files/conf-base/template-conf/ose-templates.json +67 -67
  43. package/files/conf-base/template-conf/tv-sdk-templates.json +57 -57
  44. package/files/help/ares-device.help +109 -109
  45. package/files/help/ares-install.help +95 -95
  46. package/files/help/ares-launch.help +1 -1
  47. package/files/help/ares-log-pmlogd.help +84 -84
  48. package/files/help/ares-log.help +101 -101
  49. package/files/help/ares-novacom.help +68 -68
  50. package/files/help/ares-pull.help +38 -38
  51. package/files/help/ares-push.help +38 -38
  52. package/files/help/ares-server.help +44 -44
  53. package/files/help/ares-shell.help +42 -42
  54. package/files/help/ares.help +52 -52
  55. package/files/help/readme.help +23 -23
  56. package/files/schema/ApplicationDescription.schema +319 -319
  57. package/files/templates/apollo-sdk-templates/appinfo/appinfo.json +10 -10
  58. package/files/templates/apollo-sdk-templates/bootplate-web/index.html +88 -88
  59. package/files/templates/apollo-sdk-templates/hosted-webapp/index.html +13 -13
  60. package/files/templates/apollo-sdk-templates/js-service/helloclient.js +31 -31
  61. package/files/templates/apollo-sdk-templates/js-service/helloworld_webos_service.js +188 -188
  62. package/files/templates/apollo-sdk-templates/serviceinfo/package.json +11 -11
  63. package/files/templates/apollo-sdk-templates/serviceinfo/services.json +8 -8
  64. package/files/templates/ose-sdk-templates/appinfo/appinfo.json +10 -10
  65. package/files/templates/ose-sdk-templates/bootplate-web/index.html +88 -88
  66. package/files/templates/ose-sdk-templates/hosted-webapp/index.html +13 -13
  67. package/files/templates/ose-sdk-templates/js-service/helloclient.js +31 -31
  68. package/files/templates/ose-sdk-templates/js-service/helloworld_webos_service.js +188 -188
  69. package/files/templates/ose-sdk-templates/qml-app/main.qml +68 -68
  70. package/files/templates/ose-sdk-templates/qmlappinfo/appinfo.json +10 -10
  71. package/files/templates/ose-sdk-templates/serviceinfo/package.json +11 -11
  72. package/files/templates/ose-sdk-templates/serviceinfo/services.json +8 -8
  73. package/files/templates/signage-sdk-templates/Backlight_Scheduling/index.html +1 -1
  74. package/files/templates/signage-sdk-templates/Backlight_Scheduling/scheduler.js +2 -3
  75. package/files/templates/signage-sdk-templates/File_Explorer/index.html +1 -33
  76. package/files/templates/signage-sdk-templates/File_Explorer/js/Root.js +0 -9
  77. package/files/templates/tv-sdk-templates/appinfo/appinfo.json +10 -10
  78. package/files/templates/tv-sdk-templates/bootplate-web/index.html +58 -58
  79. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.10/LICENSE-2.0.txt +202 -202
  80. package/files/templates/tv-sdk-templates/hosted-webapp/index.html +14 -14
  81. package/files/templates/tv-sdk-templates/js-service/helloworld_service.js +39 -39
  82. package/files/templates/tv-sdk-templates/packageinfo/packageinfo.json +3 -3
  83. package/files/templates/tv-sdk-templates/serviceinfo/package.json +11 -11
  84. package/files/templates/tv-sdk-templates/serviceinfo/services.json +8 -8
  85. package/lib/base/ares.html +40 -40
  86. package/lib/base/cli-appdata.js +290 -289
  87. package/lib/base/cli-control.js +44 -44
  88. package/lib/base/common-tools.js +29 -29
  89. package/lib/base/error-handler.js +265 -265
  90. package/lib/base/file-watcher.js +155 -155
  91. package/lib/base/help-format.js +147 -147
  92. package/lib/base/luna.js +178 -178
  93. package/lib/base/novacom.js +4 -4
  94. package/lib/base/sdkenv.js +59 -59
  95. package/lib/base/server.js +137 -137
  96. package/lib/base/setup-device.js +2 -2
  97. package/lib/base/version-tools.js +79 -79
  98. package/lib/device.js +1419 -1419
  99. package/lib/generator.js +1 -1
  100. package/lib/inspect.js +493 -493
  101. package/lib/log.js +584 -584
  102. package/lib/package.js +61 -7
  103. package/lib/pull.js +231 -231
  104. package/lib/pusher.js +210 -210
  105. package/lib/session.js +74 -74
  106. package/lib/shell.js +193 -193
  107. package/lib/tar-filter-pack.js +62 -62
  108. package/lib/util/copy.js +31 -31
  109. package/lib/util/createFileName.js +40 -40
  110. package/lib/util/eof.js +30 -30
  111. package/lib/util/json.js +63 -63
  112. package/lib/util/merge.js +14 -14
  113. package/lib/util/objclone.js +40 -40
  114. package/lib/util/spinner.js +37 -37
  115. package/npm-shrinkwrap.json +2 -2
  116. package/package.json +1 -1
  117. package/scripts/postinstall.js +24 -24
  118. package/spec/helpers/reporter.js +65 -65
  119. package/spec/jsSpecs/apiTest/generator.spec.js +372 -372
  120. package/spec/jsSpecs/apiTest/inspector.spec.js +89 -89
  121. package/spec/jsSpecs/apiTest/installer.spec.js +67 -67
  122. package/spec/jsSpecs/apiTest/launcher.spec.js +150 -150
  123. package/spec/jsSpecs/apiTest/packager.spec.js +194 -194
  124. package/spec/jsSpecs/apiTest/puller.spec.js +101 -101
  125. package/spec/jsSpecs/apiTest/pusher.spec.js +103 -103
  126. package/spec/jsSpecs/apiTest/server.spec.js +115 -115
  127. package/spec/jsSpecs/apiTest/setupDevice.spec.js +93 -93
  128. package/spec/jsSpecs/apiTest/shell.spec.js +49 -49
  129. package/spec/jsSpecs/ares-config.spec.js +88 -88
  130. package/spec/jsSpecs/ares-device.spec.js +443 -443
  131. package/spec/jsSpecs/ares-generate.spec.js +397 -401
  132. package/spec/jsSpecs/ares-inspect.spec.js +252 -252
  133. package/spec/jsSpecs/ares-install.spec.js +150 -150
  134. package/spec/jsSpecs/ares-log.spec.js +824 -824
  135. package/spec/jsSpecs/ares-novacom.spec.js +149 -149
  136. package/spec/jsSpecs/ares-pull.spec.js +157 -157
  137. package/spec/jsSpecs/ares-push.spec.js +146 -146
  138. package/spec/jsSpecs/ares-setup-device.spec.js +1 -0
  139. package/spec/jsSpecs/ares-shell.spec.js +220 -220
  140. package/spec/jsSpecs/ares.spec.js +83 -83
  141. package/spec/support/jasmine.json +22 -22
  142. package/spec/tempFiles/nativeApp/auto/pkg_arm64/appinfo.json +9 -9
  143. package/spec/tempFiles/nativeApp/ose/pkg_arm/appinfo.json +8 -8
  144. package/spec/tempFiles/nativeApp/ose/pkg_arm/package.properties +2 -2
  145. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/appinfo.json +9 -9
  146. package/spec/tempFiles/nativeApp/rsi/pkg_x86/appinfo.json +9 -9
  147. package/spec/tempFiles/sign/sign.crt +32 -32
  148. package/spec/tempFiles/sign/signPriv.key +52 -52
  149. package/spec/test_data/ares-generate.json +58 -91
  150. package/spec/test_data/ares.json +50 -50
  151. package/webos-tools-cli-3.2.1.tgz +0 -0
  152. package/webos-tools-cli-3.2.0.tgz +0 -0
@@ -1,372 +1,372 @@
1
- /*
2
- * Copyright (c) 2023-2024 LG Electronics Inc.
3
- *
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- const path = require('path'),
8
- fs = require('fs'),
9
- common = require('../common-spec'),
10
- Generator = require('../../../lib/generator');
11
-
12
- const generator = new Generator(),
13
- aresCmd = 'Generator',
14
- outputPath = path.resolve(__dirname, "../..", "tempFiles"),
15
- sampleAppPath = path.resolve(outputPath, "sampleApp"),
16
- sampleServicePath = path.resolve(outputPath, "sampleService");
17
-
18
- let expectedTemplate,
19
- expectedList;
20
-
21
- beforeAll(function(done) {
22
- common.getOptions()
23
- .then(function() {
24
- return common.getExpectedResult("ares-generate");
25
- }).then(function(result) {
26
- expectedTemplate = result.template;
27
- expectedList = result.list;
28
- done();
29
- });
30
- });
31
-
32
- afterAll(function(done) {
33
- common.removeOutDir(sampleAppPath); // can be in afterAll
34
- common.removeOutDir(sampleServicePath); // can be in afterAll
35
- done();
36
- });
37
-
38
- describe(aresCmd + ' --list', function() {
39
- it('List the available templates', function(done) {
40
- generator.showTemplates(false, function(err, value) {
41
- expectedList = expectedList.join('\n'); // multi string in array. need to join
42
- value.msg = value.msg.trim().replace(/\s+['\n']/g, '\n');
43
- expect(value.msg).toContain(expectedList);
44
- done();
45
- });
46
- });
47
- });
48
-
49
- describe(aresCmd +' --property', function() {
50
- beforeEach(function(done) {
51
- common.removeOutDir(sampleAppPath);
52
- done();
53
- });
54
- afterEach(function(done) {
55
- setTimeout(() => {
56
- common.removeOutDir(sampleAppPath);
57
- done();
58
- }, 3000);
59
- });
60
-
61
- it('Set the properties of appinfo.json', function(done) {
62
- const id = "com.sample.app",
63
- version = "2.0.0",
64
- title = "First App",
65
- options = {
66
- tmplName: "webappinfo",
67
- props: ['id='+`${id}`, 'version='+`${version}` , 'title='+`${title}`],
68
- out:sampleAppPath
69
- };
70
-
71
- let outputTxt = "", text, outputObj;
72
- generator.generate(options, function(err, value) {
73
- outputTxt += value.msg;
74
- setTimeout(() => {
75
- expect(outputTxt).toContain("Generating webappinfo");
76
- expect(outputTxt).toContain("Success");
77
- expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
78
- try {
79
- text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
80
- outputObj = JSON.parse(text);
81
- } catch (error) {
82
- console.error(error);
83
- }
84
- expect(outputObj.id).toBe(id);
85
- expect(outputObj.version).toBe(version);
86
- expect(outputObj.title).toBe(title);
87
- done();
88
- }, 5000);
89
- });
90
- });
91
-
92
- it('Set the properties of services.json', function(done) {
93
- const id = "com.sample.app.service",
94
- version = "1.1.1",
95
- options = {
96
- tmplName :"jsserviceinfo",
97
- props: ['id='+`${id}`, 'version='+`${version}`],
98
- out:sampleAppPath
99
- };
100
-
101
- let outputTxt = "", text, outputObj;
102
- generator.generate(options, function(err, value) {
103
- outputTxt += value.msg;
104
- setTimeout(() => {
105
- expect(outputTxt).toContain("Generating jsserviceinfo");
106
- expect(outputTxt).toContain("Success");
107
- expect(fs.existsSync(path.join(sampleAppPath, "services.json"))).toBe(true);
108
- try {
109
- text = fs.readFileSync(path.join(sampleAppPath, "services.json"));
110
- outputObj = JSON.parse(text);
111
- } catch (error) {
112
- console.error(error);
113
- }
114
- expect(outputObj.id).toBe(id);
115
- done();
116
- }, 5000);
117
- });
118
- });
119
-
120
- it('Set the properties of qmlappinfo.json', function(done) {
121
- const id = "com.qml.app",
122
- version = "2.0.0",
123
- options = {
124
- tmplName :"qmlappinfo",
125
- props: ['id='+`${id}`, 'version='+`${version}`],
126
- out:sampleAppPath
127
- };
128
-
129
- let outputTxt = "", text, outputObj;
130
- generator.generate(options, function(err, value) {
131
- outputTxt += value.msg;
132
- setTimeout(() => {
133
- expect(outputTxt).toContain("Generating qmlappinfo");
134
- expect(outputTxt).toContain("Success");
135
- expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
136
- try {
137
- text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
138
- outputObj = JSON.parse(text);
139
- } catch (error) {
140
- console.error(error);
141
- }
142
- expect(outputObj.id).toBe(id);
143
- done();
144
- }, 5000);
145
- });
146
- });
147
- });
148
-
149
- describe(aresCmd + ' --template', function() {
150
- beforeEach(function(done) {
151
- common.removeOutDir(sampleAppPath);
152
- done();
153
- });
154
- afterEach(function(done) {
155
- setTimeout(() => {
156
- common.removeOutDir(sampleAppPath);
157
- done();
158
- }, 5000);
159
- });
160
-
161
-
162
- it('webapp : appinfo.json for web app', function(done) {
163
- const options = {
164
- tmplName: "webapp",
165
- out:sampleAppPath
166
- };
167
-
168
- let outputTxt = "", fileList;
169
- generator.generate(options, function(err, value) {
170
- outputTxt += value.msg;
171
- setTimeout(() => {
172
- expect(outputTxt).toContain("Generating webapp");
173
- expect(outputTxt).toContain("Success");
174
- expect(fs.existsSync(path.join(sampleAppPath))).toBe(true);
175
- try {
176
- fileList = fs.readdirSync(sampleAppPath);
177
- } catch (error) {
178
- console.error(error);
179
- }
180
- expect(fileList.toString()).toContain(expectedTemplate.webappinfo.toString());
181
- done();
182
- }, 5000);
183
- });
184
- });
185
-
186
- it('hosted_webapp : generate hosted template app', function(done) {
187
- const url = "http://www.google.com",
188
- options = {
189
- tmplName: "hosted_webapp",
190
- props: ['url='+`${url}`],
191
- out:sampleAppPath
192
- };
193
-
194
- let outputTxt = "", text;
195
- generator.generate(options, function(err, value) {
196
- outputTxt += value.msg;
197
- setTimeout(() => {
198
- expect(outputTxt).toContain("Generating hosted_webapp");
199
- expect(outputTxt).toContain("Success");
200
- expect(fs.existsSync(path.join(sampleAppPath, "index.html"))).toBe(true);
201
- try {
202
- text = fs.readFileSync(path.join(sampleAppPath,"index.html"));
203
- } catch (error) {
204
- console.error(error);
205
- }
206
- expect(text.toString()).toContain(url);
207
- done();
208
- }, 5000);
209
- });
210
- });
211
-
212
- it('qmlapp : generate qml template app', function(done) {
213
- const id = "com.qml.app",
214
- title = "First App",
215
- options = {
216
- tmplName: "qmlapp",
217
- props: ['id='+`${id}`, 'title='+`${title}`],
218
- out:sampleAppPath
219
- };
220
-
221
- let outputTxt = "", text;
222
- generator.generate(options, function(err, value) {
223
- outputTxt += value.msg;
224
- setTimeout(() => {
225
- expect(outputTxt).toContain("Generating qmlapp");
226
- expect(outputTxt).toContain("Success");
227
- expect(fs.existsSync(path.join(sampleAppPath, "main.qml"))).toBe(true);
228
- try {
229
- text = fs.readFileSync(path.join(sampleAppPath,"main.qml"), 'utf8');
230
- } catch (error) {
231
- console.error(error);
232
- }
233
- expect(text).toContain("com.qml.app");
234
- done();
235
- }, 5000);
236
- });
237
- });
238
-
239
- it('js_service : generate js_service template', function(done) {
240
- const id = "com.sample.app.service'",
241
- options = {
242
- tmplName: "js_service",
243
- svcinfo: {id:`${id}`},
244
- out:sampleAppPath
245
- };
246
-
247
- let outputTxt = "", text;
248
- generator.generate(options, function(err, value) {
249
- outputTxt += value.msg;
250
- setTimeout(() => {
251
- expect(outputTxt).toContain("Generating js_service");
252
- expect(outputTxt).toContain("Success");
253
- expect(fs.existsSync(path.join(sampleAppPath, "services.json"))).toBe(true);
254
- try {
255
- text = fs.readFileSync(path.join(sampleAppPath,"services.json"));
256
- } catch (error) {
257
- console.error(error);
258
- }
259
- expect(text.toString()).toContain(id);
260
- done();
261
- }, 5000);
262
- });
263
- });
264
- });
265
-
266
- describe(aresCmd + ' --overwrite(-f)', function() {
267
- afterEach(function(done) {
268
- setTimeout(() => {
269
- common.removeOutDir(sampleAppPath);
270
- done();
271
- }, 5000);
272
- });
273
-
274
- it('webappinfo : appinfo.json for web app', function(done) {
275
- const options = {
276
- tmplName: "webappinfo",
277
- out:sampleAppPath
278
- };
279
-
280
- let outputTxt = "", fileList;
281
- generator.generate(options, function(err, value) {
282
- outputTxt += value.msg;
283
- setTimeout(() => {
284
- expect(outputTxt).toContain("Generating webappinfo");
285
- expect(outputTxt).toContain("Success");
286
- expect(fs.existsSync(path.join(sampleAppPath))).toBe(true);
287
-
288
- try {
289
- fileList = fs.readdirSync(sampleAppPath);
290
- } catch (error) {
291
- console.error(error);
292
- }
293
- expect(JSON.stringify(fileList)).toBe(JSON.stringify(expectedTemplate.webappinfo));
294
- done();
295
- }, 3000);
296
- });
297
- });
298
-
299
- it('Overwirte existing files', function(done) {
300
- const id = "com.domain.app",
301
- version = "2.0.0",
302
- title = "First App",
303
- options = {
304
- tmplName: "webappinfo",
305
- props: ['id='+`${id}`, 'version='+`${version}`, 'title='+`${title}`],
306
- out:sampleAppPath,
307
- overwrite:true
308
- };
309
-
310
- let outputTxt = "", text, outputObj;
311
- generator.generate(options, function(err, value) {
312
- outputTxt += value.msg;
313
- setTimeout(() => {
314
- expect(outputTxt).toContain("Generating webapp");
315
- expect(outputTxt).toContain("Success");
316
- expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
317
-
318
- try {
319
- text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
320
- outputObj = JSON.parse(text);
321
- } catch (error) {
322
- console.error(error);
323
- }
324
- expect(outputObj.id).toBe(id);
325
- expect(outputObj.version).toBe(version);
326
- expect(outputObj.title).toBe(title);
327
- done();
328
- }, 3000);
329
- });
330
- });
331
- });
332
-
333
- describe(aresCmd + ' --servicename', function() {
334
- beforeEach(function(done) {
335
- common.removeOutDir(sampleServicePath);
336
- done();
337
- });
338
- afterEach(function(done) {
339
- setTimeout(() => {
340
- common.removeOutDir(sampleServicePath);
341
- done();
342
- }, 5000);
343
- });
344
-
345
- it('Set the servicename for webOS service.', function(done) {
346
- const id = "com.test.app.service",
347
- options = {
348
- tmplName: "jsserviceinfo",
349
- svcName: id,
350
- out:sampleServicePath
351
- };
352
-
353
- let outputTxt = "", text, outputObj;
354
- generator.generate(options, function(err, value) {
355
- outputTxt += value.msg;
356
- setTimeout(() => {
357
- expect(outputTxt).toContain("Generating jsserviceinfo");
358
- expect(outputTxt).toContain("Success");
359
- expect(fs.existsSync(path.join(sampleServicePath, "services.json"))).toBe(true);
360
-
361
- try {
362
- text = fs.readFileSync(path.join(sampleServicePath, "services.json"));
363
- outputObj = JSON.parse(text);
364
- } catch (error) {
365
- console.error(error);
366
- }
367
- expect(outputObj.id).toBe(id);
368
- done();
369
- }, 3000);
370
- });
371
- });
372
- });
1
+ /*
2
+ * Copyright (c) 2023-2024 LG Electronics Inc.
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ const path = require('path'),
8
+ fs = require('fs'),
9
+ common = require('../common-spec'),
10
+ Generator = require('../../../lib/generator');
11
+
12
+ const generator = new Generator(),
13
+ aresCmd = 'Generator',
14
+ outputPath = path.resolve(__dirname, "../..", "tempFiles"),
15
+ sampleAppPath = path.resolve(outputPath, "sampleApp"),
16
+ sampleServicePath = path.resolve(outputPath, "sampleService");
17
+
18
+ let expectedTemplate,
19
+ expectedList;
20
+
21
+ beforeAll(function(done) {
22
+ common.getOptions()
23
+ .then(function() {
24
+ return common.getExpectedResult("ares-generate");
25
+ }).then(function(result) {
26
+ expectedTemplate = result.template;
27
+ expectedList = result.list;
28
+ done();
29
+ });
30
+ });
31
+
32
+ afterAll(function(done) {
33
+ common.removeOutDir(sampleAppPath); // can be in afterAll
34
+ common.removeOutDir(sampleServicePath); // can be in afterAll
35
+ done();
36
+ });
37
+
38
+ describe(aresCmd + ' --list', function() {
39
+ it('List the available templates', function(done) {
40
+ generator.showTemplates(false, function(err, value) {
41
+ expectedList = expectedList.join('\n'); // multi string in array. need to join
42
+ value.msg = value.msg.trim().replace(/\s+['\n']/g, '\n');
43
+ expect(value.msg).toContain(expectedList);
44
+ done();
45
+ });
46
+ });
47
+ });
48
+
49
+ describe(aresCmd +' --property', function() {
50
+ beforeEach(function(done) {
51
+ common.removeOutDir(sampleAppPath);
52
+ done();
53
+ });
54
+ afterEach(function(done) {
55
+ setTimeout(() => {
56
+ common.removeOutDir(sampleAppPath);
57
+ done();
58
+ }, 3000);
59
+ });
60
+
61
+ it('Set the properties of appinfo.json', function(done) {
62
+ const id = "com.sample.app",
63
+ version = "2.0.0",
64
+ title = "First App",
65
+ options = {
66
+ tmplName: "webappinfo",
67
+ props: ['id='+`${id}`, 'version='+`${version}` , 'title='+`${title}`],
68
+ out:sampleAppPath
69
+ };
70
+
71
+ let outputTxt = "", text, outputObj;
72
+ generator.generate(options, function(err, value) {
73
+ outputTxt += value.msg;
74
+ setTimeout(() => {
75
+ expect(outputTxt).toContain("Generating webappinfo");
76
+ expect(outputTxt).toContain("Success");
77
+ expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
78
+ try {
79
+ text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
80
+ outputObj = JSON.parse(text);
81
+ } catch (error) {
82
+ console.error(error);
83
+ }
84
+ expect(outputObj.id).toBe(id);
85
+ expect(outputObj.version).toBe(version);
86
+ expect(outputObj.title).toBe(title);
87
+ done();
88
+ }, 5000);
89
+ });
90
+ });
91
+
92
+ it('Set the properties of services.json', function(done) {
93
+ const id = "com.sample.app.service",
94
+ version = "1.1.1",
95
+ options = {
96
+ tmplName :"jsserviceinfo",
97
+ props: ['id='+`${id}`, 'version='+`${version}`],
98
+ out:sampleAppPath
99
+ };
100
+
101
+ let outputTxt = "", text, outputObj;
102
+ generator.generate(options, function(err, value) {
103
+ outputTxt += value.msg;
104
+ setTimeout(() => {
105
+ expect(outputTxt).toContain("Generating jsserviceinfo");
106
+ expect(outputTxt).toContain("Success");
107
+ expect(fs.existsSync(path.join(sampleAppPath, "services.json"))).toBe(true);
108
+ try {
109
+ text = fs.readFileSync(path.join(sampleAppPath, "services.json"));
110
+ outputObj = JSON.parse(text);
111
+ } catch (error) {
112
+ console.error(error);
113
+ }
114
+ expect(outputObj.id).toBe(id);
115
+ done();
116
+ }, 5000);
117
+ });
118
+ });
119
+
120
+ it('Set the properties of qmlappinfo.json', function(done) {
121
+ const id = "com.qml.app",
122
+ version = "2.0.0",
123
+ options = {
124
+ tmplName :"qmlappinfo",
125
+ props: ['id='+`${id}`, 'version='+`${version}`],
126
+ out:sampleAppPath
127
+ };
128
+
129
+ let outputTxt = "", text, outputObj;
130
+ generator.generate(options, function(err, value) {
131
+ outputTxt += value.msg;
132
+ setTimeout(() => {
133
+ expect(outputTxt).toContain("Generating qmlappinfo");
134
+ expect(outputTxt).toContain("Success");
135
+ expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
136
+ try {
137
+ text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
138
+ outputObj = JSON.parse(text);
139
+ } catch (error) {
140
+ console.error(error);
141
+ }
142
+ expect(outputObj.id).toBe(id);
143
+ done();
144
+ }, 5000);
145
+ });
146
+ });
147
+ });
148
+
149
+ describe(aresCmd + ' --template', function() {
150
+ beforeEach(function(done) {
151
+ common.removeOutDir(sampleAppPath);
152
+ done();
153
+ });
154
+ afterEach(function(done) {
155
+ setTimeout(() => {
156
+ common.removeOutDir(sampleAppPath);
157
+ done();
158
+ }, 5000);
159
+ });
160
+
161
+
162
+ it('webapp : appinfo.json for web app', function(done) {
163
+ const options = {
164
+ tmplName: "webapp",
165
+ out:sampleAppPath
166
+ };
167
+
168
+ let outputTxt = "", fileList;
169
+ generator.generate(options, function(err, value) {
170
+ outputTxt += value.msg;
171
+ setTimeout(() => {
172
+ expect(outputTxt).toContain("Generating webapp");
173
+ expect(outputTxt).toContain("Success");
174
+ expect(fs.existsSync(path.join(sampleAppPath))).toBe(true);
175
+ try {
176
+ fileList = fs.readdirSync(sampleAppPath);
177
+ } catch (error) {
178
+ console.error(error);
179
+ }
180
+ expect(fileList.toString()).toContain(expectedTemplate.webappinfo.toString());
181
+ done();
182
+ }, 5000);
183
+ });
184
+ });
185
+
186
+ it('hosted_webapp : generate hosted template app', function(done) {
187
+ const url = "http://www.google.com",
188
+ options = {
189
+ tmplName: "hosted_webapp",
190
+ props: ['url='+`${url}`],
191
+ out:sampleAppPath
192
+ };
193
+
194
+ let outputTxt = "", text;
195
+ generator.generate(options, function(err, value) {
196
+ outputTxt += value.msg;
197
+ setTimeout(() => {
198
+ expect(outputTxt).toContain("Generating hosted_webapp");
199
+ expect(outputTxt).toContain("Success");
200
+ expect(fs.existsSync(path.join(sampleAppPath, "index.html"))).toBe(true);
201
+ try {
202
+ text = fs.readFileSync(path.join(sampleAppPath,"index.html"));
203
+ } catch (error) {
204
+ console.error(error);
205
+ }
206
+ expect(text.toString()).toContain(url);
207
+ done();
208
+ }, 5000);
209
+ });
210
+ });
211
+
212
+ it('qmlapp : generate qml template app', function(done) {
213
+ const id = "com.qml.app",
214
+ title = "First App",
215
+ options = {
216
+ tmplName: "qmlapp",
217
+ props: ['id='+`${id}`, 'title='+`${title}`],
218
+ out:sampleAppPath
219
+ };
220
+
221
+ let outputTxt = "", text;
222
+ generator.generate(options, function(err, value) {
223
+ outputTxt += value.msg;
224
+ setTimeout(() => {
225
+ expect(outputTxt).toContain("Generating qmlapp");
226
+ expect(outputTxt).toContain("Success");
227
+ expect(fs.existsSync(path.join(sampleAppPath, "main.qml"))).toBe(true);
228
+ try {
229
+ text = fs.readFileSync(path.join(sampleAppPath,"main.qml"), 'utf8');
230
+ } catch (error) {
231
+ console.error(error);
232
+ }
233
+ expect(text).toContain("com.qml.app");
234
+ done();
235
+ }, 5000);
236
+ });
237
+ });
238
+
239
+ it('js_service : generate js_service template', function(done) {
240
+ const id = "com.sample.app.service'",
241
+ options = {
242
+ tmplName: "js_service",
243
+ svcinfo: {id:`${id}`},
244
+ out:sampleAppPath
245
+ };
246
+
247
+ let outputTxt = "", text;
248
+ generator.generate(options, function(err, value) {
249
+ outputTxt += value.msg;
250
+ setTimeout(() => {
251
+ expect(outputTxt).toContain("Generating js_service");
252
+ expect(outputTxt).toContain("Success");
253
+ expect(fs.existsSync(path.join(sampleAppPath, "services.json"))).toBe(true);
254
+ try {
255
+ text = fs.readFileSync(path.join(sampleAppPath,"services.json"));
256
+ } catch (error) {
257
+ console.error(error);
258
+ }
259
+ expect(text.toString()).toContain(id);
260
+ done();
261
+ }, 5000);
262
+ });
263
+ });
264
+ });
265
+
266
+ describe(aresCmd + ' --overwrite(-f)', function() {
267
+ afterEach(function(done) {
268
+ setTimeout(() => {
269
+ common.removeOutDir(sampleAppPath);
270
+ done();
271
+ }, 5000);
272
+ });
273
+
274
+ it('webappinfo : appinfo.json for web app', function(done) {
275
+ const options = {
276
+ tmplName: "webappinfo",
277
+ out:sampleAppPath
278
+ };
279
+
280
+ let outputTxt = "", fileList;
281
+ generator.generate(options, function(err, value) {
282
+ outputTxt += value.msg;
283
+ setTimeout(() => {
284
+ expect(outputTxt).toContain("Generating webappinfo");
285
+ expect(outputTxt).toContain("Success");
286
+ expect(fs.existsSync(path.join(sampleAppPath))).toBe(true);
287
+
288
+ try {
289
+ fileList = fs.readdirSync(sampleAppPath);
290
+ } catch (error) {
291
+ console.error(error);
292
+ }
293
+ expect(JSON.stringify(fileList)).toBe(JSON.stringify(expectedTemplate.webappinfo));
294
+ done();
295
+ }, 3000);
296
+ });
297
+ });
298
+
299
+ it('Overwirte existing files', function(done) {
300
+ const id = "com.domain.app",
301
+ version = "2.0.0",
302
+ title = "First App",
303
+ options = {
304
+ tmplName: "webappinfo",
305
+ props: ['id='+`${id}`, 'version='+`${version}`, 'title='+`${title}`],
306
+ out:sampleAppPath,
307
+ overwrite:true
308
+ };
309
+
310
+ let outputTxt = "", text, outputObj;
311
+ generator.generate(options, function(err, value) {
312
+ outputTxt += value.msg;
313
+ setTimeout(() => {
314
+ expect(outputTxt).toContain("Generating webapp");
315
+ expect(outputTxt).toContain("Success");
316
+ expect(fs.existsSync(path.join(sampleAppPath, "appinfo.json"))).toBe(true);
317
+
318
+ try {
319
+ text = fs.readFileSync(path.join(sampleAppPath, "appinfo.json"));
320
+ outputObj = JSON.parse(text);
321
+ } catch (error) {
322
+ console.error(error);
323
+ }
324
+ expect(outputObj.id).toBe(id);
325
+ expect(outputObj.version).toBe(version);
326
+ expect(outputObj.title).toBe(title);
327
+ done();
328
+ }, 3000);
329
+ });
330
+ });
331
+ });
332
+
333
+ describe(aresCmd + ' --servicename', function() {
334
+ beforeEach(function(done) {
335
+ common.removeOutDir(sampleServicePath);
336
+ done();
337
+ });
338
+ afterEach(function(done) {
339
+ setTimeout(() => {
340
+ common.removeOutDir(sampleServicePath);
341
+ done();
342
+ }, 5000);
343
+ });
344
+
345
+ it('Set the servicename for webOS service.', function(done) {
346
+ const id = "com.test.app.service",
347
+ options = {
348
+ tmplName: "jsserviceinfo",
349
+ svcName: id,
350
+ out:sampleServicePath
351
+ };
352
+
353
+ let outputTxt = "", text, outputObj;
354
+ generator.generate(options, function(err, value) {
355
+ outputTxt += value.msg;
356
+ setTimeout(() => {
357
+ expect(outputTxt).toContain("Generating jsserviceinfo");
358
+ expect(outputTxt).toContain("Success");
359
+ expect(fs.existsSync(path.join(sampleServicePath, "services.json"))).toBe(true);
360
+
361
+ try {
362
+ text = fs.readFileSync(path.join(sampleServicePath, "services.json"));
363
+ outputObj = JSON.parse(text);
364
+ } catch (error) {
365
+ console.error(error);
366
+ }
367
+ expect(outputObj.id).toBe(id);
368
+ done();
369
+ }, 3000);
370
+ });
371
+ });
372
+ });