Beispiel #1
0
    def test_dependents(self):
        Fixture.from_scheme("""1:
                               d:-a1-b1-c1
                               a:-1a
                               b:-a1-1b
                               c:-a1-b1-1c""").actualize()
        misc.checkout('1/develop')
        self.assert_aflow_dies_with(
            'Unable to revert 1/a_v1 since 1/c_v1 depends on it. '
            'Revert it first or use "git af revert -d" revert dependent '
            'topics automatically.', 'revert', 'a')
        self.assert_aflow_returns_0("""1/c_v1 reverted successfully.
1/b_v1 reverted successfully.
1/a_v1 reverted successfully.""", 'revert', 'a', '-d')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:-
            d:-a1-b1-c1-C1-B1-A1
            b:-a1-1b
            a:-1a
            c:-a1-b1-1c"""))
        branch.reset('HEAD^^^')
        self.assert_aflow_returns_0("""1/c_v1 reverted successfully.
1/b_v1 reverted successfully.""", 'revert', 'b', 'c')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:-
            d:-a1-b1-c1-C1-B1
            b:-a1-1b
            a:-1a
            c:-a1-b1-1c"""))
Beispiel #2
0
    def test_unfinish(self):
        Fixture.from_scheme("""1:
                               s:-a1
                               d:-a1-e1-b1-c1-B1-b1-B1-b1
                               a:-1a
                               b:-a1-e1-1b
                               c:----------1c
                               e:----1e""").actualize()
        self.assert_aflow_dies_with(
            "1/a_v1 was previously merged in 1/staging, so it's impossible to "
            "unfinish it.", 'continue', '-u', 'a')
        dev_head = misc.rev_parse('1/develop')
        self.assert_aflow_dies_with(
            'Failed to continue 1/e_v1. It is merged in 1/b_v1 which was later '
            'merged in 1/develop. 1/develop reset back to ' + dev_head + '.',
            'continue', '-u', 'e')
        self.assert_aflow_returns_0(
            '1/b_v1 created and checked out. Use "git af topic finish" to '
            'merge new revision of topic into develop', 'continue', '-u', 'b')
        self.assert_aflow_returns_0(
            """Using "End User Feature" as default topic type.
1/b_v1 merged into 1/develop successfully.
Branch 1/b_v1 deleted.""",
            'finish')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:-
            s:-a1
            d:-a1-e1-c1-b1
            c:-1c
            e:-1e
            a:-1a
            b:-a1-e1-1b"""))
Beispiel #3
0
 def test_cross_iteration(self):
     Fixture.from_scheme("""1:-a1
                            s:-a1
                            d:-a1
                            a:-1a
                            2:""").actualize()
     misc.checkout('2/develop')
     self.assert_aflow_returns_0(
         '2/a_v2 created and checked out. Use "git af topic finish" to '
         'merge new revision of topic into develop', 'continue', 'a')
     commit.commit('No matter', allow_empty=True)
     self.assert_aflow_returns_0(None, 'finish')
     self.assert_aflow_dies_with(
         'Failed to find merges of b in 2 and previous iterations.',
         'continue', 'b')
     self.assert_aflow_returns_0(
         'Please, note that a_v2'
         ' is already present in other iteration(s), so changes you will '
         'make for this revision in current iteration should correspond to '
         'changes made for same revision in other iterations. You may '
         'also use "git af port" to bring commits of some revision from '
         'one iteration to another.' + os.linesep +
         '1/a_v2 created and checked out. Use "git af topic finish" to '
         'merge new revision of topic into develop',
         'continue', '1/a')
     misc.checkout('2/staging')
     self.assert_aflow_returns_0(None, 'merge', 'a')
     misc.checkout('master')
     self.assert_aflow_returns_0(None, 'merge', 'a')
     self.assert_aflow_returns_0(None, 'rebase', '-n', '3')
     self.assert_aflow_returns_0(
         '3/a_v3 created and checked out. Use "git af topic finish" to '
         'merge new revision of topic into develop',
         'continue', 'a')
     commit.commit('No matter', allow_empty=True)
     self.assert_aflow_returns_0(None, 'finish')
     self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
         1:-a1
         s:-a1
         d:-a1
         a:-1a
         2:-a2
         s:-a2
         d:-a2
         a:-2-
         3:
         d:-a3
         a:-3-"""))
