@rnx-kit/cli 0.16.9 → 0.16.10

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.
@@ -0,0 +1,469 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/test.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> test.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">35.13% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>13/37</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">30% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>3/10</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">66.66% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>4/6</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">35.13% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>13/37</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-neutral">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-neutral">&nbsp;</span>
208
+ <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-yes">1x</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-yes">1x</span>
219
+ <span class="cline-any cline-yes">1x</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-no">&nbsp;</span>
228
+ <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-no">&nbsp;</span>
230
+ <span class="cline-any cline-no">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-no">&nbsp;</span>
233
+ <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-no">&nbsp;</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-no">&nbsp;</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-no">&nbsp;</span>
247
+ <span class="cline-any cline-no">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-no">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-no">&nbsp;</span>
255
+ <span class="cline-any cline-no">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-yes">2x</span>
260
+ <span class="cline-any cline-yes">2x</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
+ <span class="cline-any cline-yes">2x</span>
264
+ <span class="cline-any cline-yes">2x</span>
265
+ <span class="cline-any cline-yes">2x</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-no">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-no">&nbsp;</span>
290
+ <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-no">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-yes">2x</span>
299
+ <span class="cline-any cline-yes">208x</span>
300
+ <span class="cline-any cline-yes">208x</span>
301
+ <span class="cline-any cline-yes">208x</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-yes">1x</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Config as CLIConfig } from "@react-native-community/cli-types";
323
+ import { error } from "@rnx-kit/console";
324
+ import { findPackageDir } from "@rnx-kit/tools-node";
325
+ import { parsePlatform } from "@rnx-kit/tools-react-native/platform";
326
+ import * as path from "path";
327
+ &nbsp;
328
+ type Args = {
329
+ platform: "android" | "ios" | "macos" | "windows" | "win32";
330
+ };
331
+ &nbsp;
332
+ type Options = {
333
+ name: string;
334
+ description?: string;
335
+ parse?: (val: string) =&gt; unknown;
336
+ default?:
337
+ | string
338
+ | boolean
339
+ | number
340
+ | ((config: CLIConfig) =&gt; string | boolean | number);
341
+ };
342
+ &nbsp;
343
+ const COMMAND_NAME = "rnx-test";
344
+ &nbsp;
345
+ export function resolveJestCli(): string {
346
+ const jestPath = path.dirname(require.resolve("jest/package.json"));
347
+ return require.resolve("jest-cli", { paths: [jestPath] });
348
+ }
349
+ &nbsp;
350
+ export function <span class="fstat-no" title="function not covered" >rnxTest(</span>
351
+ _argv: string[],
352
+ _config: CLIConfig,
353
+ { platform }: Args
354
+ ): void {
355
+ const runJest: (argv: string[]) =&gt; void = <span class="cstat-no" title="statement not covered" >(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
356
+ <span class="cstat-no" title="statement not covered" > try {</span>
357
+ const { run } = <span class="cstat-no" title="statement not covered" >require(resolveJestCli());</span>
358
+ <span class="cstat-no" title="statement not covered" > return run;</span>
359
+ } catch (e) {
360
+ <span class="cstat-no" title="statement not covered" > error("'rnx-test' is unavailable because 'jest-cli' is not installed");</span>
361
+ <span class="cstat-no" title="statement not covered" > throw e;</span>
362
+ }
363
+ })();
364
+ &nbsp;
365
+ const commandIndex = <span class="cstat-no" title="statement not covered" >process.argv.indexOf(COMMAND_NAME);</span>
366
+ <span class="cstat-no" title="statement not covered" > if (commandIndex &lt; 0) {</span>
367
+ <span class="cstat-no" title="statement not covered" > throw new Error("Failed to parse command arguments");</span>
368
+ }
369
+ &nbsp;
370
+ // Copy and remove the first arguments from `node react-native rnx-test ...`
371
+ const argv = <span class="cstat-no" title="statement not covered" >process.argv.slice(commandIndex + 1);</span>
372
+ &nbsp;
373
+ const platformIndex = <span class="cstat-no" title="statement not covered" >argv.indexOf("--platform");</span>
374
+ <span class="cstat-no" title="statement not covered" > if (platformIndex &lt; 0) {</span>
375
+ <span class="cstat-no" title="statement not covered" > throw new Error("A target platform must be specified");</span>
376
+ }
377
+ &nbsp;
378
+ // Remove `--platform` otherwise Jest will complain about an unrecognized
379
+ // option. We can pass the rest of the arguments to Jest as they are.
380
+ <span class="cstat-no" title="statement not covered" > argv.splice(platformIndex, 2);</span>
381
+ &nbsp;
382
+ <span class="cstat-no" title="statement not covered" > process.env["RN_TARGET_PLATFORM"] = platform;</span>
383
+ <span class="cstat-no" title="statement not covered" > runJest(argv);</span>
384
+ }
385
+ &nbsp;
386
+ export function jestOptions(): Options[] {
387
+ const options = (() =&gt; {
388
+ try {
389
+ // `yargsOptions` is exported as of 29.5.0
390
+ // https://github.com/jestjs/jest/commit/0e8ed24a527b951efe11ed49da46e0bd8c0ebef9
391
+ const { yargsOptions } = require("jest-cli");
392
+ if (yargsOptions) {
393
+ return yargsOptions;
394
+ }
395
+ } catch (_) {
396
+ // ignore
397
+ }
398
+ &nbsp;
399
+ // Starting with Jest 27, we are getting this error:
400
+ //
401
+ // Package subpath './build/cli/args' is not defined by "exports" in
402
+ // /~/node_modules/jest-cli/package.json
403
+ //
404
+ // To work around this, resolve `jest-cli` first, then use the resolved
405
+ // path to import `./build/cli/args`.
406
+ const jestPath = <span class="cstat-no" title="statement not covered" >findPackageDir(resolveJestCli()) || "jest-cli";</span>
407
+ &nbsp;
408
+ <span class="cstat-no" title="statement not covered" > try {</span>
409
+ // `args.js` was moved in 29.2.0
410
+ // https://github.com/jestjs/jest/commit/2ecf723c50c5d25b2fe94e1ff8081f36aed9d67b
411
+ const { options } = <span class="cstat-no" title="statement not covered" >require(`${jestPath}/build/args`);</span>
412
+ <span class="cstat-no" title="statement not covered" > return options;</span>
413
+ } catch (_) {
414
+ // ignore
415
+ }
416
+ &nbsp;
417
+ <span class="cstat-no" title="statement not covered" > try {</span>
418
+ const { options } = <span class="cstat-no" title="statement not covered" >require(`${jestPath}/build/cli/args`);</span>
419
+ <span class="cstat-no" title="statement not covered" > return options;</span>
420
+ } catch (_) {
421
+ // ignore
422
+ }
423
+ &nbsp;
424
+ <span class="cstat-no" title="statement not covered" > return {};</span>
425
+ })();
426
+ return Object.keys(options).map((option) =&gt; {
427
+ const { alias, default: defaultValue, description, type } = options[option];
428
+ const name = `--${option} [${type}]`;
429
+ return {
430
+ name: alias ? `-${alias}, ${name}` : name,
431
+ description,
432
+ default: defaultValue,
433
+ };
434
+ });
435
+ }
436
+ &nbsp;
437
+ export const rnxTestCommand = {
438
+ name: COMMAND_NAME,
439
+ description: "Test runner for React Native apps",
440
+ func: rnxTest,
441
+ options: [
442
+ {
443
+ name: "--platform [android|ios|macos|windows|win32]",
444
+ description: "Platform to target",
445
+ parse: parsePlatform,
446
+ },
447
+ ...jestOptions(),
448
+ ],
449
+ };
450
+ &nbsp;</pre></td></tr></table></pre>
451
+
452
+ <div class='push'></div><!-- for sticky footer -->
453
+ </div><!-- /wrapper -->
454
+ <div class='footer quiet pad2 space-top1 center small'>
455
+ Code coverage generated by
456
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
457
+ at Wed Aug 02 2023 14:28:05 GMT+0000 (Coordinated Universal Time)
458
+ </div>
459
+ <script src="../prettify.js"></script>
460
+ <script>
461
+ window.onload = function () {
462
+ prettyPrint();
463
+ };
464
+ </script>
465
+ <script src="../sorter.js"></script>
466
+ <script src="../block-navigation.js"></script>
467
+ </body>
468
+ </html>
469
+
@@ -411,6 +411,74 @@ BRF:42
411
411
  BRH:21
