@cloudant/couchbackup 2.9.9-SNAPSHOT.98 → 2.9.9

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 (375) 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/analysis.log +1 -1
  4. package/.scannerwork/scanner-report/changesets-2.pb +1 -0
  5. package/.scannerwork/scanner-report/changesets-3.pb +1 -0
  6. package/.scannerwork/scanner-report/changesets-30.pb +1 -0
  7. package/.scannerwork/scanner-report/changesets-32.pb +1 -0
  8. package/.scannerwork/scanner-report/changesets-33.pb +1 -0
  9. package/.scannerwork/scanner-report/changesets-35.pb +1 -0
  10. package/.scannerwork/scanner-report/changesets-38.pb +1 -0
  11. package/.scannerwork/scanner-report/changesets-39.pb +1 -0
  12. package/.scannerwork/scanner-report/changesets-45.pb +1 -0
  13. package/.scannerwork/scanner-report/changesets-47.pb +1 -0
  14. package/.scannerwork/scanner-report/component-1.pb +1 -2
  15. package/.scannerwork/scanner-report/component-18.pb +1 -1
  16. package/.scannerwork/scanner-report/component-19.pb +1 -1
  17. package/.scannerwork/scanner-report/component-2.pb +1 -1
  18. package/.scannerwork/scanner-report/component-20.pb +1 -1
  19. package/.scannerwork/scanner-report/component-21.pb +1 -1
  20. package/.scannerwork/scanner-report/component-22.pb +1 -1
  21. package/.scannerwork/scanner-report/component-23.pb +1 -1
  22. package/.scannerwork/scanner-report/component-24.pb +1 -1
  23. package/.scannerwork/scanner-report/component-25.pb +1 -1
  24. package/.scannerwork/scanner-report/component-26.pb +1 -1
  25. package/.scannerwork/scanner-report/component-27.pb +1 -1
  26. package/.scannerwork/scanner-report/component-28.pb +1 -1
  27. package/.scannerwork/scanner-report/component-29.pb +1 -1
  28. package/.scannerwork/scanner-report/component-3.pb +1 -0
  29. package/.scannerwork/scanner-report/component-30.pb +1 -0
  30. package/.scannerwork/scanner-report/component-31.pb +1 -1
  31. package/.scannerwork/scanner-report/component-32.pb +1 -0
  32. package/.scannerwork/scanner-report/component-33.pb +1 -0
  33. package/.scannerwork/scanner-report/component-34.pb +1 -1
  34. package/.scannerwork/scanner-report/component-35.pb +1 -0
  35. package/.scannerwork/scanner-report/component-36.pb +1 -1
  36. package/.scannerwork/scanner-report/component-37.pb +1 -1
  37. package/.scannerwork/scanner-report/component-38.pb +1 -0
  38. package/.scannerwork/scanner-report/component-39.pb +1 -0
  39. package/.scannerwork/scanner-report/component-4.pb +1 -1
  40. package/.scannerwork/scanner-report/component-40.pb +1 -0
  41. package/.scannerwork/scanner-report/component-45.pb +1 -0
  42. package/.scannerwork/scanner-report/component-47.pb +1 -0
  43. package/.scannerwork/scanner-report/component-49.pb +1 -1
  44. package/.scannerwork/scanner-report/component-50.pb +1 -1
  45. package/.scannerwork/scanner-report/component-52.pb +1 -1
  46. package/.scannerwork/scanner-report/component-55.pb +1 -1
  47. package/.scannerwork/scanner-report/component-56.pb +1 -1
  48. package/.scannerwork/scanner-report/component-57.pb +1 -1
  49. package/.scannerwork/scanner-report/component-58.pb +1 -1
  50. package/.scannerwork/scanner-report/component-59.pb +1 -1
  51. package/.scannerwork/scanner-report/component-60.pb +1 -1
  52. package/.scannerwork/scanner-report/component-61.pb +1 -1
  53. package/.scannerwork/scanner-report/component-62.pb +1 -1
  54. package/.scannerwork/scanner-report/component-63.pb +1 -1
  55. package/.scannerwork/scanner-report/component-64.pb +1 -1
  56. package/.scannerwork/scanner-report/component-65.pb +1 -1
  57. package/.scannerwork/scanner-report/component-66.pb +1 -1
  58. package/.scannerwork/scanner-report/component-67.pb +1 -1
  59. package/.scannerwork/scanner-report/component-68.pb +1 -1
  60. package/.scannerwork/scanner-report/component-69.pb +1 -1
  61. package/.scannerwork/scanner-report/coverages-18.pb +0 -0
  62. package/.scannerwork/scanner-report/coverages-19.pb +0 -0
  63. package/.scannerwork/scanner-report/coverages-20.pb +0 -0
  64. package/.scannerwork/scanner-report/coverages-21.pb +0 -0
  65. package/.scannerwork/scanner-report/coverages-22.pb +0 -0
  66. package/.scannerwork/scanner-report/coverages-23.pb +0 -0
  67. package/.scannerwork/scanner-report/coverages-24.pb +0 -0
  68. package/.scannerwork/scanner-report/coverages-25.pb +0 -0
  69. package/.scannerwork/scanner-report/coverages-26.pb +0 -0
  70. package/.scannerwork/scanner-report/coverages-27.pb +0 -0
  71. package/.scannerwork/scanner-report/coverages-28.pb +0 -0
  72. package/.scannerwork/scanner-report/coverages-29.pb +0 -0
  73. package/.scannerwork/scanner-report/coverages-31.pb +0 -0
  74. package/.scannerwork/scanner-report/coverages-32.pb +0 -0
  75. package/.scannerwork/scanner-report/coverages-34.pb +0 -0
  76. package/.scannerwork/scanner-report/coverages-35.pb +0 -0
  77. package/.scannerwork/scanner-report/coverages-36.pb +0 -0
  78. package/.scannerwork/scanner-report/coverages-37.pb +0 -0
  79. package/.scannerwork/scanner-report/coverages-38.pb +0 -0
  80. package/.scannerwork/scanner-report/coverages-39.pb +0 -0
  81. package/.scannerwork/scanner-report/coverages-45.pb +0 -0
  82. package/.scannerwork/scanner-report/coverages-47.pb +0 -0
  83. package/.scannerwork/scanner-report/coverages-49.pb +0 -0
  84. package/.scannerwork/scanner-report/coverages-52.pb +0 -0
  85. package/.scannerwork/scanner-report/coverages-55.pb +0 -0
  86. package/.scannerwork/scanner-report/coverages-56.pb +0 -0
  87. package/.scannerwork/scanner-report/coverages-57.pb +0 -0
  88. package/.scannerwork/scanner-report/coverages-58.pb +0 -0
  89. package/.scannerwork/scanner-report/coverages-59.pb +0 -0
  90. package/.scannerwork/scanner-report/coverages-60.pb +0 -0
  91. package/.scannerwork/scanner-report/coverages-61.pb +0 -0
  92. package/.scannerwork/scanner-report/coverages-62.pb +0 -0
  93. package/.scannerwork/scanner-report/coverages-63.pb +0 -0
  94. package/.scannerwork/scanner-report/coverages-64.pb +0 -0
  95. package/.scannerwork/scanner-report/coverages-65.pb +0 -0
  96. package/.scannerwork/scanner-report/coverages-66.pb +0 -0
  97. package/.scannerwork/scanner-report/coverages-67.pb +0 -0
  98. package/.scannerwork/scanner-report/coverages-68.pb +0 -0
  99. package/.scannerwork/scanner-report/duplications-22.pb +3 -0
  100. package/.scannerwork/scanner-report/duplications-26.pb +0 -2
  101. package/.scannerwork/scanner-report/duplications-28.pb +3 -0
  102. package/.scannerwork/scanner-report/duplications-29.pb +2 -0
  103. package/.scannerwork/scanner-report/duplications-31.pb +0 -2
  104. package/.scannerwork/scanner-report/duplications-34.pb +2 -1
  105. package/.scannerwork/scanner-report/duplications-37.pb +2 -0
  106. package/.scannerwork/scanner-report/duplications-47.pb +2 -0
  107. package/.scannerwork/scanner-report/duplications-49.pb +2 -0
  108. package/.scannerwork/scanner-report/duplications-56.pb +2 -0
  109. package/.scannerwork/scanner-report/duplications-60.pb +0 -2
  110. package/.scannerwork/scanner-report/duplications-62.pb +0 -3
  111. package/.scannerwork/scanner-report/duplications-63.pb +2 -0
  112. package/.scannerwork/scanner-report/duplications-64.pb +0 -3
  113. package/.scannerwork/scanner-report/duplications-67.pb +0 -2
  114. package/.scannerwork/scanner-report/measures-18.pb +0 -0
  115. package/.scannerwork/scanner-report/measures-19.pb +0 -0
  116. package/.scannerwork/scanner-report/measures-2.pb +0 -0
  117. package/.scannerwork/scanner-report/measures-20.pb +0 -0
  118. package/.scannerwork/scanner-report/measures-21.pb +0 -0
  119. package/.scannerwork/scanner-report/measures-22.pb +0 -0
  120. package/.scannerwork/scanner-report/measures-23.pb +0 -0
  121. package/.scannerwork/scanner-report/measures-24.pb +0 -0
  122. package/.scannerwork/scanner-report/measures-25.pb +0 -0
  123. package/.scannerwork/scanner-report/measures-26.pb +0 -0
  124. package/.scannerwork/scanner-report/measures-27.pb +0 -0
  125. package/.scannerwork/scanner-report/measures-28.pb +0 -0
  126. package/.scannerwork/scanner-report/measures-29.pb +0 -0
  127. package/.scannerwork/scanner-report/measures-30.pb +15 -0
  128. package/.scannerwork/scanner-report/measures-31.pb +0 -0
  129. package/.scannerwork/scanner-report/measures-32.pb +0 -0
  130. package/.scannerwork/scanner-report/measures-34.pb +0 -0
  131. package/.scannerwork/scanner-report/measures-35.pb +0 -0
  132. package/.scannerwork/scanner-report/measures-36.pb +0 -0
  133. package/.scannerwork/scanner-report/measures-37.pb +0 -0
  134. package/.scannerwork/scanner-report/measures-38.pb +0 -0
  135. package/.scannerwork/scanner-report/measures-39.pb +0 -0
  136. package/.scannerwork/scanner-report/measures-45.pb +0 -0
  137. package/.scannerwork/scanner-report/measures-47.pb +0 -0
  138. package/.scannerwork/scanner-report/measures-49.pb +0 -0
  139. package/.scannerwork/scanner-report/measures-50.pb +0 -0
  140. package/.scannerwork/scanner-report/measures-52.pb +0 -0
  141. package/.scannerwork/scanner-report/measures-55.pb +0 -0
  142. package/.scannerwork/scanner-report/measures-56.pb +0 -0
  143. package/.scannerwork/scanner-report/measures-57.pb +0 -0
  144. package/.scannerwork/scanner-report/measures-58.pb +0 -0
  145. package/.scannerwork/scanner-report/measures-59.pb +0 -0
  146. package/.scannerwork/scanner-report/measures-60.pb +0 -0
  147. package/.scannerwork/scanner-report/measures-61.pb +0 -0
  148. package/.scannerwork/scanner-report/measures-62.pb +0 -0
  149. package/.scannerwork/scanner-report/measures-63.pb +0 -0
  150. package/.scannerwork/scanner-report/measures-64.pb +0 -0
  151. package/.scannerwork/scanner-report/measures-65.pb +0 -0
  152. package/.scannerwork/scanner-report/measures-66.pb +0 -0
  153. package/.scannerwork/scanner-report/measures-67.pb +0 -0
  154. package/.scannerwork/scanner-report/measures-68.pb +0 -0
  155. package/.scannerwork/scanner-report/measures-69.pb +0 -0
  156. package/.scannerwork/scanner-report/metadata.pb +0 -0
  157. package/.scannerwork/scanner-report/source-18.txt +18 -160
  158. package/.scannerwork/scanner-report/source-19.txt +81 -35
  159. package/.scannerwork/scanner-report/source-2.txt +56 -509
  160. package/.scannerwork/scanner-report/source-20.txt +20 -115
  161. package/.scannerwork/scanner-report/source-21.txt +352 -32
  162. package/.scannerwork/scanner-report/source-22.txt +99 -84
  163. package/.scannerwork/scanner-report/source-23.txt +44 -92
  164. package/.scannerwork/scanner-report/source-24.txt +73 -22
  165. package/.scannerwork/scanner-report/source-25.txt +128 -66
  166. package/.scannerwork/scanner-report/source-26.txt +130 -66
  167. package/.scannerwork/scanner-report/source-27.txt +584 -123
  168. package/.scannerwork/scanner-report/source-28.txt +209 -246
  169. package/.scannerwork/scanner-report/source-29.txt +209 -15
  170. package/.scannerwork/scanner-report/source-30.txt +293 -0
  171. package/.scannerwork/scanner-report/source-31.txt +18 -158
  172. package/.scannerwork/scanner-report/{source-53.txt → source-32.txt} +7 -14
  173. package/.scannerwork/scanner-report/source-34.txt +109 -168
  174. package/.scannerwork/scanner-report/source-35.txt +68 -0
  175. package/.scannerwork/scanner-report/source-36.txt +19 -401
  176. package/.scannerwork/scanner-report/source-37.txt +121 -118
  177. package/.scannerwork/scanner-report/source-38.txt +68 -0
  178. package/.scannerwork/scanner-report/source-39.txt +147 -0
  179. package/.scannerwork/scanner-report/source-4.txt +155 -155
  180. package/.scannerwork/scanner-report/{source-6.txt → source-40.txt} +154 -154
  181. package/.scannerwork/scanner-report/source-45.txt +418 -0
  182. package/.scannerwork/scanner-report/source-47.txt +175 -0
  183. package/.scannerwork/scanner-report/source-49.txt +173 -18
  184. package/.scannerwork/scanner-report/source-50.txt +167 -244
  185. package/.scannerwork/scanner-report/source-52.txt +93 -47
  186. package/.scannerwork/scanner-report/source-55.txt +27 -49
  187. package/.scannerwork/scanner-report/source-56.txt +75 -12
  188. package/.scannerwork/scanner-report/source-57.txt +107 -78
  189. package/.scannerwork/scanner-report/source-58.txt +104 -22
  190. package/.scannerwork/scanner-report/source-59.txt +91 -136
  191. package/.scannerwork/scanner-report/source-60.txt +151 -118
  192. package/.scannerwork/scanner-report/source-61.txt +89 -19
  193. package/.scannerwork/scanner-report/source-62.txt +40 -105
  194. package/.scannerwork/scanner-report/source-63.txt +56 -44
  195. package/.scannerwork/scanner-report/source-64.txt +22 -112
  196. package/.scannerwork/scanner-report/source-65.txt +64 -131
  197. package/.scannerwork/scanner-report/source-66.txt +14 -608
  198. package/.scannerwork/scanner-report/source-67.txt +141 -202
  199. package/.scannerwork/scanner-report/source-68.txt +253 -64
  200. package/.scannerwork/scanner-report/source-69.txt +509 -293
  201. package/.scannerwork/scanner-report/symbols-18.pb +14 -144
  202. package/.scannerwork/scanner-report/symbols-19.pb +68 -14
  203. package/.scannerwork/scanner-report/symbols-20.pb +10 -33
  204. package/.scannerwork/scanner-report/symbols-21.pb +494 -20
  205. package/.scannerwork/scanner-report/symbols-22.pb +76 -41
  206. package/.scannerwork/scanner-report/symbols-23.pb +42 -58
  207. package/.scannerwork/scanner-report/symbols-24.pb +60 -18
  208. package/.scannerwork/scanner-report/symbols-25.pb +116 -46
  209. package/.scannerwork/scanner-report/symbols-26.pb +111 -43
  210. package/.scannerwork/scanner-report/symbols-27.pb +1241 -113
  211. package/.scannerwork/scanner-report/symbols-28.pb +342 -302
  212. package/.scannerwork/scanner-report/symbols-29.pb +417 -13
  213. package/.scannerwork/scanner-report/symbols-31.pb +16 -152
  214. package/.scannerwork/scanner-report/symbols-32.pb +9 -0
  215. package/.scannerwork/scanner-report/symbols-34.pb +97 -180
  216. package/.scannerwork/scanner-report/symbols-35.pb +36 -0
  217. package/.scannerwork/scanner-report/symbols-36.pb +11 -610
  218. package/.scannerwork/scanner-report/symbols-37.pb +97 -111
  219. package/.scannerwork/scanner-report/symbols-38.pb +45 -0
  220. package/.scannerwork/scanner-report/symbols-39.pb +85 -0
  221. package/.scannerwork/scanner-report/symbols-45.pb +610 -0
  222. package/.scannerwork/scanner-report/symbols-47.pb +153 -0
  223. package/.scannerwork/scanner-report/symbols-49.pb +180 -17
  224. package/.scannerwork/scanner-report/symbols-52.pb +28 -45
  225. package/.scannerwork/scanner-report/symbols-55.pb +19 -35
  226. package/.scannerwork/scanner-report/symbols-56.pb +44 -9
  227. package/.scannerwork/scanner-report/symbols-57.pb +33 -69
  228. package/.scannerwork/scanner-report/symbols-58.pb +30 -11
  229. package/.scannerwork/scanner-report/symbols-59.pb +57 -110
  230. package/.scannerwork/scanner-report/symbols-60.pb +136 -94
  231. package/.scannerwork/scanner-report/symbols-61.pb +41 -9
  232. package/.scannerwork/scanner-report/symbols-62.pb +14 -76
  233. package/.scannerwork/scanner-report/symbols-63.pb +41 -42
  234. package/.scannerwork/scanner-report/symbols-64.pb +18 -97
  235. package/.scannerwork/scanner-report/symbols-65.pb +46 -85
  236. package/.scannerwork/scanner-report/symbols-66.pb +13 -1253
  237. package/.scannerwork/scanner-report/symbols-67.pb +125 -417
  238. package/.scannerwork/scanner-report/symbols-68.pb +354 -60
  239. package/.scannerwork/scanner-report/syntax-highlightings-18.pb +22 -211
  240. package/.scannerwork/scanner-report/syntax-highlightings-19.pb +75 -24
  241. package/.scannerwork/scanner-report/syntax-highlightings-2.pb +55 -3721
  242. package/.scannerwork/scanner-report/syntax-highlightings-20.pb +16 -95
  243. package/.scannerwork/scanner-report/syntax-highlightings-21.pb +600 -34
  244. package/.scannerwork/scanner-report/syntax-highlightings-22.pb +128 -86
  245. package/.scannerwork/scanner-report/syntax-highlightings-23.pb +47 -98
  246. package/.scannerwork/scanner-report/syntax-highlightings-24.pb +81 -21
  247. package/.scannerwork/scanner-report/syntax-highlightings-25.pb +101 -62
  248. package/.scannerwork/scanner-report/syntax-highlightings-26.pb +189 -56
  249. package/.scannerwork/scanner-report/syntax-highlightings-27.pb +815 -141
  250. package/.scannerwork/scanner-report/syntax-highlightings-28.pb +217 -173
  251. package/.scannerwork/scanner-report/syntax-highlightings-29.pb +301 -15
  252. package/.scannerwork/scanner-report/syntax-highlightings-30.pb +659 -0
  253. package/.scannerwork/scanner-report/syntax-highlightings-31.pb +34 -185
  254. package/.scannerwork/scanner-report/syntax-highlightings-32.pb +48 -0
  255. package/.scannerwork/scanner-report/syntax-highlightings-34.pb +152 -195
  256. package/.scannerwork/scanner-report/syntax-highlightings-35.pb +95 -0
  257. package/.scannerwork/scanner-report/syntax-highlightings-36.pb +30 -619
  258. package/.scannerwork/scanner-report/syntax-highlightings-37.pb +189 -96
  259. package/.scannerwork/scanner-report/syntax-highlightings-38.pb +110 -0
  260. package/.scannerwork/scanner-report/syntax-highlightings-39.pb +191 -0
  261. package/.scannerwork/scanner-report/syntax-highlightings-4.pb +90 -91
  262. package/.scannerwork/scanner-report/{syntax-highlightings-5.pb → syntax-highlightings-40.pb} +96 -96
  263. package/.scannerwork/scanner-report/syntax-highlightings-45.pb +648 -0
  264. package/.scannerwork/scanner-report/syntax-highlightings-47.pb +214 -0
  265. package/.scannerwork/scanner-report/syntax-highlightings-49.pb +196 -34
  266. package/.scannerwork/scanner-report/syntax-highlightings-50.pb +843 -223
  267. package/.scannerwork/scanner-report/syntax-highlightings-52.pb +97 -69
  268. package/.scannerwork/scanner-report/syntax-highlightings-55.pb +34 -65
  269. package/.scannerwork/scanner-report/syntax-highlightings-56.pb +57 -15
  270. package/.scannerwork/scanner-report/syntax-highlightings-57.pb +88 -64
  271. package/.scannerwork/scanner-report/syntax-highlightings-58.pb +84 -30
  272. package/.scannerwork/scanner-report/syntax-highlightings-59.pb +96 -186
  273. package/.scannerwork/scanner-report/syntax-highlightings-60.pb +201 -185
  274. package/.scannerwork/scanner-report/syntax-highlightings-61.pb +87 -21
  275. package/.scannerwork/scanner-report/syntax-highlightings-62.pb +24 -128
  276. package/.scannerwork/scanner-report/syntax-highlightings-63.pb +45 -49
  277. package/.scannerwork/scanner-report/syntax-highlightings-64.pb +20 -152
  278. package/.scannerwork/scanner-report/syntax-highlightings-65.pb +62 -158
  279. package/.scannerwork/scanner-report/syntax-highlightings-66.pb +15 -857
  280. package/.scannerwork/scanner-report/syntax-highlightings-67.pb +168 -286
  281. package/.scannerwork/scanner-report/syntax-highlightings-68.pb +240 -65
  282. package/.scannerwork/scanner-report/syntax-highlightings-69.pb +3487 -398
  283. package/CHANGES.md +4 -0
  284. package/README.md +1 -1
  285. package/package.json +5 -5
  286. package/test-16-results.xml +144 -144
  287. package/test-18-results.xml +152 -152
  288. package/{test-19-results.xml → test-20-results.xml} +154 -154
  289. package/test-iam-18-results.xml +49 -49
  290. package/.scannerwork/scanner-report/changesets-10.pb +0 -2
  291. package/.scannerwork/scanner-report/changesets-11.pb +0 -1
  292. package/.scannerwork/scanner-report/changesets-14.pb +0 -1
  293. package/.scannerwork/scanner-report/changesets-16.pb +0 -1
  294. package/.scannerwork/scanner-report/changesets-17.pb +0 -1
  295. package/.scannerwork/scanner-report/changesets-50.pb +0 -1
  296. package/.scannerwork/scanner-report/changesets-51.pb +0 -1
  297. package/.scannerwork/scanner-report/changesets-53.pb +0 -1
  298. package/.scannerwork/scanner-report/changesets-54.pb +0 -1
  299. package/.scannerwork/scanner-report/changesets-69.pb +0 -1
  300. package/.scannerwork/scanner-report/component-10.pb +0 -2
  301. package/.scannerwork/scanner-report/component-11.pb +0 -1
  302. package/.scannerwork/scanner-report/component-12.pb +0 -1
  303. package/.scannerwork/scanner-report/component-14.pb +0 -1
  304. package/.scannerwork/scanner-report/component-16.pb +0 -1
  305. package/.scannerwork/scanner-report/component-17.pb +0 -1
  306. package/.scannerwork/scanner-report/component-5.pb +0 -1
  307. package/.scannerwork/scanner-report/component-51.pb +0 -1
  308. package/.scannerwork/scanner-report/component-53.pb +0 -1
  309. package/.scannerwork/scanner-report/component-54.pb +0 -1
  310. package/.scannerwork/scanner-report/component-6.pb +0 -1
  311. package/.scannerwork/scanner-report/coverages-14.pb +0 -0
  312. package/.scannerwork/scanner-report/coverages-16.pb +0 -0
  313. package/.scannerwork/scanner-report/coverages-17.pb +0 -0
  314. package/.scannerwork/scanner-report/coverages-50.pb +0 -0
  315. package/.scannerwork/scanner-report/coverages-51.pb +0 -0
  316. package/.scannerwork/scanner-report/coverages-53.pb +0 -0
  317. package/.scannerwork/scanner-report/duplications-17.pb +0 -2
  318. package/.scannerwork/scanner-report/duplications-50.pb +0 -3
  319. package/.scannerwork/scanner-report/measures-11.pb +0 -0
  320. package/.scannerwork/scanner-report/measures-12.pb +0 -0
  321. package/.scannerwork/scanner-report/measures-14.pb +0 -0
  322. package/.scannerwork/scanner-report/measures-16.pb +0 -0
  323. package/.scannerwork/scanner-report/measures-17.pb +0 -0
  324. package/.scannerwork/scanner-report/measures-51.pb +0 -0
  325. package/.scannerwork/scanner-report/measures-53.pb +0 -0
  326. package/.scannerwork/scanner-report/measures-6.pb +0 -0
  327. package/.scannerwork/scanner-report/source-11.txt +0 -56
  328. package/.scannerwork/scanner-report/source-12.txt +0 -167
  329. package/.scannerwork/scanner-report/source-14.txt +0 -114
  330. package/.scannerwork/scanner-report/source-16.txt +0 -118
  331. package/.scannerwork/scanner-report/source-17.txt +0 -75
  332. package/.scannerwork/scanner-report/source-5.txt +0 -509
  333. package/.scannerwork/scanner-report/source-51.txt +0 -366
  334. package/.scannerwork/scanner-report/symbols-14.pb +0 -28
  335. package/.scannerwork/scanner-report/symbols-16.pb +0 -30
  336. package/.scannerwork/scanner-report/symbols-17.pb +0 -42
  337. package/.scannerwork/scanner-report/symbols-50.pb +0 -394
  338. package/.scannerwork/scanner-report/symbols-51.pb +0 -494
  339. package/.scannerwork/scanner-report/symbols-53.pb +0 -14
  340. package/.scannerwork/scanner-report/syntax-highlightings-11.pb +0 -82
  341. package/.scannerwork/scanner-report/syntax-highlightings-12.pb +0 -949
  342. package/.scannerwork/scanner-report/syntax-highlightings-14.pb +0 -138
  343. package/.scannerwork/scanner-report/syntax-highlightings-16.pb +0 -113
  344. package/.scannerwork/scanner-report/syntax-highlightings-17.pb +0 -78
  345. package/.scannerwork/scanner-report/syntax-highlightings-51.pb +0 -630
  346. package/.scannerwork/scanner-report/syntax-highlightings-53.pb +0 -54
  347. package/.scannerwork/scanner-report/syntax-highlightings-6.pb +0 -3747
  348. package/test-14-results.xml +0 -509
  349. /package/.scannerwork/scanner-report/{coverages-11.pb → coverages-2.pb} +0 -0
  350. /package/.scannerwork/scanner-report/{coverages-10.pb → coverages-3.pb} +0 -0
  351. /package/.scannerwork/scanner-report/{coverages-69.pb → coverages-30.pb} +0 -0
  352. /package/.scannerwork/scanner-report/{coverages-54.pb → coverages-33.pb} +0 -0
  353. /package/.scannerwork/scanner-report/{duplications-10.pb → duplications-2.pb} +0 -0
  354. /package/.scannerwork/scanner-report/{duplications-11.pb → duplications-3.pb} +0 -0
  355. /package/.scannerwork/scanner-report/{duplications-69.pb → duplications-30.pb} +0 -0
  356. /package/.scannerwork/scanner-report/{duplications-14.pb → duplications-33.pb} +0 -0
  357. /package/.scannerwork/scanner-report/{duplications-16.pb → duplications-35.pb} +0 -0
  358. /package/.scannerwork/scanner-report/{duplications-51.pb → duplications-38.pb} +0 -0
  359. /package/.scannerwork/scanner-report/{duplications-53.pb → duplications-39.pb} +0 -0
  360. /package/.scannerwork/scanner-report/{duplications-54.pb → duplications-45.pb} +0 -0
  361. /package/.scannerwork/scanner-report/{issues-51.pb → issues-21.pb} +0 -0
  362. /package/.scannerwork/scanner-report/{issues-37.pb → issues-25.pb} +0 -0
  363. /package/.scannerwork/scanner-report/{issues-50.pb → issues-28.pb} +0 -0
  364. /package/.scannerwork/scanner-report/{issues-54.pb → issues-33.pb} +0 -0
  365. /package/.scannerwork/scanner-report/{measures-10.pb → measures-3.pb} +0 -0
  366. /package/.scannerwork/scanner-report/{measures-54.pb → measures-33.pb} +0 -0
  367. /package/.scannerwork/scanner-report/{measures-5.pb → measures-40.pb} +0 -0
  368. /package/.scannerwork/scanner-report/{source-10.txt → source-3.txt} +0 -0
  369. /package/.scannerwork/scanner-report/{source-54.txt → source-33.txt} +0 -0
  370. /package/.scannerwork/scanner-report/{symbols-11.pb → symbols-2.pb} +0 -0
  371. /package/.scannerwork/scanner-report/{symbols-10.pb → symbols-3.pb} +0 -0
  372. /package/.scannerwork/scanner-report/{symbols-69.pb → symbols-30.pb} +0 -0
  373. /package/.scannerwork/scanner-report/{symbols-54.pb → symbols-33.pb} +0 -0
  374. /package/.scannerwork/scanner-report/{syntax-highlightings-10.pb → syntax-highlightings-3.pb} +0 -0
  375. /package/.scannerwork/scanner-report/{syntax-highlightings-54.pb → syntax-highlightings-33.pb} +0 -0
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2021 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 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.
@@ -11,94 +11,109 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
15
+ /* global describe it */
14
16
  'use strict';
