@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, 2022 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,131 +12,134 @@
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(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();
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();
114
45
  });
115
46
 
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();
47
+ it('should perform a shallow backup', function(done) {
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
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
63
+ .on('error', function(err) {
64
+ assert.fail(err);
65
+ })
66
+ .on('received', function(data) {
67
+ if (data.batch === 3) {
68
+ assert.strictEqual(data.length, 2); // smaller last batch
69
+ } else {
70
+ assert.strictEqual(data.length, 3);
71
+ }
72
+ })
73
+ .on('finished', function(data) {
74
+ assert.strictEqual(data.total, 11);
75
+ assert.ok(couch.isDone());
76
+ done();
77
+ });
123
78
  });
124
79
 
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();
80
+ it('should perform a shallow backup with transient error', function(done) {
81
+ const couch = nock(dbUrl)
82
+ // batch 1
83
+ .post('/_all_docs', { limit: 3, include_docs: true })
84
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
85
+ // batch 2
86
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
87
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
88
+ // batch 3 - transient error
89
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
90
+ .reply(500, { error: 'Internal Server Error' })
91
+ // batch 3 - retry
92
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
93
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_3.json', 'utf8')))
94
+ // batch 4
95
+ .post('/_all_docs', { limit: 3, start_key: snipeKey, include_docs: true })
96
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_4.json', 'utf8')));
97
+
98
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
99
+ .on('error', function(err) {
100
+ assert.strictEqual(err.name, 'HTTPError');
101
+ })
102
+ .on('received', function(data) {
103
+ if (data.batch === 3) {
104
+ assert.strictEqual(data.length, 2); // smaller last batch
105
+ } else {
106
+ assert.strictEqual(data.length, 3);
107
+ }
108
+ })
109
+ .on('finished', function(data) {
110
+ assert.strictEqual(data.total, 11);
111
+ assert.ok(couch.isDone());
112
+ done();
113
+ });
132
114
  });
133
115
 
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();
116
+ it('should fail to perform a shallow backup on fatal error', function(done) {
117
+ const couch = nock(dbUrl)
118
+ // batch 1
119
+ .post('/_all_docs', { limit: 3, include_docs: true })
120
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_1.json', 'utf8')))
121
+ // batch 2
122
+ .post('/_all_docs', { limit: 3, start_key: badgerKey, include_docs: true })
123
+ .reply(200, JSON.parse(fs.readFileSync('./test/fixtures/animaldb_all_docs_2.json', 'utf8')))
124
+ // batch 3 - fatal error
125
+ .post('/_all_docs', { limit: 3, start_key: kookaburraKey, include_docs: true })
126
+ .reply(401, { error: 'Unauthorized' });
127
+
128
+ let errCount = 0;
129
+
130
+ shallowBackup(dbUrl, { bufferSize: 3, parallelism: 1 })
131
+ .on('error', function(err) {
132
+ errCount++;
133
+ assert.strictEqual(err.name, 'Unauthorized');
134
+ })
135
+ .on('received', function(data) {
136
+ assert.strictEqual(data.length, 3);
137
+ })
138
+ .on('finished', function(data) {
139
+ assert.strictEqual(data.total, 6);
140
+ assert.ok(couch.isDone());
141
+ assert.strictEqual(errCount, 1);
142
+ done();
143
+ });
141
144
  });
142
145
  });