Beispiel #4
0
 def test_complex(self):
     Fixture.from_scheme("""1:
                            d:-a1-b1-a2-b2-c1
                            a:-1a-a--2A
                            b:-1b-a1-a2-2--c1
                            c:-a1-a2-b1-b2-1c""").actualize()
     self.assert_aflow_returns_0(None, 'checkout', 'b')
     commit.commit('No matter', allow_empty=True)
     self.assert_aflow_returns_0(None, 'finish')
     self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
         1:-
         s:-
         d:-a1-b1-a2-b2-c1-b3
         a:-1a-a--2A
         b:-1b-a1-a2-2--c1-3-
         c:-a1-a2-b1-b2-1c"""))
Beispiel #5
0
    def test_fake_merge(self):
        Fixture.from_scheme("""1:
                               s:-a1
                               d:-a1
                               a:-1a""").actualize()
        misc.checkout('1/staging')
        self.assert_aflow_returns_0('1/a_v1 reverted successfully.',
                                    'revert', 'a')
        self.assert_aflow_returns_0("""Using default topic source(s): develop
1/a_v1 merged successfully""", 'merge', 'a')
        self.assert_aflow_returns_0('1/a_v1 reverted successfully.',
                                    'revert', 'a')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:-
            s:-a1-A1-a1-A1
            d:-a1
            a:-1a"""))
Beispiel #6
0
    def test_refinish(self):
        Fixture.from_scheme("""1:
                               d:-a1
                               a:-1a""").actualize()

        misc.checkout('1/develop')
        commit.revert('HEAD', parent=1)
        branch.delete('1/a')
        self.assert_aflow_returns_0(None, 'checkout', 'a')
        self.assert_aflow_returns_0(
            'Assuming topic you are finishing is 1/a_v1.' + os.linesep +
            'Taking topic type from previous merge of 1/a_v1.' + os.linesep +
            '1/a_v1 merged into 1/develop successfully.',
            'finish')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:
            d:-a1-A1-a1
            a:-1a"""))
Beispiel #7
0
    def test_dependencies(self):
        Fixture.from_scheme('''1:
                               d:----a1-b1-a2-c1
                               a:-1a----b1-2c
                               b:-1b---------
                               c:----b1-a1-a2-1-''').actualize()

        misc.checkout('1/staging')
        self.assert_aflow_returns_0(None, 'merge', '-a')
        misc.checkout('master')
        self.assert_aflow_returns_0(None, 'merge', '-d', 'c')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme(
            '''1:----b1-a1-a2-c1
               s:----a1-b1-a2-c1
               d:----a1-b1-a2-c1
               a:-1a----b1-2c
               b:-1b---------
               c:----b1-a1-a2-1-'''))
Beispiel #8
0
    def test_versions(self):
        Fixture.from_scheme("""1:
                               d:-a1-b1-a2-c1-b2-a3
                               a:-1a-b1-2a-c1-b2-3a
                               b:-a1-1b-a2-c1-2b
                               c:-a1-b1-a2-1c""").actualize()
        misc.checkout('1/develop')
        self.assert_aflow_returns_0("""1/a_v3 reverted successfully.
1/b_v2 reverted successfully.
1/c_v1 reverted successfully.
1/a_v2 reverted successfully.""", 'revert', 'a_v2', '-d')
        self.assertEqual(Fixture.from_repo(), Fixture.from_scheme("""
            1:-
            s:-
            d:-a1-b1-a2-c1-b2-a3-A3-B2-C1-A2
            b:-a1-1b-a2-c1-2b
            a:-1a-b1-2a-c1-b2-3a
            c:-a1-b1-a2-1c"""))
Beispiel #9
0
    def test_update(self):
        Fixture.from_scheme('''1:
                               s:----a1-b1
                               d:----a1-b1-c1-a2-b2-c2-a3
                               a:-1a----2a-------b2-c2-3a
                               b:-1b----------a2-2b
                               c:-1c----------a2-b2-2c''').actualize()

        misc.checkout('1/staging')
        self.assert_aflow_dies_with(
            'Using default topic source(s): develop' + os.linesep +
            'Merge failed. Topic 1/a_v3 depends on 1/c_v1. Try merge it first '
            'or use "git af merge -d" to merge dependencies automatically',
            'merge', '-u')
        self.assert_aflow_returns_0(None, 'merge', '-d', '-u')
        self.assertEqual(
            Fixture.from_repo(),
            Fixture.from_scheme("""1:-
                                   s:-a1-b1-a2-b2-c1-c2-a3
                                   d:-a1-b1-c1-a2-b2-c2-a3
                                   b:-1b-a1-a2-2b
                                   c:-1c-a1-a2-b1-b2-2c
                                   a:-1a-2a-b1-b2-c1-c2-3a"""))