@webos-tools/cli 3.0.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.
Files changed (177) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +52 -0
  3. package/APIs.js +79 -0
  4. package/CHANGELOG.md +110 -0
  5. package/LICENSE +201 -0
  6. package/README.md +218 -0
  7. package/bin/ares-config.js +199 -0
  8. package/bin/ares-device-info.js +30 -0
  9. package/bin/ares-device.js +219 -0
  10. package/bin/ares-generate.js +270 -0
  11. package/bin/ares-inspect.js +179 -0
  12. package/bin/ares-install.js +223 -0
  13. package/bin/ares-launch.js +318 -0
  14. package/bin/ares-log.js +255 -0
  15. package/bin/ares-novacom.js +223 -0
  16. package/bin/ares-package.js +336 -0
  17. package/bin/ares-pull.js +156 -0
  18. package/bin/ares-push.js +155 -0
  19. package/bin/ares-server.js +174 -0
  20. package/bin/ares-setup-device.js +520 -0
  21. package/bin/ares-shell.js +132 -0
  22. package/bin/ares.js +166 -0
  23. package/files/conf/ares.json +49 -0
  24. package/files/conf/command-service.json +73 -0
  25. package/files/conf/config.json +22 -0
  26. package/files/conf/ipk.json +30 -0
  27. package/files/conf/novacom-devices.json +35 -0
  28. package/files/conf/query/query-app.json +14 -0
  29. package/files/conf/query/query-hosted.json +18 -0
  30. package/files/conf/query/query-package.json +10 -0
  31. package/files/conf/query/query-service.json +6 -0
  32. package/files/conf/sdk.json +8 -0
  33. package/files/conf/template.json +57 -0
  34. package/files/conf/webos_emul +27 -0
  35. package/files/conf-base/env/sdk-ose.json +8 -0
  36. package/files/conf-base/env/sdk-tv.json +8 -0
  37. package/files/conf-base/profile/config-ose.json +21 -0
  38. package/files/conf-base/profile/config-tv.json +22 -0
  39. package/files/conf-base/query/query-app.json +14 -0
  40. package/files/conf-base/query/query-hosted.json +18 -0
  41. package/files/conf-base/query/query-package.json +10 -0
  42. package/files/conf-base/query/query-service.json +6 -0
  43. package/files/conf-base/template-conf/ose-templates.json +67 -0
  44. package/files/conf-base/template-conf/tv-sdk-templates.json +57 -0
  45. package/files/help/ares-config.help +43 -0
  46. package/files/help/ares-device.help +94 -0
  47. package/files/help/ares-generate.help +65 -0
  48. package/files/help/ares-inspect.help +70 -0
  49. package/files/help/ares-install.help +90 -0
  50. package/files/help/ares-launch.help +100 -0
  51. package/files/help/ares-log-pmlogd.help +84 -0
  52. package/files/help/ares-log.help +101 -0
  53. package/files/help/ares-novacom.help +68 -0
  54. package/files/help/ares-package.help +101 -0
  55. package/files/help/ares-pull.help +38 -0
  56. package/files/help/ares-push.help +38 -0
  57. package/files/help/ares-server.help +39 -0
  58. package/files/help/ares-setup-device.help +75 -0
  59. package/files/help/ares-shell.help +42 -0
  60. package/files/help/ares.help +47 -0
  61. package/files/help/readme.help +23 -0
  62. package/files/schema/ApplicationDescription.schema +319 -0
  63. package/files/schema/NovacomDevices.schema +61 -0
  64. package/files/templates/ose-sdk-templates/appinfo/appinfo.json +10 -0
  65. package/files/templates/ose-sdk-templates/bootplate-web/index.html +88 -0
  66. package/files/templates/ose-sdk-templates/hosted-webapp/index.html +14 -0
  67. package/files/templates/ose-sdk-templates/icon/icon.png +0 -0
  68. package/files/templates/ose-sdk-templates/js-service/helloclient.js +31 -0
  69. package/files/templates/ose-sdk-templates/js-service/helloworld_webos_service.js +188 -0
  70. package/files/templates/ose-sdk-templates/qml-app/main.qml +68 -0
  71. package/files/templates/ose-sdk-templates/qmlappinfo/appinfo.json +10 -0
  72. package/files/templates/ose-sdk-templates/serviceinfo/package.json +11 -0
  73. package/files/templates/ose-sdk-templates/serviceinfo/services.json +8 -0
  74. package/files/templates/tv-sdk-templates/appinfo/appinfo.json +10 -0
  75. package/files/templates/tv-sdk-templates/bootplate-web/index.html +58 -0
  76. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/LICENSE-2.0.txt +202 -0
  77. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/webOSTV-dev.js +1 -0
  78. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/webOSTV.js +1 -0
  79. package/files/templates/tv-sdk-templates/hosted-webapp/index.html +14 -0
  80. package/files/templates/tv-sdk-templates/js-service/helloworld_service.js +37 -0
  81. package/files/templates/tv-sdk-templates/packageinfo/packageinfo.json +4 -0
  82. package/files/templates/tv-sdk-templates/serviceinfo/package.json +11 -0
  83. package/files/templates/tv-sdk-templates/serviceinfo/services.json +8 -0
  84. package/files/templates/tv-sdk-templates/webicon/icon.png +0 -0
  85. package/files/templates/tv-sdk-templates/webicon/largeIcon.png +0 -0
  86. package/lib/base/ares.html +40 -0
  87. package/lib/base/cli-appdata.js +289 -0
  88. package/lib/base/cli-control.js +44 -0
  89. package/lib/base/common-tools.js +29 -0
  90. package/lib/base/error-handler.js +265 -0
  91. package/lib/base/file-watcher.js +155 -0
  92. package/lib/base/help-format.js +147 -0
  93. package/lib/base/luna.js +178 -0
  94. package/lib/base/novacom.js +1191 -0
  95. package/lib/base/sdkenv.js +59 -0
  96. package/lib/base/server.js +137 -0
  97. package/lib/base/setup-device.js +324 -0
  98. package/lib/base/version-tools.js +79 -0
  99. package/lib/com.sdk.ares.hostedapp.ipk +0 -0
  100. package/lib/device.js +1419 -0
  101. package/lib/generator.js +377 -0
  102. package/lib/inspect.js +494 -0
  103. package/lib/install.js +463 -0
  104. package/lib/launch.js +605 -0
  105. package/lib/log.js +584 -0
  106. package/lib/package.js +2129 -0
  107. package/lib/pull.js +231 -0
  108. package/lib/pusher.js +210 -0
  109. package/lib/session.js +74 -0
  110. package/lib/shell.js +193 -0
  111. package/lib/tar-filter-pack.js +62 -0
  112. package/lib/util/copy.js +31 -0
  113. package/lib/util/createFileName.js +40 -0
  114. package/lib/util/eof.js +30 -0
  115. package/lib/util/json.js +63 -0
  116. package/lib/util/merge.js +14 -0
  117. package/lib/util/objclone.js +40 -0
  118. package/lib/util/spinner.js +37 -0
  119. package/npm-shrinkwrap.json +85 -0
  120. package/package.json +98 -0
  121. package/spec/helpers/reporter.js +65 -0
  122. package/spec/jsSpecs/apiTest/generator.spec.js +372 -0
  123. package/spec/jsSpecs/apiTest/inspector.spec.js +89 -0
  124. package/spec/jsSpecs/apiTest/installer.spec.js +67 -0
  125. package/spec/jsSpecs/apiTest/launcher.spec.js +150 -0
  126. package/spec/jsSpecs/apiTest/packager.spec.js +194 -0
  127. package/spec/jsSpecs/apiTest/puller.spec.js +101 -0
  128. package/spec/jsSpecs/apiTest/pusher.spec.js +103 -0
  129. package/spec/jsSpecs/apiTest/server.spec.js +115 -0
  130. package/spec/jsSpecs/apiTest/setupDevice.spec.js +93 -0
  131. package/spec/jsSpecs/apiTest/shell.spec.js +49 -0
  132. package/spec/jsSpecs/ares-config.spec.js +78 -0
  133. package/spec/jsSpecs/ares-device.spec.js +443 -0
  134. package/spec/jsSpecs/ares-generate.spec.js +397 -0
  135. package/spec/jsSpecs/ares-inspect.spec.js +252 -0
  136. package/spec/jsSpecs/ares-install.spec.js +150 -0
  137. package/spec/jsSpecs/ares-launch.spec.js +301 -0
  138. package/spec/jsSpecs/ares-log.spec.js +824 -0
  139. package/spec/jsSpecs/ares-novacom.spec.js +149 -0
  140. package/spec/jsSpecs/ares-package.spec.js +1211 -0
  141. package/spec/jsSpecs/ares-pull.spec.js +157 -0
  142. package/spec/jsSpecs/ares-push.spec.js +146 -0
  143. package/spec/jsSpecs/ares-server.spec.js +160 -0
  144. package/spec/jsSpecs/ares-setup-device.spec.js +281 -0
  145. package/spec/jsSpecs/ares-shell.spec.js +220 -0
  146. package/spec/jsSpecs/ares.spec.js +83 -0
  147. package/spec/jsSpecs/common-spec.js +169 -0
  148. package/spec/support/jasmine.json +22 -0
  149. package/spec/tempFiles/com.jasmine.native.app_0.0.1_arm.ipk +0 -0
  150. package/spec/tempFiles/com.jasmine.native.app_0.0.1_x86.ipk +0 -0
  151. package/spec/tempFiles/com.jasmine.web.app_0.0.1_all.ipk +0 -0
  152. package/spec/tempFiles/com.logtest.web.app_1.0.0_all.ipk +0 -0
  153. package/spec/tempFiles/copyFiles/helloFile.txt +1 -0
  154. package/spec/tempFiles/copyFiles/testFile.txt +1 -0
  155. package/spec/tempFiles/ipks/com.sample.echo_0.0.1_all.ipk +0 -0
  156. package/spec/tempFiles/ipks/com.web.app_1.0.0_all.ipk +0 -0
  157. package/spec/tempFiles/nativeApp/auto/pkg_arm64/GLES2 +0 -0
  158. package/spec/tempFiles/nativeApp/auto/pkg_arm64/appinfo.json +9 -0
  159. package/spec/tempFiles/nativeApp/auto/pkg_arm64/icon.png +0 -0
  160. package/spec/tempFiles/nativeApp/auto/pkg_arm64/largeIcon.png +0 -0
  161. package/spec/tempFiles/nativeApp/ose/pkg_arm/Hello +0 -0
  162. package/spec/tempFiles/nativeApp/ose/pkg_arm/appinfo.json +9 -0
  163. package/spec/tempFiles/nativeApp/ose/pkg_arm/icon.png +0 -0
  164. package/spec/tempFiles/nativeApp/ose/pkg_arm/largeIcon.png +0 -0
  165. package/spec/tempFiles/nativeApp/ose/pkg_arm/package.properties +2 -0
  166. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/Hello +0 -0
  167. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/appinfo.json +9 -0
  168. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/icon.png +0 -0
  169. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/largeIcon.png +0 -0
  170. package/spec/tempFiles/nativeApp/rsi/pkg_x86/GLES2 +0 -0
  171. package/spec/tempFiles/nativeApp/rsi/pkg_x86/appinfo.json +9 -0
  172. package/spec/tempFiles/nativeApp/rsi/pkg_x86/icon.png +0 -0
  173. package/spec/tempFiles/nativeApp/rsi/pkg_x86/largeIcon.png +0 -0
  174. package/spec/tempFiles/sign/sign.crt +32 -0
  175. package/spec/tempFiles/sign/signPriv.key +52 -0
  176. package/spec/test_data/ares-generate.json +41 -0
  177. package/spec/test_data/ares.json +33 -0