412
412
  end_of_record
413
413
  TN:
414
+ SF:src/test.ts
415
+ FN:24,resolveJestCli
416
+ FN:29,rnxTest
417
+ FN:34,(anonymous_2)
418
+ FN:65,jestOptions
419
+ FN:66,(anonymous_4)
420
+ FN:105,(anonymous_5)
421
+ FNF:6
422
+ FNH:4
423
+ FNDA:1,resolveJestCli
424
+ FNDA:0,rnxTest
425
+ FNDA:0,(anonymous_2)
426
+ FNDA:2,jestOptions
427
+ FNDA:2,(anonymous_4)
428
+ FNDA:208,(anonymous_5)
429
+ DA:22,1
430
+ DA:25,1
431
+ DA:26,1
432
+ DA:34,0
433
+ DA:35,0
434
+ DA:36,0
435
+ DA:37,0
436
+ DA:39,0
437
+ DA:40,0
438
+ DA:44,0
439
+ DA:45,0
440
+ DA:46,0
441
+ DA:50,0
442
+ DA:52,0
443
+ DA:53,0
444
+ DA:54,0
445
+ DA:59,0
446
+ DA:61,0
447
+ DA:62,0
448
+ DA:66,2
449
+ DA:67,2
450
+ DA:70,2
451
+ DA:71,2
452
+ DA:72,2
453
+ DA:85,0
454
+ DA:87,0
455
+ DA:90,0
456
+ DA:91,0
457
+ DA:96,0
458
+ DA:97,0
459
+ DA:98,0
460
+ DA:103,0
461
+ DA:105,2
462
+ DA:106,208
463
+ DA:107,208
464
+ DA:108,208
465
+ DA:116,1
466
+ LF:37
467
+ LH:13
468
+ BRDA:45,0,0,0
469
+ BRDA:45,0,1,0
470
+ BRDA:53,1,0,0
471
+ BRDA:53,1,1,0
472
+ BRDA:71,2,0,2
473
+ BRDA:71,2,1,0
474
+ BRDA:85,3,0,0
475
+ BRDA:85,3,1,0
476
+ BRDA:109,4,0,18
477
+ BRDA:109,4,1,190
478
+ BRF:10
479
+ BRH:3
480
+ end_of_record
481
+ TN:
414
482
  SF:src/bundle/defaultPlugins.ts