15
17
 
16
- // fatal errors
17
- const codes = {
18
- Error: 1,
19
- InvalidOption: 2,
20
- DatabaseNotFound: 10,
21
- Unauthorized: 11,
22
- Forbidden: 12,
23
- DatabaseNotEmpty: 13,
24
- NoLogFileName: 20,
25
- LogDoesNotExist: 21,
26
- IncompleteChangesInLogFile: 22,
27
- SpoolChangesError: 30,
28
- HTTPFatalError: 40,
29
- BulkGetError: 50
30
- };
18
+ const assert = require('assert');
19
+ const fs = require('fs');
20
+ const u = require('./citestutils.js');
21
+
22
+ [{ useApi: true }, { useApi: false }].forEach(function(params) {
23
+ describe(u.scenario('Resume tests', params), function() {
24
+ it('should create a log file', function(done) {
25
+ // Allow up to 90 s for this test
26
+ u.setTimeout(this, 60);
27
+
28
+ const actualBackup = `./${this.fileName}`;
29
+ const logFile = `./${this.fileName}` + '.log';
30
+ // Use abort parameter to terminate the backup a given number of ms after
31
+ // the first data write to the output file.
32
+ const p = u.p(params, { opts: { log: logFile } });
33
+ u.testBackupToFile(p, 'animaldb', actualBackup, function(err) {
34
+ if (err) {
35
+ done(err);
36
+ } else {
37
+ // Assert the log file exists
38
+ try {
39
+ assert.ok(fs.existsSync(logFile), 'The log file should exist.');
40
+ done();
41
+ } catch (err) {
42
+ done(err);
43
+ }
44
+ }
45
+ });
46
+ });
47
+
48
+ it('should restore corrupted animaldb to a database correctly', function(done) {
49
+ // Allow up to 60 s to restore and compare (again it should be faster)!
50
+ u.setTimeout(this, 60);
51
+ const input = fs.createReadStream('./test/fixtures/animaldb_corrupted.json');
52
+ const dbName = this.dbName;
53
+ input.on('open', function() {
54
+ u.testRestore(params, input, dbName, function(err) {
55
+ if (err) {
56
+ done(err);
57
+ } else {
58
+ u.dbCompare('animaldb', dbName, done);
59
+ }
60
+ });
61
+ });
62
+ });
31
63
 
32
- class BackupError extends Error {
33
- constructor(name, message) {
34
- super(message);
35
- this.name = name;
36
- }
37
- }
64
+ it('should restore resumed animaldb with blank line to a database correctly', function(done) {
65
+ // Allow up to 60 s to restore and compare (again it should be faster)!
66
+ u.setTimeout(this, 60);
67
+ const input = fs.createReadStream('./test/fixtures/animaldb_resumed_blank.json');
68
+ const dbName = this.dbName;
69
+ input.on('open', function() {
70
+ u.testRestore(params, input, dbName, function(err) {
71
+ if (err) {
72
+ done(err);
73
+ } else {
74
+ u.dbCompare('animaldb', dbName, done);
75
+ }
76
+ });
77
+ });
78
+ });
79
+ });
80
+ });
38
81
 
