@cloudant/couchbackup 2.9.14 → 2.9.15-SNAPSHOT.163

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 (355) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/.scannerwork/scanner-report/analysis-warnings.pb +2 -2
  3. package/.scannerwork/scanner-report/changesets-32.pb +1 -0
  4. package/.scannerwork/scanner-report/changesets-33.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-34.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-35.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-36.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-46.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-63.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-64.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-65.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-68.pb +1 -0
  14. package/.scannerwork/scanner-report/component-1.pb +2 -2
  15. package/.scannerwork/scanner-report/component-11.pb +1 -1
  16. package/.scannerwork/scanner-report/component-13.pb +1 -1
  17. package/.scannerwork/scanner-report/component-14.pb +1 -1
  18. package/.scannerwork/scanner-report/component-15.pb +1 -1
  19. package/.scannerwork/scanner-report/component-17.pb +1 -1
  20. package/.scannerwork/scanner-report/component-18.pb +1 -1
  21. package/.scannerwork/scanner-report/component-19.pb +1 -1
  22. package/.scannerwork/scanner-report/component-20.pb +1 -1
  23. package/.scannerwork/scanner-report/component-32.pb +1 -0
  24. package/.scannerwork/scanner-report/component-33.pb +1 -0
  25. package/.scannerwork/scanner-report/component-34.pb +1 -0
  26. package/.scannerwork/scanner-report/component-35.pb +1 -0
  27. package/.scannerwork/scanner-report/component-36.pb +1 -0
  28. package/.scannerwork/scanner-report/component-37.pb +1 -1
  29. package/.scannerwork/scanner-report/component-38.pb +1 -1
  30. package/.scannerwork/scanner-report/component-39.pb +1 -1
  31. package/.scannerwork/scanner-report/component-40.pb +1 -1
  32. package/.scannerwork/scanner-report/component-41.pb +1 -1
  33. package/.scannerwork/scanner-report/component-42.pb +1 -1
  34. package/.scannerwork/scanner-report/component-43.pb +1 -1
  35. package/.scannerwork/scanner-report/component-44.pb +1 -1
  36. package/.scannerwork/scanner-report/component-45.pb +1 -0
  37. package/.scannerwork/scanner-report/component-46.pb +1 -0
  38. package/.scannerwork/scanner-report/component-47.pb +1 -0
  39. package/.scannerwork/scanner-report/component-5.pb +1 -1
  40. package/.scannerwork/scanner-report/component-50.pb +1 -1
  41. package/.scannerwork/scanner-report/component-51.pb +1 -1
  42. package/.scannerwork/scanner-report/component-52.pb +1 -1
  43. package/.scannerwork/scanner-report/component-53.pb +1 -1
  44. package/.scannerwork/scanner-report/component-54.pb +1 -1
  45. package/.scannerwork/scanner-report/component-56.pb +1 -1
  46. package/.scannerwork/scanner-report/component-57.pb +1 -1
  47. package/.scannerwork/scanner-report/component-58.pb +1 -1
  48. package/.scannerwork/scanner-report/component-59.pb +1 -1
  49. package/.scannerwork/scanner-report/component-60.pb +1 -1
  50. package/.scannerwork/scanner-report/component-61.pb +1 -1
  51. package/.scannerwork/scanner-report/component-62.pb +1 -1
  52. package/.scannerwork/scanner-report/component-63.pb +1 -0
  53. package/.scannerwork/scanner-report/component-64.pb +1 -0
  54. package/.scannerwork/scanner-report/component-65.pb +1 -0
  55. package/.scannerwork/scanner-report/component-68.pb +1 -0
  56. package/.scannerwork/scanner-report/component-7.pb +1 -1
  57. package/.scannerwork/scanner-report/coverages-11.pb +0 -0
  58. package/.scannerwork/scanner-report/coverages-13.pb +0 -0
  59. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  60. package/.scannerwork/scanner-report/coverages-15.pb +0 -0
  61. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-33.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-40.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-41.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-42.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-43.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-44.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-46.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-5.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-54.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-7.pb +0 -0
  94. package/.scannerwork/scanner-report/duplications-41.pb +2 -0
  95. package/.scannerwork/scanner-report/duplications-42.pb +0 -2
  96. package/.scannerwork/scanner-report/duplications-43.pb +0 -2
  97. package/.scannerwork/scanner-report/duplications-44.pb +0 -2
  98. package/.scannerwork/scanner-report/duplications-51.pb +0 -2
  99. package/.scannerwork/scanner-report/duplications-53.pb +0 -2
  100. package/.scannerwork/scanner-report/duplications-54.pb +2 -0
  101. package/.scannerwork/scanner-report/duplications-64.pb +2 -0
  102. package/.scannerwork/scanner-report/duplications-65.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-68.pb +2 -0
  104. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  105. package/.scannerwork/scanner-report/measures-13.pb +0 -0
  106. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  107. package/.scannerwork/scanner-report/measures-15.pb +0 -0
  108. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  109. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  110. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  111. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  112. package/.scannerwork/scanner-report/measures-33.pb +0 -0
  113. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  114. package/.scannerwork/scanner-report/measures-35.pb +16 -0
  115. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-40.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-41.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-42.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-43.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-44.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-46.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-5.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  128. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-54.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-7.pb +0 -0
  142. package/.scannerwork/scanner-report/metadata.pb +0 -0
  143. package/.scannerwork/scanner-report/source-11.txt +383 -120
  144. package/.scannerwork/scanner-report/source-13.txt +24 -431
  145. package/.scannerwork/scanner-report/source-14.txt +112 -88
  146. package/.scannerwork/scanner-report/source-15.txt +27 -66
  147. package/.scannerwork/scanner-report/source-17.txt +302 -107
  148. package/.scannerwork/scanner-report/source-18.txt +55 -17
  149. package/.scannerwork/scanner-report/source-19.txt +14 -6
  150. package/.scannerwork/scanner-report/source-20.txt +114 -12
  151. package/.scannerwork/scanner-report/source-33.txt +101 -0
  152. package/.scannerwork/scanner-report/source-34.txt +449 -0
  153. package/.scannerwork/scanner-report/source-35.txt +289 -0
  154. package/.scannerwork/scanner-report/source-37.txt +16 -54
  155. package/.scannerwork/scanner-report/source-38.txt +13 -46
  156. package/.scannerwork/scanner-report/source-39.txt +155 -253
  157. package/.scannerwork/scanner-report/source-40.txt +9 -171
  158. package/.scannerwork/scanner-report/source-41.txt +158 -105
  159. package/.scannerwork/scanner-report/source-42.txt +130 -162
  160. package/.scannerwork/scanner-report/source-43.txt +82 -157
  161. package/.scannerwork/scanner-report/source-44.txt +84 -168
  162. package/.scannerwork/scanner-report/source-46.txt +65 -0
  163. package/.scannerwork/scanner-report/{source-67.txt → source-47.txt} +154 -154
  164. package/.scannerwork/scanner-report/source-5.txt +60 -393
  165. package/.scannerwork/scanner-report/source-50.txt +102 -113
  166. package/.scannerwork/scanner-report/source-51.txt +13 -57
  167. package/.scannerwork/scanner-report/source-52.txt +99 -145
  168. package/.scannerwork/scanner-report/source-53.txt +18 -64
  169. package/.scannerwork/scanner-report/source-54.txt +48 -151
  170. package/.scannerwork/scanner-report/source-56.txt +138 -20
  171. package/.scannerwork/scanner-report/source-57.txt +20 -260
  172. package/.scannerwork/scanner-report/source-58.txt +154 -87
  173. package/.scannerwork/scanner-report/source-59.txt +37 -19
  174. package/.scannerwork/scanner-report/source-60.txt +241 -78
  175. package/.scannerwork/scanner-report/source-61.txt +94 -14
  176. package/.scannerwork/scanner-report/source-62.txt +92 -59
  177. package/.scannerwork/scanner-report/source-63.txt +80 -0
  178. package/.scannerwork/scanner-report/source-64.txt +92 -0
  179. package/.scannerwork/scanner-report/source-65.txt +190 -0
  180. package/.scannerwork/scanner-report/source-68.txt +175 -0
  181. package/.scannerwork/scanner-report/source-7.txt +90 -57
  182. package/.scannerwork/scanner-report/symbols-11.pb +603 -92
  183. package/.scannerwork/scanner-report/symbols-13.pb +18 -789
  184. package/.scannerwork/scanner-report/symbols-14.pb +86 -59
  185. package/.scannerwork/scanner-report/symbols-15.pb +23 -57
  186. package/.scannerwork/scanner-report/symbols-17.pb +353 -71
  187. package/.scannerwork/scanner-report/symbols-18.pb +39 -9
  188. package/.scannerwork/scanner-report/symbols-19.pb +9 -8
  189. package/.scannerwork/scanner-report/symbols-20.pb +71 -9
  190. package/.scannerwork/scanner-report/symbols-33.pb +58 -0
  191. package/.scannerwork/scanner-report/symbols-34.pb +790 -0
  192. package/.scannerwork/scanner-report/symbols-35.pb +421 -0
  193. package/.scannerwork/scanner-report/symbols-37.pb +13 -39
  194. package/.scannerwork/scanner-report/symbols-38.pb +9 -33
  195. package/.scannerwork/scanner-report/symbols-39.pb +208 -420
  196. package/.scannerwork/scanner-report/symbols-40.pb +8 -209
  197. package/.scannerwork/scanner-report/symbols-41.pb +203 -86
  198. package/.scannerwork/scanner-report/symbols-42.pb +88 -198
  199. package/.scannerwork/scanner-report/symbols-43.pb +68 -152
  200. package/.scannerwork/scanner-report/symbols-44.pb +59 -180
  201. package/.scannerwork/scanner-report/symbols-46.pb +33 -0
  202. package/.scannerwork/scanner-report/symbols-5.pb +32 -604
  203. package/.scannerwork/scanner-report/symbols-51.pb +13 -41
  204. package/.scannerwork/scanner-report/symbols-52.pb +29 -125
  205. package/.scannerwork/scanner-report/symbols-53.pb +18 -42
  206. package/.scannerwork/scanner-report/symbols-54.pb +41 -143
  207. package/.scannerwork/scanner-report/symbols-56.pb +126 -20
  208. package/.scannerwork/scanner-report/symbols-57.pb +18 -354
  209. package/.scannerwork/scanner-report/symbols-58.pb +141 -56
  210. package/.scannerwork/scanner-report/symbols-59.pb +16 -15
  211. package/.scannerwork/scanner-report/symbols-60.pb +354 -30
  212. package/.scannerwork/scanner-report/symbols-61.pb +58 -13
  213. package/.scannerwork/scanner-report/symbols-62.pb +45 -45
  214. package/.scannerwork/scanner-report/symbols-63.pb +46 -0
  215. package/.scannerwork/scanner-report/symbols-64.pb +44 -0
  216. package/.scannerwork/scanner-report/symbols-65.pb +180 -0
  217. package/.scannerwork/scanner-report/symbols-68.pb +153 -0
  218. package/.scannerwork/scanner-report/symbols-7.pb +27 -31
  219. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +572 -168
  220. package/.scannerwork/scanner-report/syntax-highlightings-13.pb +27 -586
  221. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +89 -142
  222. package/.scannerwork/scanner-report/syntax-highlightings-15.pb +54 -111
  223. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +580 -141
  224. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +65 -25
  225. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +25 -13
  226. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +146 -19
  227. package/.scannerwork/scanner-report/syntax-highlightings-33.pb +154 -0
  228. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +625 -0
  229. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +708 -0
  230. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +25 -64
  231. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +19 -75
  232. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +182 -600
  233. package/.scannerwork/scanner-report/syntax-highlightings-40.pb +14 -255
  234. package/.scannerwork/scanner-report/syntax-highlightings-41.pb +243 -88
  235. package/.scannerwork/scanner-report/syntax-highlightings-42.pb +162 -205
  236. package/.scannerwork/scanner-report/syntax-highlightings-43.pb +68 -175
  237. package/.scannerwork/scanner-report/syntax-highlightings-44.pb +147 -194
  238. package/.scannerwork/scanner-report/syntax-highlightings-46.pb +110 -0
  239. package/.scannerwork/scanner-report/{syntax-highlightings-67.pb → syntax-highlightings-47.pb} +82 -84
  240. package/.scannerwork/scanner-report/syntax-highlightings-5.pb +73 -616
  241. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +688 -123
  242. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +16 -49
  243. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +78 -178
  244. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +27 -53
  245. package/.scannerwork/scanner-report/syntax-highlightings-54.pb +39 -204
  246. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +178 -29
  247. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +17 -252
  248. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +198 -88
  249. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +28 -19
  250. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +250 -78
  251. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +103 -15
  252. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +91 -60
  253. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +95 -0
  254. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +90 -0
  255. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +225 -0
  256. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +214 -0
  257. package/.scannerwork/scanner-report/syntax-highlightings-7.pb +117 -77
  258. package/package.json +2 -2
  259. package/test-18-results.xml +154 -154
  260. package/test-iam-18-results.xml +50 -50
  261. package/.scannerwork/scanner-report/changesets-10.pb +0 -2
  262. package/.scannerwork/scanner-report/changesets-12.pb +0 -1
  263. package/.scannerwork/scanner-report/changesets-21.pb +0 -1
  264. package/.scannerwork/scanner-report/changesets-22.pb +0 -1
  265. package/.scannerwork/scanner-report/changesets-23.pb +0 -1
  266. package/.scannerwork/scanner-report/changesets-24.pb +0 -1
  267. package/.scannerwork/scanner-report/changesets-25.pb +0 -1
  268. package/.scannerwork/scanner-report/changesets-49.pb +0 -1
  269. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  270. package/.scannerwork/scanner-report/changesets-8.pb +0 -1
  271. package/.scannerwork/scanner-report/changesets-9.pb +0 -1
  272. package/.scannerwork/scanner-report/component-10.pb +0 -2
  273. package/.scannerwork/scanner-report/component-12.pb +0 -1
  274. package/.scannerwork/scanner-report/component-2.pb +0 -1
  275. package/.scannerwork/scanner-report/component-21.pb +0 -1
  276. package/.scannerwork/scanner-report/component-22.pb +0 -1
  277. package/.scannerwork/scanner-report/component-23.pb +0 -1
  278. package/.scannerwork/scanner-report/component-24.pb +0 -1
  279. package/.scannerwork/scanner-report/component-25.pb +0 -1
  280. package/.scannerwork/scanner-report/component-49.pb +0 -1
  281. package/.scannerwork/scanner-report/component-67.pb +0 -1
  282. package/.scannerwork/scanner-report/component-8.pb +0 -1
  283. package/.scannerwork/scanner-report/component-9.pb +0 -1
  284. package/.scannerwork/scanner-report/coverages-10.pb +0 -0
  285. package/.scannerwork/scanner-report/coverages-12.pb +0 -0
  286. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  287. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  288. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  289. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  290. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  291. package/.scannerwork/scanner-report/coverages-8.pb +0 -0
  292. package/.scannerwork/scanner-report/duplications-49.pb +0 -0
  293. package/.scannerwork/scanner-report/duplications-50.pb +0 -0
  294. package/.scannerwork/scanner-report/duplications-8.pb +0 -0
  295. package/.scannerwork/scanner-report/measures-10.pb +0 -0
  296. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  297. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  298. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  299. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  300. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  301. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  302. package/.scannerwork/scanner-report/measures-8.pb +0 -0
  303. package/.scannerwork/scanner-report/source-10.txt +0 -100
  304. package/.scannerwork/scanner-report/source-12.txt +0 -37
  305. package/.scannerwork/scanner-report/source-2.txt +0 -102
  306. package/.scannerwork/scanner-report/source-22.txt +0 -62
  307. package/.scannerwork/scanner-report/source-24.txt +0 -329
  308. package/.scannerwork/scanner-report/source-25.txt +0 -42
  309. package/.scannerwork/scanner-report/source-49.txt +0 -59
  310. package/.scannerwork/scanner-report/source-8.txt +0 -114
  311. package/.scannerwork/scanner-report/symbols-10.pb +0 -69
  312. package/.scannerwork/scanner-report/symbols-12.pb +0 -13
  313. package/.scannerwork/scanner-report/symbols-22.pb +0 -24
  314. package/.scannerwork/scanner-report/symbols-24.pb +0 -353
  315. package/.scannerwork/scanner-report/symbols-25.pb +0 -19
  316. package/.scannerwork/scanner-report/symbols-49.pb +0 -19
  317. package/.scannerwork/scanner-report/symbols-50.pb +0 -46
  318. package/.scannerwork/scanner-report/symbols-8.pb +0 -28
  319. package/.scannerwork/scanner-report/syntax-highlightings-10.pb +0 -107
  320. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +0 -62
  321. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +0 -692
  322. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +0 -97
  323. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +0 -620
  324. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +0 -66
  325. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +0 -59
  326. package/.scannerwork/scanner-report/syntax-highlightings-8.pb +0 -138
  327. /package/.scannerwork/scanner-report/{coverages-23.pb → coverages-32.pb} +0 -0
  328. /package/.scannerwork/scanner-report/{coverages-9.pb → coverages-36.pb} +0 -0
  329. /package/.scannerwork/scanner-report/{coverages-21.pb → coverages-45.pb} +0 -0
  330. /package/.scannerwork/scanner-report/{duplications-10.pb → duplications-19.pb} +0 -0
  331. /package/.scannerwork/scanner-report/{duplications-23.pb → duplications-32.pb} +0 -0
  332. /package/.scannerwork/scanner-report/{duplications-12.pb → duplications-33.pb} +0 -0
  333. /package/.scannerwork/scanner-report/{duplications-21.pb → duplications-34.pb} +0 -0
  334. /package/.scannerwork/scanner-report/{duplications-22.pb → duplications-35.pb} +0 -0
  335. /package/.scannerwork/scanner-report/{duplications-9.pb → duplications-36.pb} +0 -0
  336. /package/.scannerwork/scanner-report/{duplications-24.pb → duplications-45.pb} +0 -0
  337. /package/.scannerwork/scanner-report/{duplications-25.pb → duplications-46.pb} +0 -0
  338. /package/.scannerwork/scanner-report/{duplications-40.pb → duplications-63.pb} +0 -0
  339. /package/.scannerwork/scanner-report/{issues-25.pb → issues-13.pb} +0 -0
  340. /package/.scannerwork/scanner-report/{issues-41.pb → issues-14.pb} +0 -0
  341. /package/.scannerwork/scanner-report/{issues-24.pb → issues-17.pb} +0 -0
  342. /package/.scannerwork/scanner-report/{issues-23.pb → issues-32.pb} +0 -0
  343. /package/.scannerwork/scanner-report/{measures-23.pb → measures-32.pb} +0 -0
  344. /package/.scannerwork/scanner-report/{measures-9.pb → measures-36.pb} +0 -0
  345. /package/.scannerwork/scanner-report/{measures-21.pb → measures-45.pb} +0 -0
  346. /package/.scannerwork/scanner-report/{measures-67.pb → measures-47.pb} +0 -0
  347. /package/.scannerwork/scanner-report/{source-23.txt → source-32.txt} +0 -0
  348. /package/.scannerwork/scanner-report/{source-9.txt → source-36.txt} +0 -0
  349. /package/.scannerwork/scanner-report/{source-21.txt → source-45.txt} +0 -0
  350. /package/.scannerwork/scanner-report/{symbols-23.pb → symbols-32.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{symbols-9.pb → symbols-36.pb} +0 -0
  352. /package/.scannerwork/scanner-report/{symbols-21.pb → symbols-45.pb} +0 -0
  353. /package/.scannerwork/scanner-report/{syntax-highlightings-23.pb → syntax-highlightings-32.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{syntax-highlightings-9.pb → syntax-highlightings-36.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{syntax-highlightings-21.pb → syntax-highlightings-45.pb} +0 -0
@@ -12,119 +12,172 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it before after */
15
+ /* global describe it beforeEach */
16
16
  'use strict';
17
17
 
18
18
  const assert = require('assert');
19
- const applyEnvVars = require('../includes/config.js').applyEnvironmentVariables;
20
-
21
- describe('#unit Configuration', function() {
22
- let processEnvCopy;
23
-
24
- before('Save env', function() {
25
- // Copy env so we can reset it after the tests
26
- processEnvCopy = JSON.parse(JSON.stringify(process.env));
27
- });
28
-
29
- after('Reset env', function() {
30
- process.env = processEnvCopy;
31
- });
32
-
33
- it('respects the COUCH_URL env variable', function() {
34
- process.env.COUCH_URL = 'http://user:pass@myurl.com';
35
- const config = {};
36
- applyEnvVars(config);
37
- assert.strictEqual(typeof config.url, 'string');
38
- assert.strictEqual(config.url, process.env.COUCH_URL);
39
- });
40
-
41
- it('respects the COUCH_DATABASE env variable', function() {
42
- process.env.COUCH_DATABASE = 'mydb';
43
- const config = {};
44
- applyEnvVars(config);
45
- assert.strictEqual(typeof config.db, 'string');
46
- assert.strictEqual(config.db, process.env.COUCH_DATABASE);
47
- });
48
-
49
- it('respects the COUCH_BUFFER_SIZE env variable', function() {
50
- process.env.COUCH_BUFFER_SIZE = '1000';
51
- const config = {};
52
- applyEnvVars(config);
53
- assert.strictEqual(typeof config.bufferSize, 'number');
54
- assert.strictEqual(config.bufferSize, 1000);
55
- });
56
-
57
- it('respects the COUCH_PARALLELISM env variable', function() {
58
- process.env.COUCH_PARALLELISM = '20';
59
- const config = {};
60
- applyEnvVars(config);
61
- assert.strictEqual(typeof config.parallelism, 'number');
62
- assert.strictEqual(config.parallelism, 20);
63
- });
64
-
65
- it('respects the COUCH_REQUEST_TIMEOUT env variable', function() {
66
- process.env.COUCH_REQUEST_TIMEOUT = '10000';
67
- const config = {};
68
- applyEnvVars(config);
69
- assert.strictEqual(typeof config.requestTimeout, 'number');
70
- assert.strictEqual(config.requestTimeout, 10000);
71
- });
72
-
73
- it('respects the CLOUDANT_IAM_API_KEY env variable', function() {
74
- const key = 'ABC123-ZYX987_cba789-xyz321';
75
- process.env.CLOUDANT_IAM_API_KEY = key;
76
- const config = {};
77
- applyEnvVars(config);
78
- assert.strictEqual(typeof config.iamApiKey, 'string');
79
- assert.strictEqual(config.iamApiKey, key);
80
- });
81
-
82
- it('respects the CLOUDANT_IAM_TOKEN_URL env variable', function() {
83
- const u = 'https://testhost.example:1234/identity/token';
84
- process.env.CLOUDANT_IAM_TOKEN_URL = u;
85
- const config = {};
86
- applyEnvVars(config);
87
- assert.strictEqual(typeof config.iamTokenUrl, 'string');
88
- assert.strictEqual(config.iamTokenUrl, u);
89
- });
90
-
91
- it('respects the COUCH_LOG env variable', function() {
92
- process.env.COUCH_LOG = 'my.log';
93
- const config = {};
94
- applyEnvVars(config);
95
- assert.strictEqual(typeof config.log, 'string');
96
- assert.strictEqual(config.log, process.env.COUCH_LOG);
97
- });
98
-
99
- it('respects the COUCH_RESUME env variable', function() {
100
- process.env.COUCH_RESUME = 'true';
101
- const config = {};
102
- applyEnvVars(config);
103
- assert.strictEqual(typeof config.resume, 'boolean');
104
- assert.strictEqual(config.resume, true);
19
+ const backup = require('../includes/shallowbackup.js');
20
+ const request = require('../includes/request.js');
21
+ const fs = require('fs');
22
+ const nock = require('nock');
23
+
24
+ // Function to create a DB object and call the shallow backup function
25
+ // This is normally done by app.js
26
+ function shallowBackup(dbUrl, opts) {
27
+ const db = request.client(dbUrl, opts);
28
+ // Disable compression to make body assertions easier
29
+ db.service.setEnableGzipCompression(false);
30
+ return backup(db, opts);
31
+ }
32
+
33
+ // Note all these tests include a body parameter of include_docs and a query
34
+ // string of include_docs because of a quirk of nano that when using the fetch
35
+ // method always adds the include_docs query string.
36
+ describe('#unit Perform backup using shallow backup', function() {
37
+ const dbUrl = 'http://localhost:5984/animaldb';
38
+ // Query string keys are stringified by Nano
39
+ const badgerKey = 'badger\0';
40
+ const kookaburraKey = 'kookaburra\0';
41
+ const snipeKey = 'snipe\0';
42
+
43
+ beforeEach('Reset nocks', function() {
44
+ nock.cleanAll();
105
45
  });
106
46
 
107
- it('respects the COUCH_OUTPUT env variable', function() {
108
- process.env.COUCH_OUTPUT = 'myfile.txt';
109
- const config = {};
110
- applyEnvVars(config);
111
- assert.strictEqual(typeof config.output, 'string');
112
- assert.strictEqual(config.output, process.env.COUCH_OUTPUT);
47
+ it('should perform a shallow backup', async function() {
48
+ const couch = nock(dbUrl)
49
+ // batch 1
50
+ .post('/_all_docs', { limit: 3, include_docs: true })
51
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
52
+ // batch 2
53
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
54
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
55
+ // batch 3
56
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
57
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
58
+ // batch 4
59
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
60
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
61
+
62
+ return new Promise((resolve, reject) => {
63
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
64
+ .on('error', function(err) {
65
+ reject(err);
66
+ })
67
+ .on('received', function(data) {
68
+ try {
69
+ if (data.batch === 3) {
70
+ assert.strictEqual(data.length, 2); // smaller last batch
71
+ } else {
72
+ assert.strictEqual(data.length, 3);
73
+ }
74
+ } catch (err) {
75
+ reject(err);
76
+ }
77
+ })
78
+ .on('finished', function(data) {
79
+ try {
80
+ assert.strictEqual(data.total, 11);
81
+ assert.ok(couch.isDone());
82
+ resolve();
83
+ } catch (err) {
84
+ reject(err);
85
+ }
86
+ });
87
+ });
113
88
  });
114
89
 
115
- it('respects the COUCH_MODE env variable', function() {
116
- process.env.COUCH_MODE = 'shallow';
117
- const config = {};
118
- applyEnvVars(config);
119
- assert.strictEqual(typeof config.mode, 'string');
120
- assert.strictEqual(config.mode, 'shallow');
90
+ it('should perform a shallow backup with transient error', async function() {
91
+ const couch = nock(dbUrl)
92
+ // batch 1
93
+ .post('/_all_docs', { limit: 3, include_docs: true })
94
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
95
+ // batch 2
96
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
97
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
98
+ // batch 3 - transient error
99
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
100
+ .reply(500, { error: 'Internal Server Error' })
101
+ // batch 3 - retry
102
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
103
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
104
+ // batch 4
105
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
106
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
107
+
108
+ return new Promise((resolve, reject) => {
109
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
110
+ .on('error', function(err) {
111
+ try {
112
+ assert.strictEqual(err.name, 'HTTPError');
113
+ } catch (err) {
114
+ reject(err);
115
+ }
116
+ })
117
+ .on('received', function(data) {
118
+ try {
119
+ if (data.batch === 3) {
120
+ assert.strictEqual(data.length, 2); // smaller last batch
121
+ } else {
122
+ assert.strictEqual(data.length, 3);
123
+ }
124
+ } catch (err) {
125
+ reject(err);
126
+ }
127
+ })
128
+ .on('finished', function(data) {
129
+ try {
130
+ assert.strictEqual(data.total, 11);
131
+ assert.ok(couch.isDone());
132
+ resolve();
133
+ } catch (err) {
134
+ reject(err);
135
+ }
136
+ });
137
+ });
121
138
  });
122
139
 
123
- it('respects the COUCH_QUIET env variable', function() {
124
- process.env.COUCH_QUIET = 'true';
125
- const config = {};
126
- applyEnvVars(config);
127
- assert.strictEqual(typeof config.quiet, 'boolean');
128
- assert.strictEqual(config.quiet, true);
140
+ it('should fail to perform a shallow backup on fatal error', async function() {
141
+ const couch = nock(dbUrl)
142
+ // batch 1
143
+ .post('/_all_docs', { limit: 3, include_docs: true })
144
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
145
+ // batch 2
146
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
147
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
148
+ // batch 3 - fatal error
149
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
150
+ .reply(401, { error: 'Unauthorized' });
151
+
152
+ let errCount = 0;
153
+
154
+ return new Promise((resolve, reject) => {
155
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
156
+ .on('error', function(err) {
157
+ try {
158
+ errCount++;
159
+ assert.strictEqual(err.name, 'Unauthorized');
160
+ } catch (err) {
161
+ reject(err);
162
+ }
163
+ })
164
+ .on('received', function(data) {
165
+ try {
166
+ assert.strictEqual(data.length, 3);
167
+ } catch (err) {
168
+ reject(err);
169
+ }
170
+ })
171
+ .on('finished', function(data) {
172
+ try {
173
+ assert.strictEqual(data.total, 6);
174
+ assert.ok(couch.isDone());
175
+ assert.strictEqual(errCount, 1);
176
+ resolve();
177
+ } catch (err) {
178
+ reject(err);
179
+ }
180
+ });
181
+ });
129
182
  });
130
183
  });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2023 IBM Corp. All rights reserved.
1
+ // Copyright © 2023 IBM Corp. All rights reserved.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -12,172 +12,140 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- /* global describe it beforeEach */
15
+ /* global */
16
16
  'use strict';
17
17
 
18
- const assert = require('assert');
19
- const backup = require('../includes/shallowbackup.js');
20
- const request = require('../includes/request.js');
21
- const fs = require('fs');
22
- const nock = require('nock');
18
+ const { fork, spawn } = require('node:child_process');
19
+ const { once } = require('node:events');
20
+ const { Duplex } = require('node:stream');
21
+ const debug = require('debug');
22
+ const logProcess = debug('couchbackup:test:process');
23
23
 
24
- // Function to create a DB object and call the shallow backup function
25
- // This is normally done by app.js
26
- function shallowBackup(dbUrl, opts) {
27
- const db = request.client(dbUrl, opts);
28
- // Disable compression to make body assertions easier
29
- db.service.setEnableGzipCompression(false);
30
- return backup(db, opts);
31
- }
32
-
33
- // Note all these tests include a body parameter of include_docs and a query
34
- // string of include_docs because of a quirk of nano that when using the fetch
35
- // method always adds the include_docs query string.
36
- describe('#unit Perform backup using shallow backup', function() {
37
- const dbUrl = 'http://localhost:5984/animaldb';
38
- // Query string keys are stringified by Nano
39
- const badgerKey = 'badger\0';
40
- const kookaburraKey = 'kookaburra\0';
41
- const snipeKey = 'snipe\0';
42
-
43
- beforeEach('Reset nocks', function() {
44
- nock.cleanAll();
45
- });
24
+ class TestProcess {
25
+ constructor(cmd, args, mode) {
26
+ this.cmd = cmd;
27
+ // Child process stdio [stdin, stdout, stderr, ...extra channels]
28
+ const childProcessOptions = { stdio: [] };
29
+ switch (mode) {
30
+ case 'readable':
31
+ // Readable only, no writing to stdin so ignore it
32
+ childProcessOptions.stdio = ['ignore', 'pipe', 'inherit'];
33
+ break;
34
+ case 'writable':
35
+ // Writable only, no reading from stdout so ignore it
36
+ childProcessOptions.stdio = ['pipe', 'ignore', 'inherit'];
37
+ break;
38
+ default:
39
+ // Default Duplex mode pipe both stdin and stdout
40
+ childProcessOptions.stdio = ['pipe', 'pipe', 'inherit'];
41
+ break;
42
+ }
43
+ if (cmd.endsWith('.js')) {
44
+ // Add Node fork ipc channel
45
+ childProcessOptions.stdio.push('ipc');
46
+ logProcess(`Forking Node process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
47
+ this.childProcess = fork(cmd, args, childProcessOptions);
48
+ } else {
49
+ logProcess(`Spawning process for ${cmd} with stdio:[${childProcessOptions.stdio}]`);
50
+ this.childProcess = spawn(cmd, args, childProcessOptions);
51
+ }
46
52
 
47
- it('should perform a shallow backup', async function() {
48
- const couch = nock(dbUrl)
49
- // batch 1
50
- .post('/_all_docs', { limit: 3, include_docs: true })
51
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
52
- // batch 2
53
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
54
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
55
- // batch 3
56
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
57
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
58
- // batch 4
59
- .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
60
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
61
-
62
- return new Promise((resolve, reject) => {
63
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
64
- .on('error', function(err) {
65
- reject(err);
66
- })
67
- .on('received', function(data) {
68
- try {
69
- if (data.batch === 3) {
70
- assert.strictEqual(data.length, 2); // smaller last batch
71
- } else {
72
- assert.strictEqual(data.length, 3);
73
- }
74
- } catch (err) {
75
- reject(err);
76
- }
77
- })
78
- .on('finished', function(data) {
79
- try {
80
- assert.strictEqual(data.total, 11);
81
- assert.ok(couch.isDone());
82
- resolve();
83
- } catch (err) {
84
- reject(err);
85
- }
86
- });
53
+ this.childProcessPromise = once(this.childProcess, 'close').then(() => {
54
+ const code = this.childProcess.exitCode;
55
+ const signal = this.childProcess.signalCode;
56
+ logProcess(`Test process ${cmd} closed with code ${code} and signal ${signal}`);
57
+ if (code === 0) {
58
+ logProcess(`Resolving process promise for ${cmd}`);
59
+ return Promise.resolve(code);
60
+ } else {
61
+ const e = new Error(`Test child process ${cmd} exited with code ${code} and ${signal}. This may be normal for error case testing.`);
62
+ e.code = code;
63
+ e.signal = signal;
64
+ logProcess(`Will reject process promise for ${cmd} with ${e}`);
65
+ return Promise.reject(e);
66
+ }
87
67
  });
88
- });
89
68
 
90
- it('should perform a shallow backup with transient error', async function() {
91
- const couch = nock(dbUrl)
92
- // batch 1
93
- .post('/_all_docs', { limit: 3, include_docs: true })
94
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
95
- // batch 2
96
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
97
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
98
- // batch 3 - transient error
99
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
100
- .reply(500, { error: 'Internal Server Error' })
101
- // batch 3 - retry
102
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
103
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
104
- // batch 4
105
- .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
106
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
69
+ switch (mode) {
70
+ case 'readable':
71
+ this.duplexFrom = this.childProcess.stdout;
72
+ break;
73
+ case 'writable':
74
+ this.duplexFrom = this.childProcess.stdin;
75
+ break;
76
+ default:
77
+ // Default is duplex
78
+ this.duplexFrom = { writable: this.childProcess.stdin, readable: this.childProcess.stdout };
79
+ }
107
80
 
108
- return new Promise((resolve, reject) => {
109
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
110
- .on('error', function(err) {
111
- try {
112
- assert.strictEqual(err.name, 'HTTPError');
113
- } catch (err) {
114
- reject(err);
115
- }
116
- })
117
- .on('received', function(data) {
118
- try {
119
- if (data.batch === 3) {
120
- assert.strictEqual(data.length, 2); // smaller last batch
121
- } else {
122
- assert.strictEqual(data.length, 3);
123
- }
124
- } catch (err) {
125
- reject(err);
126
- }
127
- })
128
- .on('finished', function(data) {
129
- try {
130
- assert.strictEqual(data.total, 11);
131
- assert.ok(couch.isDone());
132
- resolve();
133
- } catch (err) {
134
- reject(err);
135
- }
136
- });
137
- });
138
- });
139
-
140
- it('should fail to perform a shallow backup on fatal error', async function() {
141
- const couch = nock(dbUrl)
142
- // batch 1
143
- .post('/_all_docs', { limit: 3, include_docs: true })
144
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
145
- // batch 2
146
- .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
147
- .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
148
- // batch 3 - fatal error
149
- .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
150
- .reply(401, { error: 'Unauthorized' });
151
-
152
- let errCount = 0;
81
+ this.stream = Duplex.from(this.duplexFrom);
82
+ }
83
+ }
153
84
 
154
- return new Promise((resolve, reject) => {
155
- shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
156
- .on('error', function(err) {
157
- try {
158
- errCount++;
159
- assert.strictEqual(err.name, 'Unauthorized');
160
- } catch (err) {
161
- reject(err);
162
- }
163
- })
164
- .on('received', function(data) {
165
- try {
166
- assert.strictEqual(data.length, 3);
167
- } catch (err) {
168
- reject(err);
169
- }
170
- })
171
- .on('finished', function(data) {
172
- try {
173
- assert.strictEqual(data.total, 6);
174
- assert.ok(couch.isDone());
175
- assert.strictEqual(errCount, 1);
176
- resolve();
177
- } catch (err) {
178
- reject(err);
179
- }
180
- });
181
- });
182
- });
183
- });
85
+ module.exports = {
86
+ TestProcess,
87
+ cliBackup: function(databaseName, params = {}) {
88
+ const args = ['--db', databaseName];
89
+ if (params.opts) {
90
+ if (params.opts.mode) {
91
+ args.push('--mode');
92
+ args.push(params.opts.mode);
93
+ }
94
+ if (params.opts.output) {
95
+ args.push('--output');
96
+ args.push(params.opts.output);
97
+ }
98
+ if (params.opts.log) {
99
+ args.push('--log');
100
+ args.push(params.opts.log);
101
+ }
102
+ if (params.opts.resume) {
103
+ args.push('--resume');
104
+ args.push(params.opts.resume);
105
+ }
106
+ if (params.opts.bufferSize) {
107
+ args.push('--buffer-size');
108
+ args.push(params.opts.bufferSize);
109
+ }
110
+ if (params.opts.iamApiKey) {
111
+ args.push('--iam-api-key');
112
+ args.push(params.opts.iamApiKey);
113
+ }
114
+ }
115
+ return new TestProcess('./bin/couchbackup.bin.js', args, 'readable');
116
+ },
117
+ cliRestore: function(databaseName, params) {
118
+ const args = ['--db', databaseName];
119
+ if (params.opts) {
120
+ if (params.opts.bufferSize) {
121
+ args.push('--buffer-size');
122
+ args.push(params.opts.bufferSize);
123
+ }
124
+ if (params.opts.parallelism) {
125
+ args.push('--parallelism');
126
+ args.push(params.opts.parallelism);
127
+ }
128
+ if (params.opts.requestTimeout) {
129
+ args.push('--request-timeout');
130
+ args.push(params.opts.requestTimeout);
131
+ }
132
+ if (params.opts.iamApiKey) {
133
+ args.push('--iam-api-key');
134
+ args.push(params.opts.iamApiKey);
135
+ }
136
+ }
137
+ return new TestProcess('./bin/couchrestore.bin.js', args, 'writable');
138
+ },
139
+ cliGzip: function() {
140
+ return new TestProcess('gzip', []);
141
+ },
142
+ cliGunzip: function() {
143
+ return new TestProcess('gunzip', []);
144
+ },
145
+ cliEncrypt: function() {
146
+ return new TestProcess('openssl', ['aes-128-cbc', '-pass', 'pass:12345']);
147
+ },
148
+ cliDecrypt: function() {
149
+ return new TestProcess('openssl', ['aes-128-cbc', '-d', '-pass', 'pass:12345']);
150
+ }
151
+ };