415
483
  FN:14,getDefaultBundlerPlugins
416
484
  FNF:1
package/lib/test.d.ts CHANGED
@@ -8,7 +8,9 @@ type Options = {
8
8
  parse?: (val: string) => unknown;
9
9
  default?: string | boolean | number | ((config: CLIConfig) => string | boolean | number);
10
10
  };
11
+ export declare function resolveJestCli(): string;
11
12
  export declare function rnxTest(_argv: string[], _config: CLIConfig, { platform }: Args): void;
13
+ export declare function jestOptions(): Options[];
12
14
  export declare const rnxTestCommand: {
13
15
  name: string;
14
16
  description: string;
package/lib/test.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAM7E,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CAC7D,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,OAAO,CAAC,EACJ,MAAM,GACN,OAAO,GACP,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACxD,CAAC;AASF,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,SAAS,EAClB,EAAE,QAAQ,EAAE,EAAE,IAAI,GACjB,IAAI,CA8BN;AA4BD,eAAO,MAAM,cAAc;;;;;CAY1B,CAAC"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAM7E,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CAC7D,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,OAAO,CAAC,EACJ,MAAM,GACN,OAAO,GACP,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACxD,CAAC;AAIF,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,SAAS,EAClB,EAAE,QAAQ,EAAE,EAAE,IAAI,GACjB,IAAI,CA8BN;AAED,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAiDvC;AAED,eAAO,MAAM,cAAc;;;;;CAY1B,CAAC"}
package/lib/test.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.rnxTestCommand = exports.rnxTest = void 0;
26
+ exports.rnxTestCommand = exports.jestOptions = exports.rnxTest = exports.resolveJestCli = void 0;
27
27
  const console_1 = require("@rnx-kit/console");
