test_objects.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import os
  2. import unittest
  3. from git.objects import (Blob,
  4. Tree,
  5. Commit,
  6. )
  7. a_sha = '6f670c0fb53f9463760b7295fbb814e965fb20c8'
  8. b_sha = '2969be3e8ee1c0222396a5611407e4769f14e54b'
  9. c_sha = '954a536f7819d40e6f637f849ee187dd10066349'
  10. tree_sha = '70c190eb48fa8bbb50ddc692a17b44cb781af7f6'
  11. class BlobReadTests(unittest.TestCase):
  12. """Test decompression of blobs"""
  13. def get_sha_file(self, obj, base, sha):
  14. return obj.from_file(os.path.join(os.path.dirname(__file__),
  15. 'data', base, sha))
  16. def get_blob(self, sha):
  17. """Return the blob named sha from the test data dir"""
  18. return self.get_sha_file(Blob, 'blobs', sha)
  19. def get_tree(self, sha):
  20. return self.get_sha_file(Tree, 'trees', sha)
  21. def get_commit(self, sha):
  22. return self.get_sha_file(Commit, 'commits', sha)
  23. def test_decompress_simple_blob(self):
  24. b = self.get_blob(a_sha)
  25. self.assertEqual(b.text(), 'test 1\n')
  26. self.assertEqual(b.sha().hexdigest(), a_sha)
  27. def test_parse_empty_blob_object(self):
  28. sha = 'e69de29bb2d1d6434b8b29ae775ad8c2e48c5391'
  29. b = self.get_blob(sha)
  30. self.assertEqual(b.text(), '')
  31. self.assertEqual(b.sha().hexdigest(), sha)
  32. def test_create_blob_from_string(self):
  33. string = 'test 2\n'
  34. b = Blob.from_string(string)
  35. self.assertEqual(b.text(), string)
  36. self.assertEqual(b.sha().hexdigest(), b_sha)
  37. def test_parse_legacy_blob(self):
  38. string = 'test 3\n'
  39. b = self.get_blob(c_sha)
  40. self.assertEqual(b.text(), string)
  41. self.assertEqual(b.sha().hexdigest(), c_sha)
  42. def test_read_tree_from_file(self):
  43. t = self.get_tree(tree_sha)
  44. self.assertEqual(t.entries()[0], (33188, 'a', a_sha))
  45. self.assertEqual(t.entries()[1], (33188, 'b', b_sha))
  46. def test_read_commit_from_file(self):
  47. sha = '60dacdc733de308bb77bb76ce0fb0f9b44c9769e'
  48. c = self.get_commit(sha)
  49. self.assertEqual(c.tree(), tree_sha)
  50. self.assertEqual(c.parents(), ['0d89f20333fbb1d2f3a94da77f4981373d8f4310'])
  51. self.assertEqual(c.author(),
  52. 'James Westby <jw+debian@jameswestby.net> 1174759230 +0000')
  53. self.assertEqual(c.committer(),
  54. 'James Westby <jw+debian@jameswestby.net> 1174759230 +0000')
  55. self.assertEqual(c.message(), 'Test commit\n')
  56. def test_read_commit_no_parents(self):
  57. sha = '0d89f20333fbb1d2f3a94da77f4981373d8f4310'
  58. c = self.get_commit(sha)
  59. self.assertEqual(c.tree(), '90182552c4a85a45ec2a835cadc3451bebdfe870')
  60. self.assertEqual(c.parents(), [])
  61. self.assertEqual(c.author(),
  62. 'James Westby <jw+debian@jameswestby.net> 1174758034 +0000')
  63. self.assertEqual(c.committer(),
  64. 'James Westby <jw+debian@jameswestby.net> 1174758034 +0000')
  65. self.assertEqual(c.message(), 'Test commit\n')
  66. def test_read_commit_two_parents(self):
  67. sha = '5dac377bdded4c9aeb8dff595f0faeebcc8498cc'
  68. c = self.get_commit(sha)
  69. self.assertEqual(c.tree(), 'd80c186a03f423a81b39df39dc87fd269736ca86')
  70. self.assertEqual(c.parents(), ['ab64bbdcc51b170d21588e5c5d391ee5c0c96dfd',
  71. '4cffe90e0a41ad3f5190079d7c8f036bde29cbe6'])
  72. self.assertEqual(c.author(),
  73. 'James Westby <jw+debian@jameswestby.net> 1174773719 +0000')
  74. self.assertEqual(c.committer(),
  75. 'James Westby <jw+debian@jameswestby.net> 1174773719 +0000')
  76. self.assertEqual(c.message(), 'Merge ../b\n')