39
- class HTTPError extends BackupError {
40
- constructor(responseError, name) {
41
- // Special case some names for more useful error messages
42
- switch (responseError.status) {
43
- case 401:
44
- name = 'Unauthorized';
45
- break;
46
- case 403:
47
- name = 'Forbidden';
48
- break;
49
- default:
50
- name = name || 'HTTPFatalError';
51
- }
52
- super(name, responseError.message);
53
- }
54
- }
82
+ describe('Resume tests', function() {
83
+ // Currently cannot abort API backups, when we do this test should be run for
84
+ // both API and CLI
85
+ it('should correctly backup and restore backup10m', function(done) {
86
+ // Allow up to 90 s for this test
87
+ u.setTimeout(this, 90);
55
88
 
56
- // Default function to return an error for HTTP status codes
57
- // < 400 -> OK
58
- // 4XX (except 429) -> Fatal
59
- // 429 & >=500 -> Transient
60
- function checkResponse(err) {
61
- if (err) {
62
- // Construct an HTTPError if there is request information on the error
63
- // Codes < 400 are considered OK
64
- if (err.status >= 400) {
65
- return new HTTPError(err);
66
- } else {
67
- // Send it back again if there was no status code, e.g. a cxn error
68
- return augmentMessage(err);
69
- }
70
- }
71
- }
89
+ const actualBackup = `./${this.fileName}`;
90
+ const logFile = `./${this.fileName}` + '.log';
91
+ // Use abort parameter to terminate the backup a given number of ms after
92
+ // the first data write to the output file.
93
+ const p = u.p(params, { abort: true }, { opts: { log: logFile } });
94
+ const restoreDb = this.dbName;
95
+ // Set the database doc count as fewer than this should be written during
96
+ // resumed backup.
97
+ p.exclusiveMaxExpected = 5096;
72
98
 
73
- function convertResponseError(responseError, errorFactory) {
74
- if (!errorFactory) {
75
- errorFactory = checkResponse;
76
- }
77
- return errorFactory(responseError);
78
- }
99
+ u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb, done);
100
+ });
101
+ // Note --output is only valid for CLI usage, this test should only run for CLI
102
+ const params = { useApi: false };
103
+ it('should correctly backup and restore backup10m using --output', function(done) {
104
+ // Allow up to 90 s for this test
105
+ u.setTimeout(this, 90);
79
106
 
80
- function augmentMessage(err) {
81
- // For errors that don't have a status code, we are likely looking at a cxn
82
- // error.
83
- // Try to augment the message with more detail (core puts the code in statusText)
84
- if (err && err.statusText) {
85
- err.message = `${err.message} ${err.statusText}`;
86
- }
87
- if (err && err.description) {
88
- err.message = `${err.message} ${err.description}`;
89
- }
90
- return err;
91
- }
107
+ const actualBackup = `./${this.fileName}`;
108
+ const logFile = `./${this.fileName}` + '.log';
109
+ // Use abort parameter to terminate the backup a given number of ms after
110
+ // the first data write to the output file.
111
+ const p = u.p(params, { abort: true }, { opts: { output: actualBackup, log: logFile } });
112
+ const restoreDb = this.dbName;
113
+ // Set the database doc count as fewer than this should be written during
114
+ // resumed backup.
115
+ p.exclusiveMaxExpected = 5096;
92
116
 
93
- module.exports = {
94
- BackupError: BackupError,
95
- HTTPError: HTTPError,
96
- convertResponseError: convertResponseError,
97
- terminationCallback: function terminationCallback(err, data) {
98
- if (err) {
99
- console.error(`ERROR: ${err.message}`);
100
- process.exitCode = codes[err.name] || 1;
101
- process.exit();
102
- }
103
- }
104
- };
117
+ u.testBackupAbortResumeRestore(p, 'backup10m', actualBackup, restoreDb, done);
118
+ });
119
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2022 IBM Corp. All rights reserved.
1
+ // Copyright © 2017 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.
@@ -11,101 +11,53 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
15
+ /* global describe it */
14
16
  'use strict';
15
17
 
16
18
  const fs = require('fs');
17
- const liner = require('./liner.js');
18
- const change = require('./change.js');
19
- const error = require('./error.js');
20
- const debug = require('debug')('couchbackup:spoolchanges');
21
-
22
- /**
23
- * Write log file for all changes from a database, ready for downloading
24
- * in batches.
25
- *
26
- * @param {string} dbUrl - URL of database
27
- * @param {string} log - path to log file to use
28
- * @param {number} bufferSize - the number of changes per batch/log line
29
- * @param {function(err)} callback - a callback to run on completion
30
- */
31
- module.exports = function(db, log, bufferSize, ee, callback) {
32
- // list of document ids to process
33
- const buffer = [];
34
- let batch = 0;
35
- let lastSeq = null;
36
- const logStream = fs.createWriteStream(log);
37
- let pending = 0;
38
- // The number of changes to fetch per request
39
- const limit = 100000;
19
+ const u = require('./citestutils.js');
40
20
 
41
- // send documents ids to the queue in batches of bufferSize + the last batch
42
- const processBuffer = function(lastOne) {
43
- if (buffer.length >= bufferSize || (lastOne && buffer.length > 0)) {
44
- debug('writing', buffer.length, 'changes to the backup file');
45
- const b = { docs: buffer.splice(0, bufferSize), batch: batch };
46
- logStream.write(':t batch' + batch + ' ' + JSON.stringify(b.docs) + '\n');
47
- ee.emit('changes', batch);
48
- batch++;
49
- }
50
- };
51
-
52
- // called once per received change
53
- const onChange = function(c) {
54
- if (c) {
55
- if (c.error) {
56
- ee.emit('error', new error.BackupError('InvalidChange', `Received invalid change: ${c}`));
57
- } else if (c.changes) {
58
- const obj = { id: c.id };
59
- buffer.push(obj);
60
- processBuffer(false);
61
- } else if (c.last_seq) {
62
- lastSeq = c.last_seq;
63
- pending = c.pending;
21
+ describe('Event tests', function() {
22
+ it('should get a finished event when using stdout', function(done) {
23
+ u.setTimeout(this, 40);
24
+ // Use the API so we can get events
25
+ const params = { useApi: true };
26
+ const backup = u.testBackup(params, 'animaldb', process.stdout, function(err) {
27
+ if (err) {
28
+ done(err);
64
29
  }
65
- }
66
- };
67
-
68
- function getChanges(since = 0) {
69
- debug('making changes request since ' + since);
70
- return db.service.postChangesAsStream({ db: db.db, since: since, limit: limit, seqInterval: limit })
71
- .then(response => {
72
- response.result.pipe(liner())
73
- .on('error', function(err) {
74
- logStream.end();
75
- callback(err);
76
- })
77
- .pipe(change(onChange))
78
- .on('error', function(err) {
79
- logStream.end();
80
- callback(err);
81
- })
82
- .on('finish', function() {
83
- processBuffer(true);
84
- if (!lastSeq) {
85
- logStream.end();
86
- debug('changes request terminated before last_seq was sent');
87
- callback(new error.BackupError('SpoolChangesError', 'Changes request terminated before last_seq was sent'));
88
- } else {
89
- debug(`changes request completed with last_seq: ${lastSeq} and ${pending} changes pending.`);
90
- if (pending > 0) {
91
- // Return the next promise
92
- return getChanges(lastSeq);
93
- } else {
94
- debug('finished streaming database changes');
95
- logStream.end(':changes_complete ' + lastSeq + '\n', 'utf8', callback);
96
- }
97
- }
98
- });
99
- })
100
- .catch(err => {
101
- logStream.end();
102
- if (err.status && err.status >= 400) {
103
- callback(error.convertResponseError(err));
104
- } else if (err.name !== 'SpoolChangesError') {
105
- callback(new error.BackupError('SpoolChangesError', `Failed changes request - ${err.message}`));
30
+ });
31
+ backup.on('finished', function() {
32
+ try {
33
+ // Test will time out if the finished event is not emitted
34
+ done();
35
+ } catch (err) {
36
+ done(err);
37
+ }
38
+ });
39
+ });
40
+ it('should get a finished event when using file output', function(done) {
41
+ u.setTimeout(this, 40);
42
+ // Use the API so we can get events
43
+ const params = { useApi: true };
44
+ const actualBackup = `./${this.fileName}`;
45
+ // Create a file and backup to it
46
+ const output = fs.createWriteStream(actualBackup);
47
+ output.on('open', function() {
48
+ const backup = u.testBackup(params, 'animaldb', output, function(err) {
49
+ if (err) {
50
+ done(err);
106
51
  }
107
52
  });
108
- }
109
-
110
- getChanges();
111
- };
53
+ backup.on('finished', function() {
54
+ try {
55
+ // Test will time out if the finished event is not emitted
56
+ done();
57
+ } catch (err) {
58
+ done(err);
59
+ }
60
+ });
61
+ });
62
+ });
63
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017 IBM Corp. All rights reserved.
1
+ // Copyright © 2018, 2021 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.
@@ -11,31 +11,82 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
15
+ /* global describe it */
14
16
  'use strict';
15
17
 
16
- // stolen from http://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
17
- const stream = require('stream');
18
+ const fs = require('fs');
19
+ const readline = require('readline');
20
+ const u = require('./citestutils.js');
21
+ const uuid = require('uuid').v4;
22
+
23
+ const params = { useApi: true };
24
+
25
+ describe(u.scenario('Concurrent database backups', params), function() {
26
+ it('should run concurrent API database backups correctly #slower', function(done) {
27
+ // Allow up to 900 s to backup and compare (it should be much faster)!
28
+ u.setTimeout(this, 900);
29
+
30
+ let doneCount = 0;
31
+ let doneErr;
32
+ const finished = function(err) {
33
+ doneCount++;
34
+ if (doneCount === 2) {
35
+ done(doneErr || err);
36
+ }
37
+ doneErr = err;
38
+ };
39
+
40
+ const checkForEmptyBatches = function(fileName, cb) {
41
+ let foundEmptyBatch = false;
18
42
 
19
- module.exports = function(onChange) {
20
- const change = new stream.Transform({ objectMode: true });
43
+ const rd = readline.createInterface({
44
+ input: fs.createReadStream(fileName),
45
+ output: fs.createWriteStream('/dev/null'),
46
+ terminal: false
47
+ });
21
48
 
22
- change._transform = function(line, encoding, done) {
23
- let obj = null;
49
+ rd.on('line', function(line) {
50
+ if (JSON.parse(line).length === 0) {
51
+ // Note: Empty batch arrays indicate that the running backup is
52
+ // incorrectly sharing a log file with another ongoing backup job.
53
+ foundEmptyBatch = true;
54
+ }
55
+ });
24
56
 
25
- // one change per line - remove the trailing comma
26
- line = line.trim().replace(/,$/, '');
57
+ rd.on('close', function() {
58
+ if (foundEmptyBatch) {
59
+ cb(new Error(`Log file '${fileName}' contains empty batches`));
60
+ } else {
61
+ cb();
62
+ }
63
+ });
64
+ };
27
65
 
28
- // extract thee last_seq at the end of the changes feed
29
- if (line.match(/^"last_seq":/)) {
30
- line = '{' + line;
31
- }
32
- try {
33
- obj = JSON.parse(line);
34
- } catch (e) {
35
- }
36
- onChange(obj);
37
- done();
38
- };
66
+ // [1] Run 'largedb2g' database backup
67
+ const actualBackup1 = `./${uuid()}`;
68
+ const output1 = fs.createWriteStream(actualBackup1);
69
+ output1.on('open', function() {
70
+ u.testBackup(params, 'largedb2g', output1, function(err) {
71
+ if (err) {
72
+ finished(err);
73
+ } else {
74
+ checkForEmptyBatches(actualBackup1, finished);
75
+ }
76
+ });
77
+ });
39
78
 
40
- return change;
41
- };
79
+ // [2] Run 'largedb1g' database backup
80
+ const actualBackup2 = `./${uuid()}`;
81
+ const output2 = fs.createWriteStream(actualBackup2);
82
+ output2.on('open', function() {
83
+ u.testBackup(params, 'largedb1g', output2, function(err) {
84
+ if (err) {
85
+ finished(err);
86
+ } else {
87
+ checkForEmptyBatches(actualBackup2, finished);
88
+ }
89
+ });
90
+ });
91
+ });
92
+ });
@@ -1,4 +1,4 @@
1
- // Copyright © 2017, 2022 IBM Corp. All rights reserved.
1
+ // Copyright © 2017, 2021 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.
@@ -11,70 +11,132 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+
15
+ /* global describe it before after */
14
16
  'use strict';
15
17
 
16
- const async = require('async');
17
- const error = require('./error.js');
18
- const events = require('events');
19
-
20
- module.exports = function(db, options) {
21
- const ee = new events.EventEmitter();
22
- const start = new Date().getTime();
23
- let batch = 0;
24
- let hasErrored = false;
25
- let startKey = null;
26
- let total = 0;
27
-
28
- async.doUntil(
29
- function(callback) {
30
- // Note, include_docs: true is set automatically when using the
31
- // fetch function.
32
- const opts = { db: db.db, limit: options.bufferSize, includeDocs: true };
33
-
34
- // To avoid double fetching a document solely for the purposes of getting
35
- // the next ID to use as a startKey for the next page we instead use the
36
- // last ID of the current page and append the lowest unicode sort
37
- // character.
38
- if (startKey) opts.startKey = `${startKey}\0`;
39
- db.service.postAllDocs(opts).then(response => {
40
- const body = response.result;
41
- if (!body.rows) {
42
- ee.emit('error', new error.BackupError(
43
- 'AllDocsError', 'ERROR: Invalid all docs response'));
44
- callback();
45
- } else {
46
- if (body.rows.length < opts.limit) {
47
- startKey = null; // last batch
48
- } else {
49
- startKey = body.rows[opts.limit - 1].id;
50
- }
51
-
52
- const docs = [];
53
- body.rows.forEach(function(doc) {
54
- docs.push(doc.doc);
55
- });
56
-
57
- if (docs.length > 0) {
58
- ee.emit('received', {
59
- batch: batch++,
60
- data: docs,
61
- length: docs.length,
62
- time: (new Date().getTime() - start) / 1000,
63
- total: total += docs.length
64
- });
65
- }
66
- callback();
67
- }
68
- }).catch(err => {
69
- err = error.convertResponseError(err);
70
- ee.emit('error', err);
71
- hasErrored = true;
72
- callback();
73
- });
74
- },
75
- function(callback) { callback(null, hasErrored || startKey == null); },
76
- function() { ee.emit('finished', { total: total }); }
77
- );
78
-
79
- return ee;
80
- };
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(done) {
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
+ done();
40
+ });
41
+
42
+ it('respects the COUCH_DATABASE env variable', function(done) {
43
+ process.env.COUCH_DATABASE = 'mydb';
44
+ const config = {};
45
+ applyEnvVars(config);
46
+ assert.strictEqual(typeof config.db, 'string');
47
+ assert.strictEqual(config.db, process.env.COUCH_DATABASE);
48
+ done();
49
+ });
50
+
51
+ it('respects the COUCH_BUFFER_SIZE env variable', function(done) {
52
+ process.env.COUCH_BUFFER_SIZE = '1000';
53
+ const config = {};
54
+ applyEnvVars(config);
55
+ assert.strictEqual(typeof config.bufferSize, 'number');
56
+ assert.strictEqual(config.bufferSize, 1000);
57
+ done();
58
+ });
59
+
60
+ it('respects the COUCH_PARALLELISM env variable', function(done) {
61
+ process.env.COUCH_PARALLELISM = '20';
62
+ const config = {};
63
+ applyEnvVars(config);
64
+ assert.strictEqual(typeof config.parallelism, 'number');
65
+ assert.strictEqual(config.parallelism, 20);
66
+ done();
67
+ });
68
+
69
+ it('respects the COUCH_REQUEST_TIMEOUT env variable', function(done) {
70
+ process.env.COUCH_REQUEST_TIMEOUT = '10000';
71
+ const config = {};
72
+ applyEnvVars(config);
73
+ assert.strictEqual(typeof config.requestTimeout, 'number');
74
+ assert.strictEqual(config.requestTimeout, 10000);
75
+ done();
76
+ });
77
+
78
+ it('respects the CLOUDANT_IAM_API_KEY env variable', function(done) {
79
+ const key = 'ABC123-ZYX987_cba789-xyz321';
80
+ process.env.CLOUDANT_IAM_API_KEY = key;
81
+ const config = {};
82
+ applyEnvVars(config);
83
+ assert.strictEqual(typeof config.iamApiKey, 'string');
84
+ assert.strictEqual(config.iamApiKey, key);
85
+ done();
86
+ });
87
+
88
+ it('respects the CLOUDANT_IAM_TOKEN_URL env variable', function(done) {
89
+ const u = 'https://testhost.example:1234/identity/token';
90
+ process.env.CLOUDANT_IAM_TOKEN_URL = u;
91
+ const config = {};
92
+ applyEnvVars(config);
93
+ assert.strictEqual(typeof config.iamTokenUrl, 'string');
94
+ assert.strictEqual(config.iamTokenUrl, u);
95
+ done();
96
+ });
97
+
98
+ it('respects the COUCH_LOG env variable', function(done) {
99
+ process.env.COUCH_LOG = 'my.log';
100
+ const config = {};
101
+ applyEnvVars(config);
102
+ assert.strictEqual(typeof config.log, 'string');
103
+ assert.strictEqual(config.log, process.env.COUCH_LOG);
104
+ done();
105
+ });
106
+
107
+ it('respects the COUCH_RESUME env variable', function(done) {
108
+ process.env.COUCH_RESUME = 'true';
109
+ const config = {};
110
+ applyEnvVars(config);
111
+ assert.strictEqual(typeof config.resume, 'boolean');
112
+ assert.strictEqual(config.resume, true);
113
+ done();
114
+ });
115
+
116
+ it('respects the COUCH_OUTPUT env variable', function(done) {
117
+ process.env.COUCH_OUTPUT = 'myfile.txt';
118
+ const config = {};
119
+ applyEnvVars(config);
120
+ assert.strictEqual(typeof config.output, 'string');
121
+ assert.strictEqual(config.output, process.env.COUCH_OUTPUT);
122
+ done();
123
+ });
124
+
125
+ it('respects the COUCH_MODE env variable', function(done) {
126
+ process.env.COUCH_MODE = 'shallow';
127
+ const config = {};
128
+ applyEnvVars(config);
129
+ assert.strictEqual(typeof config.mode, 'string');
130
+ assert.strictEqual(config.mode, 'shallow');
131
+ done();
132
+ });
133
+
134
+ it('respects the COUCH_QUIET env variable', function(done) {
135
+ process.env.COUCH_QUIET = 'true';
136
+ const config = {};
137
+ applyEnvVars(config);
138
+ assert.strictEqual(typeof config.quiet, 'boolean');
139
+ assert.strictEqual(config.quiet, true);
140
+ done();
141
+ });
142
+ });