28
28
  const tools_node_1 = require("@rnx-kit/tools-node");
29
29
  const platform_1 = require("@rnx-kit/tools-react-native/platform");
@@ -33,6 +33,7 @@ function resolveJestCli() {
33
33
  const jestPath = path.dirname(require.resolve("jest/package.json"));
34
34
  return require.resolve("jest-cli", { paths: [jestPath] });
35
35
  }
36
+ exports.resolveJestCli = resolveJestCli;
36
37
  function rnxTest(_argv, _config, { platform }) {
37
38
  const runJest = (() => {
38
39
  try {
@@ -62,29 +63,55 @@ function rnxTest(_argv, _config, { platform }) {
62
63
  }
63
64
  exports.rnxTest = rnxTest;
64
65
  function jestOptions() {
65
- // Starting with Jest 27, we are getting this error:
66
- //
67
- // Package subpath './build/cli/args' is not defined by "exports" in
68
- // /~/node_modules/jest-cli/package.json
69
- //
70
- // To work around this, resolve `jest-cli` first, then use the resolved path
71
- // to import `./build/cli/args`.
72
- try {
73
- const jestPath = (0, tools_node_1.findPackageDependencyDir)(resolveJestCli()) || "jest-cli";
74
- const { options } = require(`${jestPath}/build/cli/args`);
75
- return Object.keys(options).map((option) => {
76
- const { default: defaultValue, description, type } = options[option];
77
- return {
78
- name: `--${option} [${type}]`,
79
- description,
80
- default: defaultValue,
81
- };
82
- });
83
- }
84
- catch (_) {
85
- return [];
86
- }
66
+ const options = (() => {
67
+ try {
68
+ // `yargsOptions` is exported as of 29.5.0
69
+ // https://github.com/jestjs/jest/commit/0e8ed24a527b951efe11ed49da46e0bd8c0ebef9
70
+ const { yargsOptions } = require("jest-cli");
71
+ if (yargsOptions) {
72
+ return yargsOptions;
73
+ }
74
+ }
75
+ catch (_) {
76
+ // ignore
77
+ }
78
+ // Starting with Jest 27, we are getting this error:
79
+ //
80
+ // Package subpath './build/cli/args' is not defined by "exports" in
81
+ // /~/node_modules/jest-cli/package.json
82
+ //
83
+ // To work around this, resolve `jest-cli` first, then use the resolved
84
+ // path to import `./build/cli/args`.
85
+ const jestPath = (0, tools_node_1.findPackageDir)(resolveJestCli()) || "jest-cli";
86
+ try {
87
+ // `args.js` was moved in 29.2.0
88
+ // https://github.com/jestjs/jest/commit/2ecf723c50c5d25b2fe94e1ff8081f36aed9d67b
89
+ const { options } = require(`${jestPath}/build/args`);
90
+ return options;
91
+ }
92
+ catch (_) {
93
+ // ignore
94
+ }
95
+ try {
96
+ const { options } = require(`${jestPath}/build/cli/args`);
97
+ return options;
98
+ }
99
+ catch (_) {
100
+ // ignore
101
+ }
102
+ return {};
103
+ })();
104
+ return Object.keys(options).map((option) => {
105
+ const { alias, default: defaultValue, description, type } = options[option];
106
+ const name = `--${option} [${type}]`;
107
+ return {
108
+ name: alias ? `-${alias}, ${name}` : name,
109
+ description,
110
+ default: defaultValue,
111
+ };
112
+ });
87
113
  }
114
+ exports.jestOptions = jestOptions;
88
115
  exports.rnxTestCommand = {
89
116
  name: COMMAND_NAME,
90
117
  description: "Test runner for React Native apps",