rugged 0.16.0 → 0.17.0b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (392) hide show
  1. data/README.md +373 -243
  2. data/Rakefile +22 -0
  3. data/ext/rugged/extconf.rb +9 -6
  4. data/ext/rugged/rugged.c +123 -31
  5. data/ext/rugged/rugged.h +11 -10
  6. data/ext/rugged/rugged_blob.c +181 -18
  7. data/ext/rugged/rugged_commit.c +196 -18
  8. data/ext/rugged/rugged_config.c +94 -5
  9. data/ext/rugged/rugged_object.c +54 -1
  10. data/ext/rugged/rugged_reference.c +203 -15
  11. data/ext/rugged/{remote.c → rugged_remote.c} +35 -10
  12. data/ext/rugged/rugged_repo.c +323 -81
  13. data/ext/rugged/rugged_revwalk.c +57 -4
  14. data/ext/rugged/rugged_signature.c +3 -3
  15. data/ext/rugged/rugged_tag.c +72 -1
  16. data/ext/rugged/rugged_tree.c +70 -2
  17. data/ext/rugged/vendor/libgit2-dist/deps/regex/config.h +7 -0
  18. data/ext/rugged/vendor/libgit2-dist/deps/regex/regcomp.c +3856 -0
  19. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.c +85 -0
  20. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex.h +582 -0
  21. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.c +1744 -0
  22. data/ext/rugged/vendor/libgit2-dist/deps/regex/regex_internal.h +810 -0
  23. data/ext/rugged/vendor/libgit2-dist/deps/regex/regexec.c +4369 -0
  24. data/ext/rugged/vendor/libgit2-dist/examples/diff.c +238 -0
  25. data/ext/rugged/vendor/libgit2-dist/examples/general.c +4 -4
  26. data/ext/rugged/vendor/libgit2-dist/examples/network/fetch.c +101 -85
  27. data/ext/rugged/vendor/libgit2-dist/examples/network/git2.c +7 -3
  28. data/ext/rugged/vendor/libgit2-dist/examples/network/index-pack.c +80 -25
  29. data/ext/rugged/vendor/libgit2-dist/examples/network/ls-remote.c +6 -6
  30. data/ext/rugged/vendor/libgit2-dist/include/git2/attr.h +224 -0
  31. data/ext/rugged/vendor/libgit2-dist/include/git2/blob.h +59 -5
  32. data/ext/rugged/vendor/libgit2-dist/include/git2/branch.h +114 -7
  33. data/ext/rugged/vendor/libgit2-dist/include/git2/commit.h +14 -7
  34. data/ext/rugged/vendor/libgit2-dist/include/git2/common.h +4 -3
  35. data/ext/rugged/vendor/libgit2-dist/include/git2/config.h +105 -27
  36. data/ext/rugged/vendor/libgit2-dist/include/git2/diff.h +409 -0
  37. data/ext/rugged/vendor/libgit2-dist/include/git2/errors.h +47 -82
  38. data/ext/rugged/vendor/libgit2-dist/include/git2/index.h +25 -10
  39. data/ext/rugged/vendor/libgit2-dist/include/git2/indexer.h +46 -1
  40. data/ext/rugged/vendor/libgit2-dist/include/git2/merge.h +35 -0
  41. data/ext/rugged/vendor/libgit2-dist/include/git2/net.h +1 -1
  42. data/ext/rugged/vendor/libgit2-dist/include/git2/notes.h +139 -0
  43. data/ext/rugged/vendor/libgit2-dist/include/git2/object.h +5 -5
  44. data/ext/rugged/vendor/libgit2-dist/include/git2/odb.h +13 -13
  45. data/ext/rugged/vendor/libgit2-dist/include/git2/odb_backend.h +8 -8
  46. data/ext/rugged/vendor/libgit2-dist/include/git2/oid.h +14 -9
  47. data/ext/rugged/vendor/libgit2-dist/include/git2/reflog.h +5 -5
  48. data/ext/rugged/vendor/libgit2-dist/include/git2/refs.h +37 -17
  49. data/ext/rugged/vendor/libgit2-dist/include/git2/refspec.h +17 -9
  50. data/ext/rugged/vendor/libgit2-dist/include/git2/remote.h +83 -16
  51. data/ext/rugged/vendor/libgit2-dist/include/git2/repository.h +24 -10
  52. data/ext/rugged/vendor/libgit2-dist/include/git2/reset.h +44 -0
  53. data/ext/rugged/vendor/libgit2-dist/include/git2/revparse.h +36 -0
  54. data/ext/rugged/vendor/libgit2-dist/include/git2/revwalk.h +74 -6
  55. data/ext/rugged/vendor/libgit2-dist/include/git2/signature.h +3 -3
  56. data/ext/rugged/vendor/libgit2-dist/include/git2/status.h +120 -19
  57. data/ext/rugged/vendor/libgit2-dist/include/git2/submodule.h +103 -0
  58. data/ext/rugged/vendor/libgit2-dist/include/git2/tag.h +28 -10
  59. data/ext/rugged/vendor/libgit2-dist/include/git2/threads.h +1 -1
  60. data/ext/rugged/vendor/libgit2-dist/include/git2/tree.h +13 -13
  61. data/ext/rugged/vendor/libgit2-dist/include/git2/types.h +16 -2
  62. data/ext/rugged/vendor/libgit2-dist/include/git2/version.h +3 -3
  63. data/ext/rugged/vendor/libgit2-dist/include/git2/windows.h +1 -1
  64. data/ext/rugged/vendor/libgit2-dist/include/git2.h +7 -2
  65. data/ext/rugged/vendor/libgit2-dist/src/attr.c +677 -0
  66. data/ext/rugged/vendor/libgit2-dist/src/attr.h +56 -0
  67. data/ext/rugged/vendor/libgit2-dist/src/attr_file.c +609 -0
  68. data/ext/rugged/vendor/libgit2-dist/src/attr_file.h +145 -0
  69. data/ext/rugged/vendor/libgit2-dist/src/blob.c +213 -60
  70. data/ext/rugged/vendor/libgit2-dist/src/blob.h +2 -1
  71. data/ext/rugged/vendor/libgit2-dist/src/branch.c +208 -0
  72. data/ext/rugged/vendor/libgit2-dist/src/branch.h +17 -0
  73. data/ext/rugged/vendor/libgit2-dist/src/bswap.h +1 -1
  74. data/ext/rugged/vendor/libgit2-dist/src/buffer.c +395 -46
  75. data/ext/rugged/vendor/libgit2-dist/src/buffer.h +112 -9
  76. data/ext/rugged/vendor/libgit2-dist/src/cache.c +37 -49
  77. data/ext/rugged/vendor/libgit2-dist/src/cache.h +7 -17
  78. data/ext/rugged/vendor/libgit2-dist/src/cc-compat.h +18 -16
  79. data/ext/rugged/vendor/libgit2-dist/src/commit.c +56 -90
  80. data/ext/rugged/vendor/libgit2-dist/src/commit.h +1 -1
  81. data/ext/rugged/vendor/libgit2-dist/src/common.h +12 -5
  82. data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.c +1 -1
  83. data/ext/rugged/vendor/libgit2-dist/src/{win32 → compat}/fnmatch.h +3 -3
  84. data/ext/rugged/vendor/libgit2-dist/src/config.c +247 -158
  85. data/ext/rugged/vendor/libgit2-dist/src/config.h +10 -1
  86. data/ext/rugged/vendor/libgit2-dist/src/config_cache.c +94 -0
  87. data/ext/rugged/vendor/libgit2-dist/src/config_file.c +606 -496
  88. data/ext/rugged/vendor/libgit2-dist/src/config_file.h +31 -0
  89. data/ext/rugged/vendor/libgit2-dist/src/crlf.c +228 -0
  90. data/ext/rugged/vendor/libgit2-dist/src/date.c +876 -0
  91. data/ext/rugged/vendor/libgit2-dist/src/delta-apply.c +15 -9
  92. data/ext/rugged/vendor/libgit2-dist/src/delta-apply.h +2 -2
  93. data/ext/rugged/vendor/libgit2-dist/src/diff.c +814 -0
  94. data/ext/rugged/vendor/libgit2-dist/src/diff.h +43 -0
  95. data/ext/rugged/vendor/libgit2-dist/src/diff_output.c +794 -0
  96. data/ext/rugged/vendor/libgit2-dist/src/errors.c +89 -74
  97. data/ext/rugged/vendor/libgit2-dist/src/fetch.c +94 -66
  98. data/ext/rugged/vendor/libgit2-dist/src/fetch.h +5 -4
  99. data/ext/rugged/vendor/libgit2-dist/src/filebuf.c +157 -100
  100. data/ext/rugged/vendor/libgit2-dist/src/filebuf.h +22 -8
  101. data/ext/rugged/vendor/libgit2-dist/src/fileops.c +330 -206
  102. data/ext/rugged/vendor/libgit2-dist/src/fileops.h +82 -51
  103. data/ext/rugged/vendor/libgit2-dist/src/filter.c +165 -0
  104. data/ext/rugged/vendor/libgit2-dist/src/filter.h +119 -0
  105. data/ext/rugged/vendor/libgit2-dist/src/global.c +4 -4
  106. data/ext/rugged/vendor/libgit2-dist/src/global.h +4 -1
  107. data/ext/rugged/vendor/libgit2-dist/src/hash.c +1 -1
  108. data/ext/rugged/vendor/libgit2-dist/src/hash.h +1 -1
  109. data/ext/rugged/vendor/libgit2-dist/src/ignore.c +203 -0
  110. data/ext/rugged/vendor/libgit2-dist/src/ignore.h +38 -0
  111. data/ext/rugged/vendor/libgit2-dist/src/index.c +220 -169
  112. data/ext/rugged/vendor/libgit2-dist/src/index.h +5 -1
  113. data/ext/rugged/vendor/libgit2-dist/src/indexer.c +601 -102
  114. data/ext/rugged/vendor/libgit2-dist/src/iterator.c +748 -0
  115. data/ext/rugged/vendor/libgit2-dist/src/iterator.h +151 -0
  116. data/ext/rugged/vendor/libgit2-dist/src/khash.h +608 -0
  117. data/ext/rugged/vendor/libgit2-dist/src/map.h +6 -1
  118. data/ext/rugged/vendor/libgit2-dist/src/message.c +61 -0
  119. data/ext/rugged/vendor/libgit2-dist/src/message.h +14 -0
  120. data/ext/rugged/vendor/libgit2-dist/src/mwindow.c +27 -29
  121. data/ext/rugged/vendor/libgit2-dist/src/mwindow.h +4 -4
  122. data/ext/rugged/vendor/libgit2-dist/src/netops.c +375 -56
  123. data/ext/rugged/vendor/libgit2-dist/src/netops.h +12 -9
  124. data/ext/rugged/vendor/libgit2-dist/src/notes.c +548 -0
  125. data/ext/rugged/vendor/libgit2-dist/src/notes.h +28 -0
  126. data/ext/rugged/vendor/libgit2-dist/src/object.c +59 -21
  127. data/ext/rugged/vendor/libgit2-dist/src/odb.c +212 -175
  128. data/ext/rugged/vendor/libgit2-dist/src/odb.h +39 -2
  129. data/ext/rugged/vendor/libgit2-dist/src/odb_loose.c +238 -241
  130. data/ext/rugged/vendor/libgit2-dist/src/odb_pack.c +94 -106
  131. data/ext/rugged/vendor/libgit2-dist/src/oid.c +59 -60
  132. data/ext/rugged/vendor/libgit2-dist/src/oidmap.h +42 -0
  133. data/ext/rugged/vendor/libgit2-dist/src/pack.c +198 -170
  134. data/ext/rugged/vendor/libgit2-dist/src/pack.h +16 -9
  135. data/ext/rugged/vendor/libgit2-dist/src/path.c +496 -106
  136. data/ext/rugged/vendor/libgit2-dist/src/path.h +214 -20
  137. data/ext/rugged/vendor/libgit2-dist/src/pkt.c +88 -159
  138. data/ext/rugged/vendor/libgit2-dist/src/pkt.h +9 -5
  139. data/ext/rugged/vendor/libgit2-dist/src/pool.c +294 -0
  140. data/ext/rugged/vendor/libgit2-dist/src/pool.h +125 -0
  141. data/ext/rugged/vendor/libgit2-dist/src/posix.c +38 -16
  142. data/ext/rugged/vendor/libgit2-dist/src/posix.h +20 -2
  143. data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.c +1 -1
  144. data/ext/rugged/vendor/libgit2-dist/src/ppc/sha1.h +1 -1
  145. data/ext/rugged/vendor/libgit2-dist/src/pqueue.c +7 -7
  146. data/ext/rugged/vendor/libgit2-dist/src/pqueue.h +1 -1
  147. data/ext/rugged/vendor/libgit2-dist/src/protocol.c +21 -13
  148. data/ext/rugged/vendor/libgit2-dist/src/protocol.h +1 -1
  149. data/ext/rugged/vendor/libgit2-dist/src/reflog.c +125 -103
  150. data/ext/rugged/vendor/libgit2-dist/src/reflog.h +1 -1
  151. data/ext/rugged/vendor/libgit2-dist/src/refs.c +713 -640
  152. data/ext/rugged/vendor/libgit2-dist/src/refs.h +27 -3
  153. data/ext/rugged/vendor/libgit2-dist/src/refspec.c +51 -17
  154. data/ext/rugged/vendor/libgit2-dist/src/refspec.h +13 -1
  155. data/ext/rugged/vendor/libgit2-dist/src/remote.c +307 -119
  156. data/ext/rugged/vendor/libgit2-dist/src/remote.h +3 -2
  157. data/ext/rugged/vendor/libgit2-dist/src/repository.c +593 -442
  158. data/ext/rugged/vendor/libgit2-dist/src/repository.h +80 -2
  159. data/ext/rugged/vendor/libgit2-dist/src/reset.c +103 -0
  160. data/ext/rugged/vendor/libgit2-dist/src/revparse.c +753 -0
  161. data/ext/rugged/vendor/libgit2-dist/src/revwalk.c +434 -158
  162. data/ext/rugged/vendor/libgit2-dist/src/sha1.c +3 -3
  163. data/ext/rugged/vendor/libgit2-dist/src/sha1.h +2 -2
  164. data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.c +3 -2
  165. data/ext/rugged/vendor/libgit2-dist/src/sha1_lookup.h +1 -1
  166. data/ext/rugged/vendor/libgit2-dist/src/signature.c +69 -80
  167. data/ext/rugged/vendor/libgit2-dist/src/signature.h +1 -1
  168. data/ext/rugged/vendor/libgit2-dist/src/status.c +184 -638
  169. data/ext/rugged/vendor/libgit2-dist/src/strmap.h +64 -0
  170. data/ext/rugged/vendor/libgit2-dist/src/submodule.c +387 -0
  171. data/ext/rugged/vendor/libgit2-dist/src/tag.c +162 -137
  172. data/ext/rugged/vendor/libgit2-dist/src/tag.h +2 -1
  173. data/ext/rugged/vendor/libgit2-dist/src/thread-utils.c +1 -1
  174. data/ext/rugged/vendor/libgit2-dist/src/thread-utils.h +8 -8
  175. data/ext/rugged/vendor/libgit2-dist/src/transport.c +31 -19
  176. data/ext/rugged/vendor/libgit2-dist/src/transport.h +31 -11
  177. data/ext/rugged/vendor/libgit2-dist/src/transports/git.c +168 -193
  178. data/ext/rugged/vendor/libgit2-dist/src/transports/http.c +192 -241
  179. data/ext/rugged/vendor/libgit2-dist/src/transports/local.c +92 -86
  180. data/ext/rugged/vendor/libgit2-dist/src/tree-cache.c +32 -49
  181. data/ext/rugged/vendor/libgit2-dist/src/tree-cache.h +1 -1
  182. data/ext/rugged/vendor/libgit2-dist/src/tree.c +172 -145
  183. data/ext/rugged/vendor/libgit2-dist/src/tree.h +16 -2
  184. data/ext/rugged/vendor/libgit2-dist/src/tsort.c +16 -14
  185. data/ext/rugged/vendor/libgit2-dist/src/unix/map.c +8 -24
  186. data/ext/rugged/vendor/libgit2-dist/src/unix/posix.h +9 -3
  187. data/ext/rugged/vendor/libgit2-dist/src/util.c +94 -38
  188. data/ext/rugged/vendor/libgit2-dist/src/util.h +119 -13
  189. data/ext/rugged/vendor/libgit2-dist/src/vector.c +84 -31
  190. data/ext/rugged/vendor/libgit2-dist/src/vector.h +37 -4
  191. data/ext/rugged/vendor/libgit2-dist/src/win32/dir.c +81 -41
  192. data/ext/rugged/vendor/libgit2-dist/src/{dir.h → win32/dir.h} +4 -9
  193. data/ext/rugged/vendor/libgit2-dist/src/win32/map.c +19 -35
  194. data/ext/rugged/vendor/libgit2-dist/src/win32/mingw-compat.h +1 -1
  195. data/ext/rugged/vendor/libgit2-dist/src/win32/msvc-compat.h +5 -1
  196. data/ext/rugged/vendor/libgit2-dist/src/win32/posix.h +10 -8
  197. data/ext/rugged/vendor/libgit2-dist/src/win32/posix_w32.c +262 -118
  198. data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.c +12 -9
  199. data/ext/rugged/vendor/libgit2-dist/src/win32/pthread.h +1 -1
  200. data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.c +30 -26
  201. data/ext/rugged/vendor/libgit2-dist/src/win32/utf-conv.h +2 -1
  202. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiff.h +135 -0
  203. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.c +572 -0
  204. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xdiffi.h +63 -0
  205. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.c +253 -0
  206. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xemit.h +36 -0
  207. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xhistogram.c +371 -0
  208. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xinclude.h +46 -0
  209. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmacros.h +54 -0
  210. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xmerge.c +619 -0
  211. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xpatience.c +358 -0
  212. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.c +483 -0
  213. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xprepare.h +34 -0
  214. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xtypes.h +67 -0
  215. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.c +419 -0
  216. data/ext/rugged/vendor/libgit2-dist/src/xdiff/xutils.h +49 -0
  217. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/attr_expect.h +43 -0
  218. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/file.c +226 -0
  219. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/flags.c +108 -0
  220. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/lookup.c +262 -0
  221. data/ext/rugged/vendor/libgit2-dist/tests-clar/attr/repo.c +273 -0
  222. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/buf/basic.c +5 -5
  223. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_helpers.c +181 -0
  224. data/ext/rugged/vendor/libgit2-dist/tests-clar/clar_libgit2.h +55 -0
  225. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/commit.c +44 -0
  226. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/parse.c +350 -0
  227. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/signature.c +65 -0
  228. data/ext/rugged/vendor/libgit2-dist/tests-clar/commit/write.c +140 -0
  229. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/add.c +3 -3
  230. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/multivar.c +151 -0
  231. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/new.c +5 -5
  232. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/read.c +44 -32
  233. data/ext/rugged/vendor/libgit2-dist/tests-clar/config/stress.c +61 -0
  234. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/config/write.c +20 -5
  235. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/buffer.c +613 -0
  236. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/dirent.c +39 -26
  237. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/env.c +115 -0
  238. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/errors.c +60 -0
  239. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/filebuf.c +4 -18
  240. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/hex.c +22 -0
  241. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/oid.c +6 -6
  242. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/path.c +420 -0
  243. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/pool.c +85 -0
  244. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/rmdir.c +68 -0
  245. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/string.c +1 -1
  246. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/strmap.c +102 -0
  247. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/core/strtol.c +1 -1
  248. data/ext/rugged/vendor/libgit2-dist/tests-clar/core/vector.c +191 -0
  249. data/ext/rugged/vendor/libgit2-dist/tests-clar/date/date.c +15 -0
  250. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/blob.c +254 -0
  251. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.c +104 -0
  252. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/diff_helpers.h +47 -0
  253. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/index.c +92 -0
  254. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/iterator.c +572 -0
  255. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/patch.c +99 -0
  256. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/tree.c +210 -0
  257. data/ext/rugged/vendor/libgit2-dist/tests-clar/diff/workdir.c +543 -0
  258. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/read_tree.c +46 -0
  259. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/index/rename.c +2 -12
  260. data/ext/rugged/vendor/libgit2-dist/tests-clar/index/tests.c +246 -0
  261. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/createremotethenload.c +33 -0
  262. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotelocal.c +137 -0
  263. data/ext/rugged/vendor/libgit2-dist/tests-clar/network/remotes.c +183 -0
  264. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notes.c +133 -0
  265. data/ext/rugged/vendor/libgit2-dist/tests-clar/notes/notesref.c +57 -0
  266. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/filter.c +125 -0
  267. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/fromchunks.c +87 -0
  268. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/blob/write.c +69 -0
  269. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/commit/commitstagedfile.c +126 -0
  270. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/lookup.c +63 -0
  271. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/message.c +171 -0
  272. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/chars.c +3 -14
  273. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/compare.c +4 -4
  274. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/convert.c +10 -10
  275. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/data.h +0 -0
  276. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/fromstr.c +1 -1
  277. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/hash.c +21 -17
  278. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/short.c +1 -1
  279. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/size.c +1 -1
  280. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/raw/type2string.c +14 -14
  281. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/raw/write.c +455 -0
  282. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/peel.c +56 -0
  283. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/read.c +130 -0
  284. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tag/write.c +192 -0
  285. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/object/tree/frompath.c +22 -16
  286. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/read.c +75 -0
  287. data/ext/rugged/vendor/libgit2-dist/tests-clar/object/tree/write.c +84 -0
  288. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose.c +1 -1
  289. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/loose_data.h +0 -0
  290. data/ext/rugged/vendor/libgit2-dist/tests-clar/odb/mixed.c +24 -0
  291. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/pack_data.h +0 -0
  292. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/packed.c +1 -1
  293. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/odb/sorting.c +1 -1
  294. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/create.c +113 -0
  295. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/delete.c +91 -0
  296. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/listall.c +78 -0
  297. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/branches/move.c +72 -0
  298. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/crashes.c +17 -0
  299. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/create.c +149 -0
  300. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/delete.c +85 -0
  301. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/list.c +53 -0
  302. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/listall.c +36 -0
  303. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/lookup.c +42 -0
  304. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/normalize.c +200 -0
  305. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/overwrite.c +136 -0
  306. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/pack.c +67 -0
  307. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/read.c +194 -0
  308. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/reflog.c +123 -0
  309. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/rename.c +339 -0
  310. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/revparse.c +174 -0
  311. data/ext/rugged/vendor/libgit2-dist/tests-clar/refs/unicode.c +42 -0
  312. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/discover.c +142 -0
  313. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/repo/getters.c +19 -1
  314. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/init.c +235 -0
  315. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/open.c +282 -0
  316. data/ext/rugged/vendor/libgit2-dist/tests-clar/repo/setters.c +80 -0
  317. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/mixed.c +47 -0
  318. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.c +10 -0
  319. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/reset_helpers.h +6 -0
  320. data/ext/rugged/vendor/libgit2-dist/tests-clar/reset/soft.c +102 -0
  321. data/ext/rugged/vendor/libgit2-dist/{tests/t05-revwalk.c → tests-clar/revwalk/basic.c} +85 -44
  322. data/ext/rugged/vendor/libgit2-dist/tests-clar/revwalk/mergebase.c +148 -0
  323. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/ignore.c +133 -0
  324. data/ext/rugged/vendor/libgit2-dist/{tests-clay → tests-clar}/status/single.c +2 -11
  325. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_data.h +202 -0
  326. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.c +49 -0
  327. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/status_helpers.h +33 -0
  328. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/submodules.c +112 -0
  329. data/ext/rugged/vendor/libgit2-dist/tests-clar/status/worktree.c +649 -0
  330. data/ext/rugged/vendor/libgit2-dist/tests-clar/threads/basic.c +20 -0
  331. data/ext/rugged/vendor/libgit2-dist.tar.gz +0 -0
  332. data/lib/rugged/commit.rb +35 -0
  333. data/lib/rugged/object.rb +7 -0
  334. data/lib/rugged/reference.rb +9 -0
  335. data/lib/rugged/repository.rb +99 -3
  336. data/lib/rugged/tag.rb +22 -0
  337. data/lib/rugged/tree.rb +8 -0
  338. data/lib/rugged/version.rb +1 -1
  339. data/lib/rugged.rb +4 -1
  340. data/test/blob_test.rb +2 -2
  341. data/test/commit_test.rb +27 -13
  342. data/test/config_test.rb +44 -0
  343. data/test/coverage/HEAD.json +1 -1
  344. data/test/fixtures/testrepo.git/config +2 -0
  345. data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
  346. data/test/lib_test.rb +7 -0
  347. data/test/object_test.rb +3 -3
  348. data/test/reference_test.rb +46 -8
  349. data/test/remote_test.rb +8 -2
  350. data/test/repo_pack_test.rb +3 -3
  351. data/test/repo_test.rb +79 -11
  352. data/test/tag_test.rb +9 -2
  353. data/test/test_helper.rb +21 -0
  354. data/test/tree_test.rb +18 -6
  355. metadata +205 -81
  356. data/ext/rugged/vendor/libgit2-dist/include/git2/zlib.h +0 -40
  357. data/ext/rugged/vendor/libgit2-dist/src/hashtable.c +0 -243
  358. data/ext/rugged/vendor/libgit2-dist/src/hashtable.h +0 -80
  359. data/ext/rugged/vendor/libgit2-dist/tests/t00-core.c +0 -628
  360. data/ext/rugged/vendor/libgit2-dist/tests/t01-data.h +0 -322
  361. data/ext/rugged/vendor/libgit2-dist/tests/t01-rawobj.c +0 -638
  362. data/ext/rugged/vendor/libgit2-dist/tests/t03-data.h +0 -344
  363. data/ext/rugged/vendor/libgit2-dist/tests/t03-objwrite.c +0 -255
  364. data/ext/rugged/vendor/libgit2-dist/tests/t04-commit.c +0 -788
  365. data/ext/rugged/vendor/libgit2-dist/tests/t06-index.c +0 -219
  366. data/ext/rugged/vendor/libgit2-dist/tests/t07-hashtable.c +0 -192
  367. data/ext/rugged/vendor/libgit2-dist/tests/t08-tag.c +0 -357
  368. data/ext/rugged/vendor/libgit2-dist/tests/t09-tree.c +0 -221
  369. data/ext/rugged/vendor/libgit2-dist/tests/t10-refs.c +0 -1294
  370. data/ext/rugged/vendor/libgit2-dist/tests/t12-repo.c +0 -174
  371. data/ext/rugged/vendor/libgit2-dist/tests/t13-threads.c +0 -41
  372. data/ext/rugged/vendor/libgit2-dist/tests/t17-bufs.c +0 -61
  373. data/ext/rugged/vendor/libgit2-dist/tests/t18-status.c +0 -448
  374. data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.c +0 -310
  375. data/ext/rugged/vendor/libgit2-dist/tests/test_helpers.h +0 -83
  376. data/ext/rugged/vendor/libgit2-dist/tests/test_lib.c +0 -198
  377. data/ext/rugged/vendor/libgit2-dist/tests/test_lib.h +0 -54
  378. data/ext/rugged/vendor/libgit2-dist/tests/test_main.c +0 -89
  379. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay.h +0 -187
  380. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_libgit2.h +0 -28
  381. data/ext/rugged/vendor/libgit2-dist/tests-clay/clay_main.c +0 -1073
  382. data/ext/rugged/vendor/libgit2-dist/tests-clay/config/stress.c +0 -39
  383. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/path.c +0 -139
  384. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/rmdir.c +0 -50
  385. data/ext/rugged/vendor/libgit2-dist/tests-clay/core/vector.c +0 -66
  386. data/ext/rugged/vendor/libgit2-dist/tests-clay/network/remotes.c +0 -50
  387. data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/init.c +0 -104
  388. data/ext/rugged/vendor/libgit2-dist/tests-clay/repo/open.c +0 -54
  389. data/ext/rugged/vendor/libgit2-dist/tests-clay/status/status_data.h +0 -48
  390. data/ext/rugged/vendor/libgit2-dist/tests-clay/status/worktree.c +0 -124
  391. data/lib/rugged/objects.rb +0 -45
  392. data/test/fixtures/testrepo.git/refs/heads/new_name +0 -1
