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,788 +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
- #include "test_lib.h"
26
- #include "test_helpers.h"
27
-
28
- #include "commit.h"
29
- #include "signature.h"
30
-
31
- static char *test_commits_broken[] = {
32
-
33
- /* empty commit */
34
- "",
35
-
36
- /* random garbage */
37
- "asd97sa9du902e9a0jdsuusad09as9du098709aweu8987sd\n",
38
-
39
- /* broken endlines 1 */
40
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\r\n\
41
- parent 05452d6349abcd67aa396dfb28660d765d8b2a36\r\n\
42
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\r\n\
43
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\r\n\
44
- \r\n\
45
- a test commit with broken endlines\r\n",
46
-
47
- /* broken endlines 2 */
48
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\
49
- parent 05452d6349abcd67aa396dfb28660d765d8b2a36\
50
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\
51
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\
52
- \
53
- another test commit with broken endlines",
54
-
55
- /* starting endlines */
56
- "\ntree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
57
- parent 05452d6349abcd67aa396dfb28660d765d8b2a36\n\
58
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
59
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
60
- \n\
61
- a test commit with a starting endline\n",
62
-
63
- /* corrupted commit 1 */
64
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
65
- parent 05452d6349abcd67aa396df",
66
-
67
- /* corrupted commit 2 */
68
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
69
- parent ",
70
-
71
- /* corrupted commit 3 */
72
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
73
- parent ",
74
-
75
- /* corrupted commit 4 */
76
- "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
77
- par",
78
-
79
- };
80
-
81
-
82
- static char *test_commits_working[] = {
83
- /* simple commit with no message */
84
- "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
85
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
86
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
87
- \n",
88
-
89
- /* simple commit, no parent */
90
- "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
91
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
92
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
93
- \n\
94
- a simple commit which works\n",
95
-
96
- /* simple commit, no parent, no newline in message */
97
- "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
98
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
99
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
100
- \n\
101
- a simple commit which works",
102
-
103
- /* simple commit, 1 parent */
104
- "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
105
- parent e90810b8df3e80c413d903f631643c716887138d\n\
106
- author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
107
- committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
108
- \n\
109
- a simple commit which works\n",
110
- };
111
-
112
- BEGIN_TEST(parse0, "parse the OID line in a commit")
113
-
114
- git_oid oid;
115
-
116
- #define TEST_OID_PASS(string, header) { \
117
- const char *ptr = string;\
118
- const char *ptr_original = ptr;\
119
- size_t len = strlen(ptr);\
120
- must_pass(git_oid__parse(&oid, &ptr, ptr + len, header));\
121
- must_be_true(ptr == ptr_original + len);\
122
- }
123
-
124
- #define TEST_OID_FAIL(string, header) { \
125
- const char *ptr = string;\
126
- size_t len = strlen(ptr);\
127
- must_fail(git_oid__parse(&oid, &ptr, ptr + len, header));\
128
- }
129
-
130
- TEST_OID_PASS("parent 05452d6349abcd67aa396dfb28660d765d8b2a36\n", "parent ");
131
- TEST_OID_PASS("tree 05452d6349abcd67aa396dfb28660d765d8b2a36\n", "tree ");
132
- TEST_OID_PASS("random_heading 05452d6349abcd67aa396dfb28660d765d8b2a36\n", "random_heading ");
133
- TEST_OID_PASS("stuck_heading05452d6349abcd67aa396dfb28660d765d8b2a36\n", "stuck_heading");
134
- TEST_OID_PASS("tree 5F4BEFFC0759261D015AA63A3A85613FF2F235DE\n", "tree ");
135
- TEST_OID_PASS("tree 1A669B8AB81B5EB7D9DB69562D34952A38A9B504\n", "tree ");
136
- TEST_OID_PASS("tree 5B20DCC6110FCC75D31C6CEDEBD7F43ECA65B503\n", "tree ");
137
- TEST_OID_PASS("tree 173E7BF00EA5C33447E99E6C1255954A13026BE4\n", "tree ");
138
-
139
- TEST_OID_FAIL("parent 05452d6349abcd67aa396dfb28660d765d8b2a36", "parent ");
140
- TEST_OID_FAIL("05452d6349abcd67aa396dfb28660d765d8b2a36\n", "tree ");
141
- TEST_OID_FAIL("parent05452d6349abcd67aa396dfb28660d765d8b2a6a\n", "parent ");
142
- TEST_OID_FAIL("parent 05452d6349abcd67aa396dfb280d765d8b2a6\n", "parent ");
143
- TEST_OID_FAIL("tree 05452d6349abcd67aa396dfb28660d765d8b2a36\n", "tree ");
144
- TEST_OID_FAIL("parent 0545xd6349abcd67aa396dfb28660d765d8b2a36\n", "parent ");
145
- TEST_OID_FAIL("parent 0545xd6349abcd67aa396dfb28660d765d8b2a36FF\n", "parent ");
146
- TEST_OID_FAIL("", "tree ");
147
- TEST_OID_FAIL("", "");
148
-
149
- #undef TEST_OID_PASS
150
- #undef TEST_OID_FAIL
151
-
152
- END_TEST
153
-
154
- BEGIN_TEST(parse1, "parse the signature line in a commit")
155
-
156
- #define TEST_SIGNATURE_PASS(_string, _header, _name, _email, _time, _offset) { \
157
- const char *ptr = _string; \
158
- size_t len = strlen(_string);\
159
- git_signature person = {NULL, NULL, {0, 0}}; \
160
- must_pass(git_signature__parse(&person, &ptr, ptr + len, _header, '\n'));\
161
- must_be_true(strcmp(_name, person.name) == 0);\
162
- must_be_true(strcmp(_email, person.email) == 0);\
163
- must_be_true(_time == person.when.time);\
164
- must_be_true(_offset == person.when.offset);\
165
- git__free(person.name); git__free(person.email);\
166
- }
167
-
168
- #define TEST_SIGNATURE_FAIL(_string, _header) { \
169
- const char *ptr = _string; \
170
- size_t len = strlen(_string);\
171
- git_signature person = {NULL, NULL, {0, 0}}; \
172
- must_fail(git_signature__parse(&person, &ptr, ptr + len, _header, '\n'));\
173
- git__free(person.name); git__free(person.email);\
174
- }
175
-
176
- TEST_SIGNATURE_PASS(
177
- "author Vicent Marti <tanoku@gmail.com> 12345 \n",
178
- "author ",
179
- "Vicent Marti",
180
- "tanoku@gmail.com",
181
- 12345,
182
- 0);
183
-
184
- TEST_SIGNATURE_PASS(
185
- "author Vicent Marti <> 12345 \n",
186
- "author ",
187
- "Vicent Marti",
188
- "",
189
- 12345,
190
- 0);
191
-
192
- TEST_SIGNATURE_PASS(
193
- "author Vicent Marti <tanoku@gmail.com> 231301 +1020\n",
194
- "author ",
195
- "Vicent Marti",
196
- "tanoku@gmail.com",
197
- 231301,
198
- 620);
199
-
200
- TEST_SIGNATURE_PASS(
201
- "author Vicent Marti with an outrageously long name \
202
- which will probably overflow the buffer <tanoku@gmail.com> 12345 \n",
203
- "author ",
204
- "Vicent Marti with an outrageously long name \
205
- which will probably overflow the buffer",
206
- "tanoku@gmail.com",
207
- 12345,
208
- 0);
209
-
210
- TEST_SIGNATURE_PASS(
211
- "author Vicent Marti <tanokuwithaveryveryverylongemail\
212
- whichwillprobablyvoverflowtheemailbuffer@gmail.com> 12345 \n",
213
- "author ",
214
- "Vicent Marti",
215
- "tanokuwithaveryveryverylongemail\
216
- whichwillprobablyvoverflowtheemailbuffer@gmail.com",
217
- 12345,
218
- 0);
219
-
220
- TEST_SIGNATURE_PASS(
221
- "committer Vicent Marti <tanoku@gmail.com> 123456 +0000 \n",
222
- "committer ",
223
- "Vicent Marti",
224
- "tanoku@gmail.com",
225
- 123456,
226
- 0);
227
-
228
- TEST_SIGNATURE_PASS(
229
- "committer Vicent Marti <tanoku@gmail.com> 123456 +0100 \n",
230
- "committer ",
231
- "Vicent Marti",
232
- "tanoku@gmail.com",
233
- 123456,
234
- 60);
235
-
236
- TEST_SIGNATURE_PASS(
237
- "committer Vicent Marti <tanoku@gmail.com> 123456 -0100 \n",
238
- "committer ",
239
- "Vicent Marti",
240
- "tanoku@gmail.com",
241
- 123456,
242
- -60);
243
-
244
- /* Parse a signature without an author field */
245
- TEST_SIGNATURE_PASS(
246
- "committer <tanoku@gmail.com> 123456 -0100 \n",
247
- "committer ",
248
- "",
249
- "tanoku@gmail.com",
250
- 123456,
251
- -60);
252
-
253
- /* Parse a signature without an author field */
254
- TEST_SIGNATURE_PASS(
255
- "committer <tanoku@gmail.com> 123456 -0100 \n",
256
- "committer ",
257
- "",
258
- "tanoku@gmail.com",
259
- 123456,
260
- -60);
261
-
262
- /* Parse a signature with an empty author field */
263
- TEST_SIGNATURE_PASS(
264
- "committer <tanoku@gmail.com> 123456 -0100 \n",
265
- "committer ",
266
- "",
267
- "tanoku@gmail.com",
268
- 123456,
269
- -60);
270
-
271
- /* Parse a signature with an empty email field */
272
- TEST_SIGNATURE_PASS(
273
- "committer Vicent Marti <> 123456 -0100 \n",
274
- "committer ",
275
- "Vicent Marti",
276
- "",
277
- 123456,
278
- -60);
279
-
280
- /* Parse a signature with an empty email field */
281
- TEST_SIGNATURE_PASS(
282
- "committer Vicent Marti < > 123456 -0100 \n",
283
- "committer ",
284
- "Vicent Marti",
285
- "",
286
- 123456,
287
- -60);
288
-
289
- /* Parse a signature with empty name and email */
290
- TEST_SIGNATURE_PASS(
291
- "committer <> 123456 -0100 \n",
292
- "committer ",
293
- "",
294
- "",
295
- 123456,
296
- -60);
297
-
298
- /* Parse a signature with empty name and email */
299
- TEST_SIGNATURE_PASS(
300
- "committer <> 123456 -0100 \n",
301
- "committer ",
302
- "",
303
- "",
304
- 123456,
305
- -60);
306
-
307
- /* Parse a signature with empty name and email */
308
- TEST_SIGNATURE_PASS(
309
- "committer < > 123456 -0100 \n",
310
- "committer ",
311
- "",
312
- "",
313
- 123456,
314
- -60);
315
-
316
- /* Parse an obviously invalid signature */
317
- TEST_SIGNATURE_PASS(
318
- "committer foo<@bar> 123456 -0100 \n",
319
- "committer ",
320
- "foo",
321
- "@bar",
322
- 123456,
323
- -60);
324
-
325
- /* Parse an obviously invalid signature */
326
- TEST_SIGNATURE_PASS(
327
- "committer foo<@bar>123456 -0100 \n",
328
- "committer ",
329
- "foo",
330
- "@bar",
331
- 123456,
332
- -60);
333
-
334
- /* Parse an obviously invalid signature */
335
- TEST_SIGNATURE_PASS(
336
- "committer <>\n",
337
- "committer ",
338
- "",
339
- "",
340
- 0,
341
- 0);
342
-
343
- TEST_SIGNATURE_PASS(
344
- "committer Vicent Marti <tanoku@gmail.com> 123456 -1500 \n",
345
- "committer ",
346
- "Vicent Marti",
347
- "tanoku@gmail.com",
348
- 0,
349
- 0);
350
-
351
- TEST_SIGNATURE_PASS(
352
- "committer Vicent Marti <tanoku@gmail.com> 123456 +0163 \n",
353
- "committer ",
354
- "Vicent Marti",
355
- "tanoku@gmail.com",
356
- 0,
357
- 0);
358
-
359
- TEST_SIGNATURE_PASS(
360
- "author Vicent Marti <tanoku@gmail.com> notime \n",
361
- "author ",
362
- "Vicent Marti",
363
- "tanoku@gmail.com",
364
- 0,
365
- 0);
366
-
367
- TEST_SIGNATURE_PASS(
368
- "author Vicent Marti <tanoku@gmail.com> 123456 notimezone \n",
369
- "author ",
370
- "Vicent Marti",
371
- "tanoku@gmail.com",
372
- 0,
373
- 0);
374
-
375
- TEST_SIGNATURE_PASS(
376
- "author Vicent Marti <tanoku@gmail.com> notime +0100\n",
377
- "author ",
378
- "Vicent Marti",
379
- "tanoku@gmail.com",
380
- 0,
381
- 0);
382
-
383
- TEST_SIGNATURE_PASS(
384
- "author Vicent Marti <tanoku@gmail.com>\n",
385
- "author ",
386
- "Vicent Marti",
387
- "tanoku@gmail.com",
388
- 0,
389
- 0);
390
-
391
- TEST_SIGNATURE_PASS(
392
- "author A U Thor <author@example.com>, C O. Miter <comiter@example.com> 1234567890 -0700\n",
393
- "author ",
394
- "A U Thor",
395
- "author@example.com",
396
- 1234567890,
397
- -420);
398
-
399
- TEST_SIGNATURE_PASS(
400
- "author A U Thor <author@example.com> and others 1234567890 -0700\n",
401
- "author ",
402
- "A U Thor",
403
- "author@example.com",
404
- 1234567890,
405
- -420);
406
-
407
- TEST_SIGNATURE_PASS(
408
- "author A U Thor <author@example.com> and others 1234567890\n",
409
- "author ",
410
- "A U Thor",
411
- "author@example.com",
412
- 1234567890,
413
- 0);
414
-
415
- TEST_SIGNATURE_PASS(
416
- "author A U Thor> <author@example.com> and others 1234567890\n",
417
- "author ",
418
- "A U Thor>",
419
- "author@example.com",
420
- 1234567890,
421
- 0);
422
-
423
- TEST_SIGNATURE_FAIL(
424
- "committer Vicent Marti tanoku@gmail.com> 123456 -0100 \n",
425
- "committer ");
426
-
427
- TEST_SIGNATURE_FAIL(
428
- "author Vicent Marti <tanoku@gmail.com> 12345 \n",
429
- "author ");
430
-
431
- TEST_SIGNATURE_FAIL(
432
- "author Vicent Marti <tanoku@gmail.com> 12345 \n",
433
- "committer ");
434
-
435
- TEST_SIGNATURE_FAIL(
436
- "author Vicent Marti 12345 \n",
437
- "author ");
438
-
439
- TEST_SIGNATURE_FAIL(
440
- "author Vicent Marti <broken@email 12345 \n",
441
- "author ");
442
-
443
- TEST_SIGNATURE_FAIL(
444
- "committer Vicent Marti ><\n",
445
- "committer ");
446
-
447
- TEST_SIGNATURE_FAIL(
448
- "author ",
449
- "author ");
450
-
451
- #undef TEST_SIGNATURE_PASS
452
- #undef TEST_SIGNATURE_FAIL
453
-
454
- END_TEST
455
-
456
- static int try_build_signature(const char *name, const char *email, git_time_t time, int offset)
457
- {
458
- git_signature *sign;
459
- int error = GIT_SUCCESS;
460
-
461
- if ((error = git_signature_new(&sign, name, email, time, offset)) < GIT_SUCCESS)
462
- return error;
463
-
464
- git_signature_free((git_signature *)sign);
465
-
466
- return error;
467
- }
468
-
469
- BEGIN_TEST(signature0, "creating a signature trims leading and trailing spaces")
470
- git_signature *sign;
471
- must_pass(git_signature_new(&sign, " nulltoken ", " emeric.fermas@gmail.com ", 1234567890, 60));
472
- must_be_true(strcmp(sign->name, "nulltoken") == 0);
473
- must_be_true(strcmp(sign->email, "emeric.fermas@gmail.com") == 0);
474
- git_signature_free((git_signature *)sign);
475
- END_TEST
476
-
477
- BEGIN_TEST(signature1, "can not create a signature with empty name or email")
478
- must_pass(try_build_signature("nulltoken", "emeric.fermas@gmail.com", 1234567890, 60));
479
-
480
- must_fail(try_build_signature("", "emeric.fermas@gmail.com", 1234567890, 60));
481
- must_fail(try_build_signature(" ", "emeric.fermas@gmail.com", 1234567890, 60));
482
- must_fail(try_build_signature("nulltoken", "", 1234567890, 60));
483
- must_fail(try_build_signature("nulltoken", " ", 1234567890, 60));
484
- END_TEST
485
-
486
- BEGIN_TEST(signature2, "creating a one character signature")
487
- git_signature *sign;
488
- must_pass(git_signature_new(&sign, "x", "foo@bar.baz", 1234567890, 60));
489
- must_be_true(strcmp(sign->name, "x") == 0);
490
- must_be_true(strcmp(sign->email, "foo@bar.baz") == 0);
491
- git_signature_free((git_signature *)sign);
492
- END_TEST
493
-
494
- BEGIN_TEST(signature3, "creating a two character signature")
495
- git_signature *sign;
496
- must_pass(git_signature_new(&sign, "xx", "x@y.z", 1234567890, 60));
497
- must_be_true(strcmp(sign->name, "xx") == 0);
498
- must_be_true(strcmp(sign->email, "x@y.z") == 0);
499
- git_signature_free((git_signature *)sign);
500
- END_TEST
501
-
502
- BEGIN_TEST(signature4, "creating a zero character signature")
503
- git_signature *sign;
504
- must_fail(git_signature_new(&sign, "", "x@y.z", 1234567890, 60));
505
- must_be_true(sign == NULL);
506
- END_TEST
507
-
508
-
509
- BEGIN_TEST(parse2, "parse a whole commit buffer")
510
- const int broken_commit_count = sizeof(test_commits_broken) / sizeof(*test_commits_broken);
511
- const int working_commit_count = sizeof(test_commits_working) / sizeof(*test_commits_working);
512
-
513
- int i;
514
- git_repository *repo;
515
-
516
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
517
-
518
- for (i = 0; i < broken_commit_count; ++i) {
519
- git_commit *commit;
520
- commit = git__malloc(sizeof(git_commit));
521
- memset(commit, 0x0, sizeof(git_commit));
522
- commit->object.repo = repo;
523
-
524
- must_fail(git_commit__parse_buffer(
525
- commit,
526
- test_commits_broken[i],
527
- strlen(test_commits_broken[i]))
528
- );
529
-
530
- git_commit__free(commit);
531
- }
532
-
533
- for (i = 0; i < working_commit_count; ++i) {
534
- git_commit *commit;
535
-
536
- commit = git__malloc(sizeof(git_commit));
537
- memset(commit, 0x0, sizeof(git_commit));
538
- commit->object.repo = repo;
539
-
540
- must_pass(git_commit__parse_buffer(
541
- commit,
542
- test_commits_working[i],
543
- strlen(test_commits_working[i]))
544
- );
545
-
546
- git_commit__free(commit);
547
-
548
- commit = git__malloc(sizeof(git_commit));
549
- memset(commit, 0x0, sizeof(git_commit));
550
- commit->object.repo = repo;
551
-
552
- must_pass(git_commit__parse_buffer(
553
- commit,
554
- test_commits_working[i],
555
- strlen(test_commits_working[i]))
556
- );
557
-
558
- git_commit__free(commit);
559
- }
560
-
561
- git_repository_free(repo);
562
- END_TEST
563
-
564
- static const char *commit_ids[] = {
565
- "a4a7dce85cf63874e984719f4fdd239f5145052f", /* 0 */
566
- "9fd738e8f7967c078dceed8190330fc8648ee56a", /* 1 */
567
- "4a202b346bb0fb0db7eff3cffeb3c70babbd2045", /* 2 */
568
- "c47800c7266a2be04c571c04d5a6614691ea99bd", /* 3 */
569
- "8496071c1b46c854b31185ea97743be6a8774479", /* 4 */
570
- "5b5b025afb0b4c913b4c338a42934a3863bf3644", /* 5 */
571
- "a65fedf39aefe402d3bb6e24df4d4f5fe4547750", /* 6 */
572
- };
573
-
574
- BEGIN_TEST(details0, "query the details on a parsed commit")
575
- const size_t commit_count = sizeof(commit_ids) / sizeof(const char *);
576
-
577
- unsigned int i;
578
- git_repository *repo;
579
-
580
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
581
-
582
- for (i = 0; i < commit_count; ++i) {
583
- git_oid id;
584
- git_commit *commit;
585
-
586
- const git_signature *author, *committer;
587
- const char *message;
588
- git_time_t commit_time;
589
- unsigned int parents, p;
590
- git_commit *parent = NULL, *old_parent = NULL;
591
-
592
- git_oid_fromstr(&id, commit_ids[i]);
593
-
594
- must_pass(git_commit_lookup(&commit, repo, &id));
595
-
596
- message = git_commit_message(commit);
597
- author = git_commit_author(commit);
598
- committer = git_commit_committer(commit);
599
- commit_time = git_commit_time(commit);
600
- parents = git_commit_parentcount(commit);
601
-
602
- must_be_true(strcmp(author->name, "Scott Chacon") == 0);
603
- must_be_true(strcmp(author->email, "schacon@gmail.com") == 0);
604
- must_be_true(strcmp(committer->name, "Scott Chacon") == 0);
605
- must_be_true(strcmp(committer->email, "schacon@gmail.com") == 0);
606
- must_be_true(message != NULL);
607
- must_be_true(strchr(message, '\n') != NULL);
608
- must_be_true(commit_time > 0);
609
- must_be_true(parents <= 2);
610
- for (p = 0;p < parents;p++) {
611
- if (old_parent != NULL)
612
- git_commit_free(old_parent);
613
-
614
- old_parent = parent;
615
- must_pass(git_commit_parent(&parent, commit, p));
616
- must_be_true(parent != NULL);
617
- must_be_true(git_commit_author(parent) != NULL); // is it really a commit?
618
- }
619
- git_commit_free(old_parent);
620
- git_commit_free(parent);
621
-
622
- must_fail(git_commit_parent(&parent, commit, parents));
623
- git_commit_free(commit);
624
- }
625
-
626
- git_repository_free(repo);
627
- END_TEST
628
-
629
- #define COMMITTER_NAME "Vicent Marti"
630
- #define COMMITTER_EMAIL "vicent@github.com"
631
- #define COMMIT_MESSAGE "This commit has been created in memory\n\
632
- This is a commit created in memory and it will be written back to disk\n"
633
-
634
- static const char *tree_oid = "1810dff58d8a660512d4832e740f692884338ccd";
635
-
636
- BEGIN_TEST(write0, "write a new commit object from memory to disk")
637
- git_repository *repo;
638
- git_commit *commit;
639
- git_oid tree_id, parent_id, commit_id;
640
- git_signature *author, *committer;
641
- const git_signature *author1, *committer1;
642
- git_commit *parent;
643
- git_tree *tree;
644
-
645
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
646
-
647
- git_oid_fromstr(&tree_id, tree_oid);
648
- must_pass(git_tree_lookup(&tree, repo, &tree_id));
649
-
650
- git_oid_fromstr(&parent_id, commit_ids[4]);
651
- must_pass(git_commit_lookup(&parent, repo, &parent_id));
652
-
653
- /* create signatures */
654
- must_pass(git_signature_new(&committer, COMMITTER_NAME, COMMITTER_EMAIL, 123456789, 60));
655
- must_pass(git_signature_new(&author, COMMITTER_NAME, COMMITTER_EMAIL, 987654321, 90));
656
-
657
- must_pass(git_commit_create_v(
658
- &commit_id, /* out id */
659
- repo,
660
- NULL, /* do not update the HEAD */
661
- author,
662
- committer,
663
- NULL,
664
- COMMIT_MESSAGE,
665
- tree,
666
- 1, parent));
667
-
668
- git_object_free((git_object *)parent);
669
- git_object_free((git_object *)tree);
670
-
671
- git_signature_free(committer);
672
- git_signature_free(author);
673
-
674
- must_pass(git_commit_lookup(&commit, repo, &commit_id));
675
-
676
- /* Check attributes were set correctly */
677
- author1 = git_commit_author(commit);
678
- must_be_true(author1 != NULL);
679
- must_be_true(strcmp(author1->name, COMMITTER_NAME) == 0);
680
- must_be_true(strcmp(author1->email, COMMITTER_EMAIL) == 0);
681
- must_be_true(author1->when.time == 987654321);
682
- must_be_true(author1->when.offset == 90);
683
-
684
- committer1 = git_commit_committer(commit);
685
- must_be_true(committer1 != NULL);
686
- must_be_true(strcmp(committer1->name, COMMITTER_NAME) == 0);
687
- must_be_true(strcmp(committer1->email, COMMITTER_EMAIL) == 0);
688
- must_be_true(committer1->when.time == 123456789);
689
- must_be_true(committer1->when.offset == 60);
690
-
691
- must_be_true(strcmp(git_commit_message(commit), COMMIT_MESSAGE) == 0);
692
-
693
- #ifndef GIT_WIN32
694
- must_be_true((loose_object_mode(REPOSITORY_FOLDER, (git_object *)commit) & 0777) == GIT_OBJECT_FILE_MODE);
695
- #endif
696
-
697
- must_pass(remove_loose_object(REPOSITORY_FOLDER, (git_object *)commit));
698
-
699
- git_commit_free(commit);
700
- git_repository_free(repo);
701
- END_TEST
702
-
703
- #define ROOT_COMMIT_MESSAGE "This is a root commit\n\
704
- This is a root commit and should be the only one in this branch\n"
705
-
706
- BEGIN_TEST(root0, "create a root commit")
707
- git_repository *repo;
708
- git_commit *commit;
709
- git_oid tree_id, commit_id;
710
- const git_oid *branch_oid;
711
- git_signature *author, *committer;
712
- const char *branch_name = "refs/heads/root-commit-branch";
713
- git_reference *head, *branch;
714
- char *head_old;
715
- git_tree *tree;
716
-
717
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
718
-
719
- git_oid_fromstr(&tree_id, tree_oid);
720
- must_pass(git_tree_lookup(&tree, repo, &tree_id));
721
-
722
- /* create signatures */
723
- must_pass(git_signature_new(&committer, COMMITTER_NAME, COMMITTER_EMAIL, 123456789, 60));
724
- must_pass(git_signature_new(&author, COMMITTER_NAME, COMMITTER_EMAIL, 987654321, 90));
725
-
726
- /* First we need to update HEAD so it points to our non-existant branch */
727
- must_pass(git_reference_lookup(&head, repo, "HEAD"));
728
- must_be_true(git_reference_type(head) == GIT_REF_SYMBOLIC);
729
- head_old = git__strdup(git_reference_target(head));
730
- must_be_true(head_old != NULL);
731
-
732
- must_pass(git_reference_set_target(head, branch_name));
733
-
734
- must_pass(git_commit_create_v(
735
- &commit_id, /* out id */
736
- repo,
737
- "HEAD",
738
- author,
739
- committer,
740
- NULL,
741
- ROOT_COMMIT_MESSAGE,
742
- tree,
743
- 0));
744
-
745
- git_object_free((git_object *)tree);
746
- git_signature_free(committer);
747
- git_signature_free(author);
748
-
749
- /*
750
- * The fact that creating a commit works has already been
751
- * tested. Here we just make sure it's our commit and that it was
752
- * written as a root commit.
753
- */
754
- must_pass(git_commit_lookup(&commit, repo, &commit_id));
755
- must_be_true(git_commit_parentcount(commit) == 0);
756
- must_pass(git_reference_lookup(&branch, repo, branch_name));
757
- branch_oid = git_reference_oid(branch);
758
- must_pass(git_oid_cmp(branch_oid, &commit_id));
759
- must_be_true(!strcmp(git_commit_message(commit), ROOT_COMMIT_MESSAGE));
760
-
761
- /* Remove the data we just added to the repo */
762
- must_pass(git_reference_lookup(&head, repo, "HEAD"));
763
- must_pass(git_reference_set_target(head, head_old));
764
- must_pass(git_reference_delete(branch));
765
- must_pass(remove_loose_object(REPOSITORY_FOLDER, (git_object *)commit));
766
- git__free(head_old);
767
- git_commit_free(commit);
768
- git_repository_free(repo);
769
-
770
- git_reference_free(head);
771
- END_TEST
772
-
773
- BEGIN_SUITE(commit)
774
- ADD_TEST(parse0);
775
- ADD_TEST(parse1);
776
- ADD_TEST(parse2);
777
- ADD_TEST(details0);
778
-
779
- ADD_TEST(write0);
780
-
781
- ADD_TEST(root0);
782
-
783
- ADD_TEST(signature0);
784
- ADD_TEST(signature1);
785
- ADD_TEST(signature2);
786
- ADD_TEST(signature3);
787
- ADD_TEST(signature4);
788
- END_SUITE