@@ -0,0 +1,68 @@
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ /* global beforeEach afterEach */
16
+ 'use strict';
17
+
18
+ const { CloudantV1 } = require('@ibm-cloud/cloudant');
19
+ const url = new URL((process.env.COUCH_BACKEND_URL) ? process.env.COUCH_BACKEND_URL : 'https://no-couch-backend-url-set.test');
20
+ const { BasicAuthenticator, NoAuthAuthenticator } = require('ibm-cloud-sdk-core');
21
+ const authenticator = (url.username) ? new BasicAuthenticator({ username: url.username, password: decodeURIComponent(url.password) }) : new NoAuthAuthenticator();
22
+ const serviceOpts = {
23
+ authenticator: authenticator
24
+ };
25
+ const cloudant = new CloudantV1(serviceOpts);
26
+ // Remove auth from URL before using for service
27
+ cloudant.setServiceUrl(new URL(url.pathname, url.origin).toString());
28
+ const uuid = require('uuid').v4;
29
+ const fs = require('fs');
30
+
31
+ // Mocha hooks that will be at the root context so run for all tests
32
+
33
+ beforeEach('Create test database', function(done) {
34
+ // Don't run hook for unit tests, just for CI
35
+ if (!this.currentTest.fullTitle().includes('#unit')) {
36
+ // Allow 10 seconds to create the DB
37
+ this.timeout(10 * 1000);
38
+ const unique = uuid();
39
+ this.fileName = `${unique}`;
40
+ this.dbName = 'couchbackup_test_' + unique;
41
+ cloudant.putDatabase({ db: this.dbName }).then(() => { done(); }).catch((err) => { done(err); });
42
+ } else {
43
+ done();
44
+ }
45
+ });
46
+
47
+ afterEach('Delete test database', function(done) {
48
+ // Don't run hook for unit tests, just for CI
49
+ if (!this.currentTest.fullTitle().includes('#unit')) {
50
+ // Allow 10 seconds to delete the DB
51
+ this.timeout(10 * 1000);
52
+ deleteIfExists(this.fileName);
53
+ deleteIfExists(`${this.fileName}.log`);
54
+ cloudant.deleteDatabase({ db: this.dbName }).then(() => { done(); }).catch((err) => { done(err); });
55
+ } else {
56
+ done();
57
+ }
58
+ });
59
+
60
+ function deleteIfExists(fileName) {
61
+ fs.unlink(fileName, function(err) {
62
+ if (err) {
63
+ if (err.code !== 'ENOENT') {
64
+ console.error(`${err.code} ${err.message}`);
65
+ }
66
+ }
67
+ });
68
+ }
@@ -0,0 +1,147 @@
1
+ // Copyright © 2017, 2021 IBM Corp. All rights reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ /* global describe it beforeEach */
16
+ 'use strict';
17
+
18
+ const assert = require('assert');
19
+ const fs = require('fs');
20
+ const nock = require('nock');
21
+ const request = require('../includes/request.js');
22
+ const writer = require('../includes/writer.js');
23
+ const noopEmitter = new (require('events')).EventEmitter();
24
+ const liner = require('../includes/liner.js');
25
+
26
+ const longTestTimeout = 3000;
27
+
28
+ // The writer expects a line-by-line stream so this utility function does that
29
+ // processing for the tests (which normally happens in the internal restore
30
+ // function).
31
+ function testLinestream(fixture = './test/fixtures/animaldb_expected.json') {
32
+ return fs.createReadStream(fixture)
33
+ .pipe(liner());
34
+ }
35
+
36
+ describe('#unit Check database restore writer', function() {
37
+ const dbUrl = 'http://localhost:5984/animaldb';
38
+ const db = request.client(dbUrl, { parallelism: 1 });
39
+
40
+ beforeEach('Reset nocks', function() {
41
+ nock.cleanAll();
42
+ });
43
+
44
+ it('should complete successfully', function(done) {
45
+ nock(dbUrl)
46
+ .post('/_bulk_docs')
47
+ .reply(200, []); // success
48
+
49
+ testLinestream()
50
+ .pipe(writer(db, 500, 1, noopEmitter))
51
+ .on('error', function(err) {
52
+ done(err);
53
+ })
54
+ .on('finished', function(data) {
55
+ assert.strictEqual(data.total, 15);
56
+ assert.ok(nock.isDone());
57
+ done();
58
+ });
59
+ });
60
+
61
+ it('should terminate on a fatal error', function(done) {
62
+ nock(dbUrl)
63
+ .post('/_bulk_docs')
64
+ .reply(401, { error: 'Unauthorized' }); // fatal error
65
+
66
+ testLinestream()
67
+ .pipe(writer(db, 500, 1, noopEmitter))
68
+ .on('error', function(err) {
69
+ assert.strictEqual(err.name, 'Unauthorized');
70
+ assert.strictEqual(err.message, 'Access is denied due to invalid credentials.');
71
+ assert.ok(nock.isDone());
72
+ done();
73
+ });
74
+ });
75
+
76
+ it('should retry on transient errors', function(done) {
77
+ nock(dbUrl)
78
+ .post('/_bulk_docs')
79
+ .reply(429, { error: 'Too Many Requests' }) // transient error
80
+ .post('/_bulk_docs')
81
+ .reply(500, { error: 'Internal Server Error' }) // transient error
82
+ .post('/_bulk_docs')
83
+ .reply(200, { ok: true }); // third time lucky success
84
+
85
+ testLinestream()
86
+ .pipe(writer(db, 500, 1, noopEmitter))
87
+ .on('error', function(err) {
88
+ done(err);
89
+ })
90
+ .on('finished', function(data) {
91
+ assert.strictEqual(data.total, 15);
92
+ assert.ok(nock.isDone());
93
+ done();
94
+ });
95
+ }).timeout(longTestTimeout);
96
+
97
+ it('should fail after 3 transient errors', function(done) {
98
+ nock(dbUrl)
99
+ .post('/_bulk_docs')
100
+ .reply(429, { error: 'Too Many Requests' }) // transient error
101
+ .post('/_bulk_docs')
102
+ .reply(500, { error: 'Internal Server Error' }) // transient error
103
+ .post('/_bulk_docs')
104
+ .reply(503, { error: 'Service Unavailable' }); // Final transient error
105
+
106
+ testLinestream()
107
+ .pipe(writer(db, 500, 1, noopEmitter))
108
+ .on('error', function(err) {
109
+ assert.strictEqual(err.name, 'HTTPFatalError');
110
+ assert.strictEqual(err.message, `503 : post ${dbUrl}/_bulk_docs - Error: Service Unavailable`);
111
+ assert.ok(nock.isDone());
112
+ done();
113
+ });
114
+ }).timeout(longTestTimeout);
115
+
116
+ it('should restore shallow backups without rev info successfully', function(done) {
117
+ nock(dbUrl)
118
+ .post('/_bulk_docs')
119
+ .reply(200, [{ ok: true, id: 'foo', rev: '1-abc' }]); // success
120
+
121
+ testLinestream('./test/fixtures/animaldb_old_shallow.json')
122
+ .pipe(writer(db, 500, 1, noopEmitter))
123
+ .on('error', function(err) {
124
+ done(err);
125
+ })
126
+ .on('finished', function(data) {
127
+ assert.strictEqual(data.total, 11);
128
+ assert.ok(nock.isDone());
129
+ done();
130
+ });
131
+ });
132
+
133
+ it('should get a batch error for non-empty array response with new_edits false', function(done) {
134
+ nock(dbUrl)
135
+ .post('/_bulk_docs')
136
+ .reply(200, [{ id: 'foo', error: 'foo', reason: 'bar' }]);
137
+
138
+ testLinestream()
139
+ .pipe(writer(db, 500, 1, noopEmitter))
140
+ .on('error', function(err) {
141
+ assert.strictEqual(err.name, 'Error');
142
+ assert.strictEqual(err.message, 'Error writing batch with new_edits:false and 1 items');
143
+ assert.ok(nock.isDone());
144
+ done();
145
+ });
146
+ });
147
+ });