File: cherrypick_test.rb

package info (click to toggle)
ruby-rugged 1.9.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,752 kB
  • sloc: ansic: 8,722; ruby: 7,473; sh: 99; makefile: 5
file content (109 lines) | stat: -rw-r--r-- 4,533 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
require "test_helper"

class WorkdirCherrypickTest < Rugged::TestCase
  def setup
    @repo = FixtureRepo.from_libgit2("cherrypick")
  end

  def test_automerge
    signature = {
      name: "Picker",
      email: "picker@example.org"
    }

    @repo.reset("d3d77487660ee3c0194ee01dc5eaf478782b1c7e", :hard)

    @repo.cherrypick("cfc4f0999a8367568e049af4f72e452d40828a15")
    Rugged::Commit.create(@repo, {
      tree: @repo.index.write_tree,
      update_ref: "HEAD",
      parents: [ @repo.last_commit ],
      author: signature,
      committer: signature,
      message: "Cherry picked!"
    })

    assert_equal "38c05a857e831a7e759d83778bfc85d003e21c45", @repo.index["file1.txt"][:oid]
    assert_equal "a661b5dec1004e2c62654ded3762370c27cf266b", @repo.index["file2.txt"][:oid]
    assert_equal "df6b290e0bd6a89b01d69f66687e8abf385283ca", @repo.index["file3.txt"][:oid]

    @repo.cherrypick("964ea3da044d9083181a88ba6701de9e35778bf4")
    Rugged::Commit.create(@repo, {
      tree: @repo.index.write_tree,
      update_ref: "HEAD",
      parents: [ @repo.last_commit ],
      author: signature,
      committer: signature,
      message: "Cherry picked!"
    })

    assert_equal "38c05a857e831a7e759d83778bfc85d003e21c45", @repo.index["file1.txt"][:oid]
    assert_equal "bd8fc3c59fb52d3c8b5907ace7defa5803f82419", @repo.index["file2.txt"][:oid]
    assert_equal "df6b290e0bd6a89b01d69f66687e8abf385283ca", @repo.index["file3.txt"][:oid]

    @repo.cherrypick("a43a050c588d4e92f11a6b139680923e9728477d")
    Rugged::Commit.create(@repo, {
      tree: @repo.index.write_tree,
      update_ref: "HEAD",
      parents: [ @repo.last_commit ],
      author: signature,
      committer: signature,
      message: "Cherry picked!"
    })

    assert_equal "f06427bee380364bc7e0cb26a9245158e4726ce0", @repo.index["file1.txt"][:oid]
    assert_equal "bd8fc3c59fb52d3c8b5907ace7defa5803f82419", @repo.index["file2.txt"][:oid]
    assert_equal "df6b290e0bd6a89b01d69f66687e8abf385283ca", @repo.index["file3.txt"][:oid]
  end

  def test_merge_first_parent
    @repo.reset("cfc4f0999a8367568e049af4f72e452d40828a15", :hard)

    @repo.cherrypick("abe4603bc7cd5b8167a267e0e2418fd2348f8cff", mainline: 1)

    assert_equal "f90f9dcbdac2cce5cc166346160e19cb693ef4e8", @repo.index["file1.txt"][:oid]
    assert_equal "563f6473a3858f99b80e5f93c660512ed38e1e6f", @repo.index["file2.txt"][:oid]
    assert_equal "e233b9ed408a95e9d4b65fec7fc34943a556deb2", @repo.index["file3.txt"][:oid]
  end

  def test_merge_second_parent
    @repo.reset("cfc4f0999a8367568e049af4f72e452d40828a15", :hard)

    @repo.cherrypick("abe4603bc7cd5b8167a267e0e2418fd2348f8cff", mainline: 2)

    assert_equal "487434cace79238a7091e2220611d4f20a765690", @repo.index["file1.txt"][:oid]
    assert_equal "e5183bfd18e3a0a691fadde2f0d5610b73282d31", @repo.index["file2.txt"][:oid]
    assert_equal "409a1bec58bf35348e8b62b72bb9c1f45cf5a587", @repo.index["file3.txt"][:oid]
  end

  def test_cherrypick_commit
    index = @repo.cherrypick_commit("cfc4f0999a8367568e049af4f72e452d40828a15",
                                    "d3d77487660ee3c0194ee01dc5eaf478782b1c7e")

    assert_equal 0, index.conflicts.size
    assert_equal "38c05a857e831a7e759d83778bfc85d003e21c45", index["file1.txt"][:oid]
    assert_equal "a661b5dec1004e2c62654ded3762370c27cf266b", index["file2.txt"][:oid]
    assert_equal "df6b290e0bd6a89b01d69f66687e8abf385283ca", index["file3.txt"][:oid]


    assert_raises(Rugged::CherrypickError) do
      @repo.cherrypick_commit("abe4603bc7cd5b8167a267e0e2418fd2348f8cff",
                              "cfc4f0999a8367568e049af4f72e452d40828a15")
    end

    index = @repo.cherrypick_commit("abe4603bc7cd5b8167a267e0e2418fd2348f8cff",
                                  "cfc4f0999a8367568e049af4f72e452d40828a15", 1)

    assert_equal 0, index.conflicts.size
    assert_equal "f90f9dcbdac2cce5cc166346160e19cb693ef4e8", index["file1.txt"][:oid]
    assert_equal "563f6473a3858f99b80e5f93c660512ed38e1e6f", index["file2.txt"][:oid]
    assert_equal "e233b9ed408a95e9d4b65fec7fc34943a556deb2", index["file3.txt"][:oid]

    index = @repo.cherrypick_commit("abe4603bc7cd5b8167a267e0e2418fd2348f8cff",
                                  "cfc4f0999a8367568e049af4f72e452d40828a15", 2)

    assert_equal "487434cace79238a7091e2220611d4f20a765690", index["file1.txt"][:oid]
    assert_equal "e5183bfd18e3a0a691fadde2f0d5610b73282d31", index["file2.txt"][:oid]
    assert_equal "409a1bec58bf35348e8b62b72bb9c1f45cf5a587", index["file3.txt"][:oid]
  end
end