@@ -0,0 +1,150 @@
1
+ /*
2
+ * Copyright (c) 2020-2024 LG Electronics Inc.
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ const exec = require('child_process').exec,
8
+ common = require('./common-spec');
9
+
10
+ const aresCmd = 'ares-install';
11
+
12
+ let cmd,
13
+ options;
14
+
15
+ beforeAll(function(done) {
16
+ cmd = common.makeCmd(aresCmd);
17
+ common.getOptions()
18
+ .then(function(result) {
19
+ options = result;
20
+ done();
21
+ });
22
+ });
23
+
24
+ describe(aresCmd + ' -v', function() {
25
+ it('Print help message with verbose log', function(done) {
26
+ exec(cmd + ' -v', function(error, stdout, stderr) {
27
+ if (stderr && stderr.length > 0) {
28
+ common.detectNodeMessage(stderr);
29
+ expect(stderr).toContain("verb argv");
30
+ }
31
+ expect(stdout).toContain("SYNOPSIS");
32
+ expect(error).toBeNull();
33
+ done();
34
+ });
35
+ });
36
+ });
37
+
38
+ describe(aresCmd, function() {
39
+ it("Add device with ares-setup-device", function(done) {
40
+ common.resetDeviceList()
41
+ .then(function() {
42
+ return common.addDeviceInfo();
43
+ }).then(function(result) {
44
+ expect(result).toContain(options.device);
45
+ done();
46
+ }).catch(function(err) {
47
+ expect(err).toContain("The specified value already exist");
48
+ done();
49
+ });
50
+ });
51
+ });
52
+
53
+ describe(aresCmd + ' --device-list(-D)', function() {
54
+ it('Show available device list', function(done) {
55
+ exec(cmd + ' -D', function(error, stdout, stderr) {
56
+ if (stderr && stderr.length > 0) {
57
+ common.detectNodeMessage(stderr);
58
+ }
59
+ expect(stdout).toContain(options.device);
60
+ expect(stdout).toContain(options.profile);
61
+ done();
62
+ });
63
+ });
64
+ });
65
+
66
+ describe(aresCmd, function() {
67
+ it('Install sample ipk to device', function(done) {
68
+ exec(cmd + ` ${options.ipkPath}`, function(error, stdout, stderr) {
69
+ if (stderr && stderr.length > 0) {
70
+ common.detectNodeMessage(stderr);
71
+ }
72
+ expect(stdout).toContain("[Info] Set target device : " + options.device);
73
+ expect(stdout).toContain("Processing");
74
+ expect(stdout).toContain("Success", stderr);
75
+ done();
76
+ });
77
+ });
78
+ });
79
+
80
+ describe(aresCmd + ' --list(-l)', function() {
81
+ it('List the installed apps on device', function(done) {
82
+ exec(cmd + ' -l', function(error, stdout, stderr) {
83
+ if (stderr && stderr.length > 0) {
84
+ common.detectNodeMessage(stderr);
85
+ }
86
+ expect(stdout).toContain(options.pkgId, stderr);
87
+ done();
88
+ });
89
+ });
90
+ });
91
+
92
+ describe(aresCmd + ' --listfull(-F)', function() {
93
+ it('List the installed apps detail information', function(done) {
94
+ exec(cmd + ' -F', function(error, stdout, stderr) {
95
+ if (stderr && stderr.length > 0) {
96
+ common.detectNodeMessage(stderr);
97
+ }
98
+ expect(stdout).toContain(options.pkgId, stderr);
99
+ expect(stdout).toContain("version : 0.0.1");
100
+ done();
101
+ });
102
+ });
103
+ });
104
+
105
+ describe(aresCmd + ' --remove(-r)', function() {
106
+ it('Remove installed sample app', function(done) {
107
+ exec(cmd + ` -r ${options.pkgId}`, function(error, stdout, stderr) {
108
+ if (stderr && stderr.length > 0) {
109
+ common.detectNodeMessage(stderr);
110
+ }
111
+ expect(stdout).toContain(`Removed package ${options.pkgId}`, stderr);
112
+ done();
113
+ });
114
+ });
115
+ });
116
+
117
+ describe(aresCmd + ' --list(-l)', function() {
118
+ it('Check removed app is not on installed List', function(done) {
119
+ exec(cmd + ' -l', function(error, stdout, stderr) {
120
+ if (stderr && stderr.length > 0) {
121
+ common.detectNodeMessage(stderr);
122
+ }
123
+ expect(stdout).not.toContain(options.pkgId, stderr);
124
+ done();
125
+ });
126
+ });
127
+ });
128
+
129
+ describe(aresCmd + ' negative TC', function() {
130
+ it("Set invalid app ipk which is not exist", function(done) {
131
+ exec(cmd + ' com.invalid.app.ipk', function(error, stdout, stderr) {
132
+ if (stderr && stderr.length > 0) {
133
+ common.detectNodeMessage(stderr);
134
+ expect(stderr).toContain("ares-install ERR! [Tips]: The specified path does not exist <com.invalid.app.ipk>");
135
+ }
136
+ done();
137
+ });
138
+ });
139
+
140
+ it("Remove invalid app which is not installed", function(done) {
141
+ exec(cmd + ' -r com.invalid.app', function(error, stdout, stderr) {
142
+ if (stderr && stderr.length > 0) {
143
+ common.detectNodeMessage(stderr);
144
+ expect(stderr).toContain("ares-install ERR! [com.webos.appInstallService failure]: luna-send command failed <FAILED_REMOVE>");
145
+ expect(stderr).toContain("ares-install ERR! [Tips]: Please check app is installed to device by ares-install -l");
146
+ }
147
+ done();
148
+ });
149
+ });
150
+ });
@@ -0,0 +1,301 @@
1
+ /*
2
+ * Copyright (c) 2020-2024 LG Electronics Inc.
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ const path = require('path'),
8
+ exec = require('child_process').exec,
9
+ common = require('./common-spec');
10
+
11
+ const aresCmd = 'ares-launch',
12
+ sampleAppPath = path.join(__dirname, "..", "tempFiles/sampleApp");
13
+
14
+ let cmd,
15
+ options,
16
+ expectedTemplate;
17
+
18
+ beforeAll(function(done) {
19
+ cmd = common.makeCmd(aresCmd);
20
+ common.getOptions()
21
+ .then(function(result) {
22
+ options = result;
23
+ return common.getExpectedResult("ares-generate");
24
+ }).then(function(result) {
25
+ expectedTemplate = result.template;
26
+ done();
27
+ });
28
+ });
29
+
30
+ describe(aresCmd + ' -v', function() {
31
+ it('Print help message with verbose log', function(done) {
32
+ exec(cmd + ' -v', function(error, stdout, stderr) {
33
+ if (stderr && stderr.length > 0) {
34
+ common.detectNodeMessage(stderr);
35
+ expect(stderr).toContain("verb argv");
36
+ }
37
+ expect(stdout).toContain("SYNOPSIS");
38
+ expect(error).toBeNull();
39
+ done();
40
+ });
41
+ });
42
+ });
43
+
44
+ describe(aresCmd, function() {
45
+ it("Add device with ares-setup-device", function(done) {
46
+ common.resetDeviceList()
47
+ .then(function() {
48
+ return common.addDeviceInfo();
49
+ }).then(function(result) {
50
+ expect(result).toContain(options.device);
51
+ done();
52
+ }).catch(function(err) {
53
+ expect(err).toContain("The specified value already exist");
54
+ done();
55
+ });
56
+ });
57
+ });
58
+
59
+ describe(aresCmd + ' --device-list(-D)', function() {
60
+ it('Show available device list', function(done) {
61
+ exec(cmd + ' -D', function(error, stdout, stderr) {
62
+ if (stderr && stderr.length > 0) {
63
+ common.detectNodeMessage(stderr);
64
+ }
65
+ expect(stdout).toContain(options.device);
66
+ expect(stdout).toContain(options.profile);
67
+ done();
68
+ });
69
+ });
70
+ });
71
+
72
+ describe(aresCmd, function() {
73
+ it('Install sample ipk to device with ares-install', function(done) {
74
+ const installCmd = common.makeCmd('ares-install');
75
+ exec(installCmd + ` ${options.ipkPath}`, function(error, stdout, stderr) {
76
+ if (stderr && stderr.length > 0) {
77
+ common.detectNodeMessage(stderr);
78
+ }
79
+ expect(stdout).toContain("Success", stderr);
80
+ setTimeout(function() {
81
+ done();
82
+ },3000);
83
+ });
84
+ });
85
+ });
86
+
87
+ describe(aresCmd, function() {
88
+ it('Launch sample App', function(done) {
89
+ exec(cmd + ` ${options.pkgId}`, function(error, stdout, stderr) {
90
+ if (stderr && stderr.length > 0) {
91
+ common.detectNodeMessage(stderr);
92
+ }
93
+ expect(stdout).toContain("[Info] Set target device : " + options.device);
94
+ expect(stdout).toContain(`Launched application ${options.pkgId}`, error);
95
+ setTimeout(function() {
96
+ done();
97
+ },3000);
98
+ });
99
+ });
100
+ });
101
+
102
+ describe(aresCmd + ' --running(-r)', function() {
103
+ it('Check sample app in running list', function(done) {
104
+ exec(cmd + ' -r', function(error, stdout, stderr) {
105
+ if (stderr && stderr.length > 0) {
106
+ common.detectNodeMessage(stderr);
107
+ }
108
+ expect(stdout).toContain(`${options.pkgId}`);
109
+ done();
110
+ });
111
+ });
112
+ });
113
+
114
+ describe(aresCmd + ' --close(-c)', function() {
115
+ it('Close sample app', function(done) {
116
+ exec(cmd + ` -c ${options.pkgId}`, function(error, stdout, stderr) {
117
+ if (stderr && stderr.length > 0) {
118
+ common.detectNodeMessage(stderr);
119
+ }
120
+ expect(stdout).toContain(`${options.pkgId}`);
121
+ setTimeout(function() {
122
+ done();
123
+ },1000);
124
+ });
125
+ });
126
+ });
127
+
128
+ describe(aresCmd + ' with --display(-dp) option', function() {
129
+ it('Launch sample App', function(done) {
130
+ exec(cmd + ` -dp 1 ${options.pkgId}`, function(error, stdout, stderr) {
131
+ if (stderr && stderr.length > 0) {
132
+ common.detectNodeMessage(stderr);
133
+ }
134
+
135
+ if (options.profile === "ose") {
136
+ expect(stdout).toContain("on display 1");
137
+ }
138
+ expect(stdout).toContain(`Launched application ${options.pkgId}`, error);
139
+ setTimeout(function() {
140
+ done();
141
+ },3000);
142
+ });
143
+ });
144
+ });
145
+
146
+ describe(aresCmd + ' --running(-r) with --display(-dp) option', function() {
147
+ it('Check sample app in running list', function(done) {
148
+ exec(cmd + ' -r -dp 1', function(error, stdout, stderr) {
149
+ if (stderr && stderr.length > 0) {
150
+ common.detectNodeMessage(stderr);
151
+ }
152
+
153
+ if (options.profile === "ose") {
154
+ expect(stdout).toContain("- display 1");
155
+ }
156
+ expect(stdout).toContain(`${options.pkgId}`);
157
+ done();
158
+ });
159
+ });
160
+ });
161
+
162
+ describe(aresCmd + ' --close(-c) with --display(-dp) option', function() {
163
+ it('Close sample app', function(done) {
164
+ exec(cmd + ` -c -dp 1 ${options.pkgId}`, function(error, stdout, stderr) {
165
+ if (stderr && stderr.length > 0) {
166
+ common.detectNodeMessage(stderr);
167
+ }
168
+
169
+ if (options.profile === "ose") {
170
+ expect(stdout).toContain("on display 1");
171
+ }
172
+ expect(stdout).toContain(`${options.pkgId}`);
173
+ setTimeout(function() {
174
+ done();
175
+ },1000);
176
+ });
177
+ });
178
+ });
179
+
180
+ describe(aresCmd + ' with -p "{\'displayAffinity\':1}" option', function() {
181
+ it('Launch sample App', function(done) {
182
+ exec(cmd + ` -p "{'displayAffinity':0}" ${options.pkgId}`, function(error, stdout, stderr) {
183
+ if (stderr && stderr.length > 0) {
184
+ common.detectNodeMessage(stderr);
185
+ }
186
+
187
+ if (options.profile === "ose") {
188
+ expect(stdout).toContain("on display 0");
189
+ }
190
+ expect(stdout).toContain(`Launched application ${options.pkgId}`, error);
191
+ setTimeout(function() {
192
+ done();
193
+ },3000);
194
+ });
195
+ });
196
+ });
197
+
198
+ describe(aresCmd + ' --close(-c) p "{\'displayAffinity\':1}" option', function() {
199
+ it('Close sample app', function(done) {
200
+ exec(cmd + ` -c -p "{'displayAffinity':0}" ${options.pkgId}`, function(error, stdout, stderr) {
201
+ if (stderr && stderr.length > 0) {
202
+ common.detectNodeMessage(stderr);
203
+ }
204
+
205
+ if (options.profile === "ose") {
206
+ expect(stdout).toContain("on display 0");
207
+ }
208
+ expect(stdout).toContain(`${options.pkgId}`);
209
+ setTimeout(function() {
210
+ done();
211
+ },1000);
212
+ });
213
+ });
214
+ });
215
+
216
+ describe(aresCmd, function() {
217
+ it('Remove installed sample app with ares-install', function(done) {
218
+ const installCmd = common.makeCmd('ares-install');
219
+ exec(installCmd + ` -r ${options.pkgId}`, function(error, stdout, stderr) {
220
+ if (stderr && stderr.length > 0) {
221
+ common.detectNodeMessage(stderr);
222
+ }
223
+ expect(stdout).toContain(`Removed package ${options.pkgId}`, stderr);
224
+ done();
225
+ });
226
+ });
227
+ });
228
+
229
+ describe(aresCmd +' --hosted(-H)', function() {
230
+ beforeAll(function(done) {
231
+ common.removeOutDir(sampleAppPath);
232
+ done();
233
+ });
234
+ afterAll(function(done) {
235
+ common.removeOutDir(sampleAppPath);
236
+ done();
237
+ });
238
+
239
+ it('Generate SampleApp', function(done) {
240
+ const generateCmd = common.makeCmd('ares-generate');
241
+ exec(generateCmd + ` -t ${expectedTemplate.webapp} -p "id=com.sample.app" ${sampleAppPath}`, function(error, stdout, stderr) {
242
+ if (stderr && stderr.length > 0) {
243
+ common.detectNodeMessage(stderr);
244
+ }
245
+ expect(stdout).toContain(`Generating ${expectedTemplate.webapp}`);
246
+ expect(error).toBeNull();
247
+ done();
248
+ });
249
+ });
250
+
251
+ it('Launch -H SampleApp', function(done) {
252
+ let stdoutData = "";
253
+ const child = exec(cmd + ` -H ${sampleAppPath}`);
254
+
255
+ child.stdout.on('data', function(data) {
256
+ process.stdout.write(data);
257
+ stdoutData += data;
258
+ });
259
+
260
+ child.stderr.on('data', function(data) {
261
+ if (data && data.length > 0) {
262
+ common.detectNodeMessage(data);
263
+ }
264
+ });
265
+
266
+ setTimeout(() => {
267
+ child.kill();
268
+ expect(stdoutData).toContain('Ares Hosted App is now running');
269
+ done();
270
+ }, 3000);
271
+ });
272
+
273
+
274
+ it('Remove installed ares-hosted app with ares-install', function(done) {
275
+ const installCmd = common.makeCmd('ares-install');
276
+ exec(installCmd + ' -r com.sdk.ares.hostedapp', function(error, stdout, stderr) {
277
+ if (stderr && stderr.length > 0) {
278
+ common.detectNodeMessage(stderr);
279
+ }
280
+ expect(stdout).toContain(`Removed package com.sdk.ares.hostedapp`, stderr);
281
+ done();
282
+ });
283
+ });
284
+ });
285
+
286
+ describe(aresCmd + ' negative TC', function() {
287
+ it("Close a invalid app ipk which is not running", function(done) {
288
+ exec(cmd + ' -c com.invalid.app', function(error, stdout, stderr) {
289
+ if (stderr && stderr.length > 0) {
290
+ common.detectNodeMessage(stderr);
291
+ if (options.profile === "ose") {
292
+ expect(stderr).toContain("ares-launch ERR! [com.webos.applicationManager failure]: luna-send command failed <com.invalid.app is not running>");
293
+ expect(stderr).toContain("ares-launch ERR! [Tips]: Please check the list of running apps using ares-launch -r");
294
+ } else if (options.profile === "tv") {
295
+ expect(stderr).toContain("ares-launch ERR! [com.webos.applicationManager failure]: luna-send command failed <Invalid appId specified: com.invalid.app>");
296
+ }
297
+ }
298
+ done();
299
+ });
300
+ });
301
+ });