@@ -1,310 +0,0 @@
1
- /*
2
- * This file is free software; you can redistribute it and/or modify
3
- * it under the terms of the GNU General Public License, version 2,
4
- * as published by the Free Software Foundation.
5
- *
6
- * In addition to the permissions in the GNU General Public License,
7
- * the authors give you unlimited permission to link the compiled
8
- * version of this file into combinations with other programs,
9
- * and to distribute those combinations without any restriction
10
- * coming from the use of this file. (The General Public License
11
- * restrictions do apply in other respects; for example, they cover
12
- * modification of the file, and distribution when not linked into
13
- * a combined executable.)
14
- *
15
- * This file is distributed in the hope that it will be useful, but
16
- * WITHOUT ANY WARRANTY; without even the implied warranty of
17
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
- * General Public License for more details.
19
- *
20
- * You should have received a copy of the GNU General Public License
21
- * along with this program; see the file COPYING. If not, write to
22
- * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
23
- * Boston, MA 02110-1301, USA.
24
- */
25
-
26
- #include "common.h"
27
- #include "test_helpers.h"
28
- #include "fileops.h"
29
-
30
- int write_object_data(char *file, void *data, size_t len)
31
- {
32
- git_file fd;
33
- int ret;
34
-
35
- if ((fd = p_creat(file, S_IREAD | S_IWRITE)) < 0)
36
- return -1;
37
- ret = p_write(fd, data, len);
38
- p_close(fd);
39
-
40
- return ret;
41
- }
42
-
43
- int write_object_files(const char *odb_dir, object_data *d)
44
- {
45
- if (p_mkdir(odb_dir, GIT_OBJECT_DIR_MODE) < 0) {
46
- int err = errno;
47
- fprintf(stderr, "can't make directory \"%s\"", odb_dir);
48
- if (err == EEXIST)
49
- fprintf(stderr, " (already exists)");
50
- fprintf(stderr, "\n");
51
- return -1;
52
- }
53
-
54
- if ((p_mkdir(d->dir, GIT_OBJECT_DIR_MODE) < 0) && (errno != EEXIST)) {
55
- fprintf(stderr, "can't make object directory \"%s\"\n", d->dir);
56
- return -1;
57
- }
58
- if (write_object_data(d->file, d->bytes, d->blen) < 0) {
59
- fprintf(stderr, "can't write object file \"%s\"\n", d->file);
60
- return -1;
61
- }
62
-
63
- return 0;
64
- }
65
-
66
- int remove_object_files(const char *odb_dir, object_data *d)
67
- {
68
- if (p_unlink(d->file) < 0) {
69
- fprintf(stderr, "can't delete object file \"%s\"\n", d->file);
70
- return -1;
71
- }
72
- if ((p_rmdir(d->dir) < 0) && (errno != ENOTEMPTY)) {
73
- fprintf(stderr, "can't remove object directory \"%s\"\n", d->dir);
74
- return -1;
75
- }
76
-
77
- if (p_rmdir(odb_dir) < 0) {
78
- fprintf(stderr, "can't remove directory \"%s\"\n", odb_dir);
79
- return -1;
80
- }
81
-
82
- return 0;
83
- }
84
-
85
- void locate_loose_object(const char *repository_folder, git_object *object, char **out, char **out_folder)
86
- {
87
- static const char *objects_folder = "objects/";
88
-
89
- char *ptr, *full_path, *top_folder;
90
- int path_length, objects_length;
91
-
92
- assert(repository_folder && object);
93
-
94
- objects_length = strlen(objects_folder);
95
- path_length = strlen(repository_folder);
96
- ptr = full_path = git__malloc(path_length + objects_length + GIT_OID_HEXSZ + 3);
97
-
98
- strcpy(ptr, repository_folder);
99
- strcpy(ptr + path_length, objects_folder);
100
-
101
- ptr = top_folder = ptr + path_length + objects_length;
102
- *ptr++ = '/';
103
- git_oid_pathfmt(ptr, git_object_id(object));
104
- ptr += GIT_OID_HEXSZ + 1;
105
- *ptr = 0;
106
-
107
- *out = full_path;
108
-
109
- if (out_folder)
110
- *out_folder = top_folder;
111
- }
112
-
113
- int loose_object_mode(const char *repository_folder, git_object *object)
114
- {
115
- char *object_path;
116
- struct stat st;
117
-
118
- locate_loose_object(repository_folder, object, &object_path, NULL);
119
- if (p_stat(object_path, &st) < 0)
120
- return 0;
121
- free(object_path);
122
-
123
- return st.st_mode;
124
- }
125
-
126
- int loose_object_dir_mode(const char *repository_folder, git_object *object)
127
- {
128
- char *object_path;
129
- size_t pos;
130
- struct stat st;
131
-
132
- locate_loose_object(repository_folder, object, &object_path, NULL);
133
-
134
- pos = strlen(object_path);
135
- while (pos--) {
136
- if (object_path[pos] == '/') {
137
- object_path[pos] = 0;
138
- break;
139
- }
140
- }
141
-
142
- if (p_stat(object_path, &st) < 0)
143
- return 0;
144
- free(object_path);
145
-
146
- return st.st_mode;
147
- }
148
-
149
- int remove_loose_object(const char *repository_folder, git_object *object)
150
- {
151
- char *full_path, *top_folder;
152
-
153
- locate_loose_object(repository_folder, object, &full_path, &top_folder);
154
-
155
- if (p_unlink(full_path) < 0) {
156
- fprintf(stderr, "can't delete object file \"%s\"\n", full_path);
157
- return -1;
158
- }
159
-
160
- *top_folder = 0;
161
-
162
- if ((p_rmdir(full_path) < 0) && (errno != ENOTEMPTY)) {
163
- fprintf(stderr, "can't remove object directory \"%s\"\n", full_path);
164
- return -1;
165
- }
166
-
167
- git__free(full_path);
168
-
169
- return GIT_SUCCESS;
170
- }
171
-
172
- int cmp_objects(git_rawobj *o, object_data *d)
173
- {
174
- if (o->type != git_object_string2type(d->type))
175
- return -1;
176
- if (o->len != d->dlen)
177
- return -1;
178
- if ((o->len > 0) && (memcmp(o->data, d->data, o->len) != 0))
179
- return -1;
180
- return 0;
181
- }
182
-
183
- int copy_file(const char *src, const char *dst)
184
- {
185
- git_fbuffer source_buf;
186
- git_file dst_fd;
187
- int error = GIT_ERROR;
188
-
189
- if (git_futils_readbuffer(&source_buf, src) < GIT_SUCCESS)
190
- return GIT_ENOTFOUND;
191
-
192
- dst_fd = git_futils_creat_withpath(dst, 0777, 0666);
193
- if (dst_fd < 0)
194
- goto cleanup;
195
-
196
- error = p_write(dst_fd, source_buf.data, source_buf.len);
197
-
198
- cleanup:
199
- git_futils_freebuffer(&source_buf);
200
- p_close(dst_fd);
201
-
202
- return error;
203
- }
204
-
205
- int cmp_files(const char *a, const char *b)
206
- {
207
- git_fbuffer buf_a, buf_b;
208
- int error = GIT_ERROR;
209
-
210
- if (git_futils_readbuffer(&buf_a, a) < GIT_SUCCESS)
211
- return GIT_ERROR;
212
-
213
- if (git_futils_readbuffer(&buf_b, b) < GIT_SUCCESS) {
214
- git_futils_freebuffer(&buf_a);
215
- return GIT_ERROR;
216
- }
217
-
218
- if (buf_a.len == buf_b.len && !memcmp(buf_a.data, buf_b.data, buf_a.len))
219
- error = GIT_SUCCESS;
220
-
221
- git_futils_freebuffer(&buf_a);
222
- git_futils_freebuffer(&buf_b);
223
-
224
- return error;
225
- }
226
-
227
- typedef struct {
228
- size_t src_len, dst_len;
229
- char *dst;
230
- } copydir_data;
231
-
232
- static int copy_filesystem_element_recurs(void *_data, char *source)
233
- {
234
- copydir_data *data = (copydir_data *)_data;
235
-
236
- data->dst[data->dst_len] = 0;
237
- git_path_join(data->dst, data->dst, source + data->src_len);
238
-
239
- if (git_futils_isdir(source) == GIT_SUCCESS)
240
- return git_futils_direach(source, GIT_PATH_MAX, copy_filesystem_element_recurs, _data);
241
-
242
- return copy_file(source, data->dst);
243
- }
244
-
245
- int copydir_recurs(const char *source_directory_path, const char *destination_directory_path)
246
- {
247
- char source_buffer[GIT_PATH_MAX];
248
- char dest_buffer[GIT_PATH_MAX];
249
- copydir_data data;
250
-
251
- /* Source has to exist, Destination hast to _not_ exist */
252
- if (git_futils_isdir(source_directory_path) != GIT_SUCCESS ||
253
- git_futils_isdir(destination_directory_path) == GIT_SUCCESS)
254
- return GIT_EINVALIDPATH;
255
-
256
- git_path_join(source_buffer, source_directory_path, "");
257
- data.src_len = strlen(source_buffer);
258
-
259
- git_path_join(dest_buffer, destination_directory_path, "");
260
- data.dst = dest_buffer;
261
- data.dst_len = strlen(dest_buffer);
262
-
263
- return copy_filesystem_element_recurs(&data, source_buffer);
264
- }
265
-
266
- int open_temp_repo(git_repository **repo, const char *path)
267
- {
268
- int error;
269
- if ((error = copydir_recurs(path, TEMP_REPO_FOLDER)) < GIT_SUCCESS)
270
- return error;
271
-
272
- return git_repository_open(repo, TEMP_REPO_FOLDER);
273
- }
274
-
275
- void close_temp_repo(git_repository *repo)
276
- {
277
- git_repository_free(repo);
278
- if (git_futils_rmdir_r(TEMP_REPO_FOLDER, 1) < GIT_SUCCESS) {
279
- printf("\nFailed to remove temporary folder. Aborting test suite.\n");
280
- exit(-1);
281
- }
282
- }
283
-
284
- static int remove_placeholders_recurs(void *filename, char *path)
285
- {
286
- char passed_filename[GIT_PATH_MAX];
287
- char *data = (char *)filename;
288
-
289
- if (!git_futils_isdir(path))
290
- return git_futils_direach(path, GIT_PATH_MAX, remove_placeholders_recurs, data);
291
-
292
- if (git_path_basename_r(passed_filename, sizeof(passed_filename), path) < GIT_SUCCESS)
293
- return GIT_EINVALIDPATH;
294
-
295
- if (!strcmp(data, passed_filename))
296
- return p_unlink(path);
297
-
298
- return GIT_SUCCESS;
299
- }
300
-
301
- int remove_placeholders(char *directory_path, char *filename)
302
- {
303
- char buffer[GIT_PATH_MAX];
304
-
305
- if (git_futils_isdir(directory_path))
306
- return GIT_EINVALIDPATH;
307
-
308
- strcpy(buffer, directory_path);
309
- return remove_placeholders_recurs(filename, buffer);
310
- }
@@ -1,83 +0,0 @@
1
- /*
2
- * This file is free software; you can redistribute it and/or modify
3
- * it under the terms of the GNU General Public License, version 2,
4
- * as published by the Free Software Foundation.
5
- *
6
- * In addition to the permissions in the GNU General Public License,
7
- * the authors give you unlimited permission to link the compiled
8
- * version of this file into combinations with other programs,
9
- * and to distribute those combinations without any restriction
10
- * coming from the use of this file. (The General Public License
11
- * restrictions do apply in other respects; for example, they cover
12
- * modification of the file, and distribution when not linked into
13
- * a combined executable.)
14
- *
15
- * This file is distributed in the hope that it will be useful, but
16
- * WITHOUT ANY WARRANTY; without even the implied warranty of
17
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
- * General Public License for more details.
19
- *
20
- * You should have received a copy of the GNU General Public License
21
- * along with this program; see the file COPYING. If not, write to
22
- * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
23
- * Boston, MA 02110-1301, USA.
24
- */
25
-
26
- #ifndef INCLUDE_test_helpers_h__
27
- #define INCLUDE_test_helpers_h__
28
-
29
- #include "test_lib.h"
30
- #include <git2.h>
31
-
32
- #include "odb.h"
33
-
34
- #define TEST_REPOSITORY_NAME "testrepo.git"
35
- #define REPOSITORY_FOLDER TEST_RESOURCES "/" TEST_REPOSITORY_NAME "/"
36
- #define ODB_FOLDER (REPOSITORY_FOLDER "objects/")
37
- #define TEST_INDEX_PATH (REPOSITORY_FOLDER "index")
38
- #define TEST_INDEX2_PATH (TEST_RESOURCES "/gitgit.index")
39
- #define TEST_INDEXBIG_PATH (TEST_RESOURCES "/big.index")
40
- #define EMPTY_REPOSITORY_FOLDER TEST_RESOURCES "/empty_standard_repo/.gitted/"
41
-
42
- #define TEMP_FOLDER ""
43
- #define TEMP_REPO_FOLDER TEMP_FOLDER TEST_REPOSITORY_NAME "/"
44
- #define TEMP_REPO_FOLDER_NS TEMP_FOLDER TEST_REPOSITORY_NAME
45
- #define TEST_STD_REPO_FOLDER TEMP_REPO_FOLDER ".git/"
46
-
47
- typedef struct object_data {
48
- unsigned char *bytes; /* (compressed) bytes stored in object store */
49
- size_t blen; /* length of data in object store */
50
- char *id; /* object id (sha1) */
51
- char *type; /* object type */
52
- char *dir; /* object store (fan-out) directory name */
53
- char *file; /* object store filename */
54
- unsigned char *data; /* (uncompressed) object data */
55
- size_t dlen; /* length of (uncompressed) object data */
56
- } object_data;
57
-
58
- extern int write_object_data(char *file, void *data, size_t len);
59
-
60
- extern int write_object_files(const char *odb_dir, object_data *d);
61
-
62
- extern int remove_object_files(const char *odb_dir, object_data *d);
63
-
64
- extern int cmp_objects(git_rawobj *o, object_data *d);
65
-
66
- extern void locate_loose_object(const char *odb_dir, git_object *object, char **out, char **out_folder);
67
-
68
- extern int loose_object_mode(const char *odb_dir, git_object *object);
69
- extern int loose_object_dir_mode(const char *odb_dir, git_object *object);
70
-
71
- extern int remove_loose_object(const char *odb_dir, git_object *object);
72
-
73
- extern int cmp_files(const char *a, const char *b);
74
- extern int copy_file(const char *source, const char *dest);
75
- extern int rmdir_recurs(const char *directory_path);
76
- extern int copydir_recurs(const char *source_directory_path, const char *destination_directory_path);
77
- extern int remove_placeholders(char *directory_path, char *filename);
78
-
79
- extern int open_temp_repo(git_repository **repo, const char *path);
80
- extern void close_temp_repo(git_repository *repo);
81
-
82
- #endif
83
- /* INCLUDE_test_helpers_h__ */
@@ -1,198 +0,0 @@
1
- #include <assert.h>
2
- #include <setjmp.h>
3
- #include <stdlib.h>
4
- #include <stdio.h>
5
- #include <string.h>
6
- #include <math.h>
7
-
8
- #include "test_lib.h"
9
-
10
- #define DO_ALLOC(TYPE) ((TYPE*) malloc(sizeof(TYPE)))
11
- #define GIT_MAX_TEST_CASES 64
12
-
13
- struct git_test {
14
- char *name;
15
- char *message;
16
- char *failed_pos;
17
- char *description;
18
- char *error_message;
19
-
20
- git_testfunc function;
21
- unsigned failed:1, ran:1;
22
- jmp_buf *jump;
23
- };
24
-
25
- struct git_testsuite {
26
- char *name;
27
- int count, fail_count;
28
- git_test *list[GIT_MAX_TEST_CASES];
29
- };
30
-
31
- static void test_free(git_test *t)
32
- {
33
- if (t) {
34
- free(t->name);
35
- free(t->description);
36
- free(t->failed_pos);
37
- free(t->message);
38
- free(t->error_message);
39
- free(t);
40
- }
41
- }
42
-
43
- static void test_run(git_test *tc)
44
- {
45
- jmp_buf buf;
46
- tc->jump = &buf;
47
-
48
- if (setjmp(buf) == 0) {
49
- tc->ran = 1;
50
- (tc->function)(tc);
51
- }
52
-
53
- tc->jump = 0;
54
- }
55
-
56
- static git_test *create_test(git_testfunc function)
57
- {
58
- git_test *t = DO_ALLOC(git_test);
59
-
60
- memset(t, 0x0, sizeof(git_test));
61
- t->function = function;
62
-
63
- return t;
64
- }
65
-
66
- void git_test__init(git_test *t, const char *name, const char *description)
67
- {
68
- t->name = strdup(name);
69
- t->description = strdup(description);
70
- }
71
-
72
-
73
- /*-------------------------------------------------------------------------*
74
- * Public assert methods
75
- *-------------------------------------------------------------------------*/
76
-
77
- static void fail_test(git_test *tc, const char *file, int line, const char *message)
78
- {
79
- char buf[1024];
80
- const char *last_error = git_lasterror();
81
-
82
- snprintf(buf, 1024, "%s:%d", file, line);
83
-
84
- tc->failed = 1;
85
- tc->message = strdup(message);
86
- tc->failed_pos = strdup(buf);
87
-
88
- if (last_error)
89
- tc->error_message = strdup(last_error);
90
-
91
- if (tc->jump != 0)
92
- longjmp(*(tc->jump), 0);
93
- }
94
-
95
- void git_test__fail(git_test *tc, const char *file, int line, const char *message)
96
- {
97
- fail_test(tc, file, line, message);
98
- }
99
-
100
- void git_test__assert(git_test *tc, const char *file, int line, const char *message, int condition)
101
- {
102
- if (condition == 0)
103
- fail_test(tc, file, line, message);
104
- }
105
-
106
- void git_test__assert_pass(git_test *tc, const char *file, int line, const char *message, int ret_value)
107
- {
108
- if (ret_value < 0)
109
- fail_test(tc, file, line, message);
110
- }
111
-
112
- /*-------------------------------------------------------------------------*
113
- * Test Suite
114
- *-------------------------------------------------------------------------*/
115
-
116
- static void testsuite_init(git_testsuite *ts)
117
- {
118
- ts->count = 0;
119
- ts->fail_count = 0;
120
- memset(ts->list, 0, sizeof(ts->list));
121
- }
122
-
123
- git_testsuite *git_testsuite_new(const char *name)
124
- {
125
- git_testsuite *ts = DO_ALLOC(git_testsuite);
126
- testsuite_init(ts);
127
- ts->name = strdup(name);
128
- return ts;
129
- }
130
-
131
- static void free_suite(git_testsuite *ts)
132
- {
133
- unsigned int n;
134
-
135
- for (n = 0; n < GIT_MAX_TEST_CASES; n++)
136
- if (ts->list[n])
137
- test_free(ts->list[n]);
138
-
139
- free(ts->name);
140
- free(ts);
141
- }
142
-
143
- void git_testsuite_add(git_testsuite *ts, git_testfunc test)
144
- {
145
- assert(ts->count < GIT_MAX_TEST_CASES);
146
- ts->list[ts->count++] = create_test(test);
147
- }
148
-
149
- static void print_details(git_testsuite *ts)
150
- {
151
- int i;
152
- int failCount = 0;
153
-
154
- if (ts->fail_count == 0) {
155
- const char *testWord = ts->count == 1 ? "test" : "tests";
156
- printf("OK (%d %s)\n", ts->count, testWord);
157
- } else {
158
- printf("Failed (%d failures):\n", ts->fail_count);
159
-
160
- for (i = 0 ; i < ts->count ; ++i) {
161
- git_test *tc = ts->list[i];
162
- if (tc->failed) {
163
- failCount++;
164
- printf(" %d) \"%s\" [test %s @ %s]\n\t%s\n",
165
- failCount, tc->description, tc->name, tc->failed_pos, tc->message);
166
- if (tc->error_message)
167
- printf("\tError: %s\n", tc->error_message);
168
- }
169
- }
170
- }
171
- }
172
-
173
- int git_testsuite_run(git_testsuite *ts)
174
- {
175
- int i, fail_count;
176
-
177
- printf("Suite \"%s\": ", ts->name);
178
-
179
- for (i = 0 ; i < ts->count ; ++i) {
180
- git_test *tc = ts->list[i];
181
-
182
- test_run(tc);
183
- if (tc->failed) {
184
- ts->fail_count++;
185
- putchar('F');
186
- } else
187
- putchar('.');
188
-
189
- fflush(stdout);
190
- }
191
- printf("\n ");
192
- print_details(ts);
193
- fail_count = ts->fail_count;
194
-
195
- free_suite(ts);
196
- return fail_count;
197
- }
198
-
@@ -1,54 +0,0 @@
1
- #ifndef __LIBGIT2_TEST_H__
2
- #define __LIBGIT2_TEST_H__
3
-
4
- #include <stdarg.h>
5
- #include <stdio.h>
6
- #include <stdlib.h>
7
- #include <string.h>
8
-
9
- #include "common.h"
10
- #include <git2.h>
11
-
12
- #define DECLARE_SUITE(SNAME) extern git_testsuite *libgit2_suite_##SNAME(void)
13
- #define SUITE_NAME(SNAME) libgit2_suite_##SNAME
14
-
15
- #define BEGIN_SUITE(SNAME) \
16
- git_testsuite *libgit2_suite_##SNAME(void);\
17
- git_testsuite *libgit2_suite_##SNAME(void) {\
18
- git_testsuite *_gitsuite = git_testsuite_new(#SNAME);
19
-
20
- #define ADD_TEST(TNAME) \
21
- git_testsuite_add(_gitsuite, _gittest__##TNAME);
22
-
23
- #define END_SUITE \
24
- return _gitsuite;\
25
- }
26
-
27
- #define BEGIN_TEST(TNAME, DESC) \
28
- static void _gittest__##TNAME(git_test *_gittest) { \
29
- git_test__init(_gittest, #TNAME, DESC); \
30
- git_clearerror();\
31
- {\
32
-
33
- #define END_TEST }}
34
-
35
- typedef struct git_test git_test;
36
- typedef struct git_testsuite git_testsuite;
37
- typedef void (*git_testfunc)(git_test *);
38
- typedef git_testsuite *(*libgit2_suite)(void);
39
-
40
- void git_test__init(git_test *t, const char *name, const char *description);
41
- void git_test__fail(git_test *tc, const char *file, int line, const char *message);
42
- void git_test__assert(git_test *tc, const char *file, int line, const char *message, int condition);
43
- void git_test__assert_pass(git_test *tc, const char *file, int line, const char *message, int ret_value);
44
-
45
- #define must_pass(expr) git_test__assert_pass(_gittest, __FILE__, __LINE__, "Method failed: " #expr, (expr))
46
- #define must_fail(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expected method to fail: " #expr, (expr) < 0)
47
- #define must_be_true(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expression is not true: " #expr, !!(expr))
48
-
49
- git_testsuite *git_testsuite_new(const char *name);
50
- void git_testsuite_add(git_testsuite *ts, git_testfunc test);
51
- int git_testsuite_run(git_testsuite *ts);
52
-
53
- #endif
54
-