package v2_test import ( "bytes" "crypto" "strings" commitgraph "github.com/go-git/go-git/v5/plumbing/format/commitgraph/v2" "github.com/go-git/go-git/v5/plumbing/hash" . "gopkg.in/check.v1" ) func (s *CommitgraphSuite) TestOpenChainFile(c *C) { sha1Data := []string{ "c336d16298a017486c4164c40f8acb28afe64e84", "31eae7b619d166c366bf5df4991f04ba8cebea0a", "b977a025ca21e3b5ca123d8093bd7917694f6da7", "d2a38b4a5965d529566566640519d03d2bd10f6c", "35b585759cbf29f8ec428ef89da20705d59f99ec", "c2bbf9fe8009b22d0f390f3c8c3f13937067590f", "fc9f0643b21cfe571046e27e0c4565f3a1ee96c8", "c088fd6a7e1a38e9d5a9815265cb575bb08d08ff", "5fddbeb678bd2c36c5e5c891ab8f2b143ced5baf", "5d7303c49ac984a9fec60523f2d5297682e16646", } sha256Data := []string{ "b9efda7160f2647e0974ca623f8a8f8e25fb6944f1b8f78f4db1bf07932de8eb", "7095c59f8bf46e12c21d2d9da344cfe383fae18d26f3ae4d4ab7b71e3d0ddfae", "25a395cb62f7656294e40a001ee19fefcdf3013d265dfcf4b744cd2549891dec", "7fbd564813a82227507d9dd70f1fd21fc1f180223cd3f42e0c3090c9a8b6a7d0", "aa95db1db2df91bd7200a892dd1c03bc2704c4793400d016b3ca08c148b0f7c1", "2176988184b570565dc33823a02f474ad59f667a0e971c86063a7fea64776a87", "d0afc0e64171140eb7902110f807a1beaa38a603d4312fd4bd14a5db2784ba62", "2822136f60bfc58bbd9d624cc19fbef9f0fc0efe2a61729242e1e5f9b77fa3d0", "6f207b5c43463af96bc38c43b0bf45275fa327e656a8bba8e7fc55c5ab6870d8", "6cf33782619b6ff0af9c081e46323f423f8b49bf3d043887c0549bef47d60f55", "60ea0753d2d4e828983528294be3f57e2a3ba37df4f59e3236133c9e2b17afc5", "6b3c9f4ba5092e0807774097953ec6e9f58e8371d775bd8738a0fa98d728ba3d", "c97cab8564054e30515dbe67dda4e14638aabf17b3f042d18dc8461cd098b362", "9f7ece76fd2c9dae08e75176347efffc1446ad74af66004dd34680edb205dfb5", "23e7a7e481b00571b63c2a7d0432f9733dd85d18a9841a3d7b96743100da5824", "e684b1253fa8eb6572f35bab2fd3b6efecabf8472ede43497cd9c171973cc341", "8b9f04080b0c40f7ad2a6bb5e5296cd6c06e730dffce87a0375ae7bd0f85f86e", "384a745f3b14edc89526a98b96b3247b2b548541c755aadee7664352ed7f12ae", "b68c8a82cd5b839917e1058570a0408819b81d16dbab81db118cc8dfc3def044", "fbaf04f1a401335be57e172f4326102c658d857fde6cf2bc987520d11fc99770", "57acf2aa5ac736337b120c951536c8a2b2cb23a4f0f198e86f3433370fa63105", "dd7fcba4c13b6ced0b6190cdb5861adcd08446a92d67f7ec0f02f9533e09bbb0", "744ef481c9b13ebd3b6e43d7e9ba25f7c7a5c8e453e6f0d50f5d71aae1591689", "2c573142f1edd52b64dcd42a9c3b0ca5c9c615f757d80d25bfb02ff3eb2257e2", "ea65cc58ef8520cd0335de4318a0d3b3a1ac257b7e9f82e12483fa3bce6cc0cd", "1dfa626ff1523b82e21a4c29476edcdc9a89842f3c7181f63a28cd4f46cc9923", "aa1153e71af836121e6f6cc716cf64880c19221d8dc367ff42359de1b8ef30e9", "a7c6ec6f6569e22d2fa6e8281639d27c59b633ea00ad8ef27a43171cc985fbda", "627b706d63d2cfd5a388deeaa76655ef09146fe492ee17cb0043578cef9c2800", "d40eaf091ef8357b734d1047a552436eaf057d99a0c6f2068b097c324099d360", "87f0ef81641da4fd3438dcaae4819f0c92a0ade54e262b21f9ded4575ff3f234", "3a00a29e08d29454b5197662f70ccab5699b0ce8c85af7fbf511b8915d97cfd0", } goodShas := sha1Data badShas := sha256Data if hash.CryptoType == crypto.SHA256 { goodShas = sha256Data badShas = sha1Data } chainData := strings.Join(goodShas, "\n") + "\n" chainReader := strings.NewReader(chainData) chain, err := commitgraph.OpenChainFile(chainReader) c.Assert(err, IsNil) c.Assert(goodShas, DeepEquals, chain) // Test with bad shas chainData = strings.Join(badShas, "\n") + "\n" chainReader = strings.NewReader(chainData) chain, err = commitgraph.OpenChainFile(chainReader) c.Assert(err, Equals, commitgraph.ErrMalformedCommitGraphFile) c.Assert(chain, IsNil) // Test with empty file emptyChainReader := bytes.NewReader(nil) chain, err = commitgraph.OpenChainFile(emptyChainReader) c.Assert(err, IsNil) c.Assert(chain, DeepEquals, []string{}) // Test with file containing only newlines newlineChainData := []byte("\n\n\n") newlineChainReader := bytes.NewReader(newlineChainData) chain, err = commitgraph.OpenChainFile(newlineChainReader) c.Assert(err, Equals, commitgraph.ErrMalformedCommitGraphFile) c.Assert(chain, IsNil) }