コード例 #1
0
    def test_reconcile(self):
        ''' reconcile should get a coherent workspace status '''
        # files opened for edit and deleted on disk should be reverted then
        # deleted in perforce in order to have a good state
        with mock_p4() as mock:
            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev 1'),
                                ('/p4/file_2', 'rev 1'),
                                ('/p4/file_3', 'rev 1'),
                                ('/p4/dir/file_1', 'rev 1'))
            self._p4.sync()

            cl_number = self._p4.get_or_create_changelist('Test changelist')

            self.assertTrue(self._p4.edit(cl_number, '/p4/file_2'))

            os.remove('/p4/file_1')
            os.remove('/p4/file_2')

            with open('/p4/file_3', 'w') as file_content:
                file_content.write('rev 2')

            nimp.tests.utils.create_file('/p4/dir/file_2', 'rev 1')

            self.assertTrue(
                self._p4.reconcile(cl_number, '/p4/dir', '/p4/file_1',
                                   '/p4/file_2', '/p4/file_3'))
            status = self._p4.get_files_status('/p4/dir', '/p4/file_1',
                                               '/p4/file_2', '/p4/file_3')

            self.assertListEqual(list(status),
                                 [('/p4/dir/file_1', 'add', None),
                                  ('/p4/dir/file_2', None, 'add'),
                                  ('/p4/file_1', 'add', 'delete'),
                                  ('/p4/file_2', 'add', 'delete'),
                                  ('/p4/file_3', 'add', 'edit')])
コード例 #2
0
    def test_get_modified_files(self):
        ''' test submit '''
        with mock_p4() as mock:
            cl_1 = mock.add_changelist('test_changelist',
                                       ('/p4/file_1', 'rev 1'),
                                       ('/p4/file_2', 'rev 1'),
                                       ('/p4/file_3', 'rev 1'))

            cl_2 = mock.add_changelist('test_changelist',
                                       ('/p4/file_2', 'rev 2'),
                                       ('/p4/file_3', None))

            cl_3 = mock.add_changelist('test_changelist',
                                       ('/p4/file_3', 'recreated'))

            cl_1_modified_files = list(self._p4.get_modified_files(cl_1))
            cl_2_modified_files = list(self._p4.get_modified_files(cl_2))
            cl_3_modified_files = list(self._p4.get_modified_files(cl_3))

            self.assertListEqual([('/test_client/file_1', 'add'),
                                  ('/test_client/file_2', 'add'),
                                  ('/test_client/file_3', 'add')],
                                 sorted(cl_1_modified_files))

            self.assertListEqual([('/test_client/file_2', 'add'),
                                  ('/test_client/file_3', 'add')],
                                 sorted(cl_2_modified_files))

            self.assertListEqual([('/test_client/file_3', 'add')],
                                 sorted(cl_3_modified_files))
コード例 #3
0
    def test_revert_changelist(self):
        ''' should rever only files in specified changelist '''
        with mock_p4() as mock:
            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev 1'),
                                ('/p4/file_2', 'rev 1'))

            self._p4.sync()
            cl_1 = self._p4.get_or_create_changelist('test cl_1')
            cl_2 = self._p4.get_or_create_changelist('test cl_2')

            self._p4.edit(cl_1, '/p4/file_1')
            self._p4.edit(cl_2, '/p4/file_2')

            with open('/p4/file_1', 'w') as file_content:
                file_content.write('rev 2')

            with open('/p4/file_2', 'w') as file_content:
                file_content.write('rev 2')

            self.assertTrue(self._p4.revert_changelist(cl_1))

            with open('/p4/file_1', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 1')

            with open('/p4/file_2', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 2')
コード例 #4
0
    def test_get_files_status(self):
        ''' get_file_status should return correct file status '''
        # /... should be added to the end of a file if it's a directory
        with mock_p4() as mock:
            mock.add_changelist('test changelist', ('/p4/file_1', 'rev_1'),
                                ('/p4/file_2', 'rev_1'),
                                ('/p4/file_3', 'rev_1'),
                                ('/p4/dir/child_1', 'rev_1'))

            mock.add_changelist('test changelist 2', ('/p4/file_2', None),
                                ('/p4/file_3', None),
                                ('/p4/dir/child_1', 'rev_2'))

            self._p4.sync()
            nimp.tests.utils.create_file('/p4/dir/child_2', 'rev_1')
            nimp.tests.utils.create_file('/p4/dir/child_3', 'rev_1')
            nimp.tests.utils.create_file('/some_path/not_in_client', 'rev_1')

            cl_number = self._p4.get_or_create_changelist('test changelist')
            self._p4.edit(cl_number, '/p4/file_1')
            self._p4.add(cl_number, '/p4/file_2')
            self._p4.add(cl_number, '/p4/dir/child_2')

            result = self._p4.get_files_status('/p4/dir', '/p4/file_1',
                                               '/p4/file_2', '/p4/file_3',
                                               '/some_path/not_in_client',
                                               '/p4/unknown_file')

            expected = [('/p4/dir/child_1', 'add', None),
                        ('/p4/dir/child_2', None, 'add'),
                        ('/p4/file_1', 'add', 'edit'),
                        ('/p4/file_2', 'delete', 'add'),
                        ('/p4/file_3', 'delete', None)]

            self.assertListEqual(list(result), expected)
コード例 #5
0
 def test_get_last_synced_changelist(self):
     ''' describe should return changelist description'''
     with mock_p4() as mock:
         mock.add_changelist('test_changelist', ('/p4/file_1', 'rev 1'))
         cl_number = mock.add_changelist('test_changelist',
                                         ('/p4/file_1', 'rev 2'))
         self._p4.sync()
         self.assertEqual(self._p4.get_last_synced_changelist(), cl_number)
コード例 #6
0
    def test_delete(self):
        ''' deletes should delete files '''
        with mock_p4() as mock:
            mock.add_changelist('test changelist', ('/p4/file_1', 'rev 1'),
                                ('/p4/file_2', 'rev 1'))
            self._p4.sync()
            cl_number = self._p4.get_or_create_changelist('test_cl')
            self.assertIsNotNone(cl_number)

            self.assertTrue(self._p4.delete(cl_number, '/p4/file_1'))
            self._assert_action_is('/p4/file_1', 'delete')
            self.assertFalse(os.path.exists('/p4/file_1'))
            self.assertTrue(self._p4.submit(cl_number))
            self.assertFalse(self._p4.delete(cl_number, '/p4/file_2'))
            self.assertFalse(self._p4.delete('9999999', '/p4/file_2'))
コード例 #7
0
    def test_sync(self):
        ''' describe should return changelist description'''
        with mock_p4() as mock:
            rev_1 = mock.add_changelist('test_changelist',
                                        ('/p4/file_1', 'rev 1'),
                                        ('/p4/file_2', 'rev 1'),
                                        ('/p4/file_3', 'rev 1'))
            rev_2 = mock.add_changelist('test_changelist',
                                        ('/p4/file_1', 'rev 2'),
                                        ('/p4/file_2', 'rev 2'),
                                        ('/p4/file_3', 'rev 2'))
            mock.add_changelist('test_changelist', ('/p4/file_2', None),
                                ('/p4/file_3', 'rev 3'))
            self._p4.sync(rev_1)
            self._p4.sync()

            self.assertTrue(os.path.exists('/p4/file_1'))
            self.assertFalse(os.path.exists('/p4/file_2'))
            self.assertTrue(os.path.exists('/p4/file_3'))

            with open('/p4/file_1', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 2')

            with open('/p4/file_3', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 3')

            self._p4.sync('/p4/file_3', rev_2)

            with open('/p4/file_1', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 2')

            with open('/p4/file_3', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 2')

            self._p4.sync(cl_number=rev_1)

            self.assertTrue(os.path.exists('/p4/file_1'))
            self.assertTrue(os.path.exists('/p4/file_2'))
            self.assertTrue(os.path.exists('/p4/file_3'))

            with open('/p4/file_1', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 1')

            with open('/p4/file_2', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 1')

            with open('/p4/file_3', 'r') as file_content:
                self.assertEqual(file_content.read(), 'rev 1')
コード例 #8
0
    def test_revert_unchanged(self):
        ''' should rever only files in specified changelist that have not changed '''
        with mock_p4() as mock:
            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev 1'),
                                ('/p4/file_2', 'rev 1'))

            self._p4.sync()
            changelist = self._p4.get_or_create_changelist('test changelist')

            self._p4.edit(changelist, '/p4/file_1')
            self._p4.edit(changelist, '/p4/file_2')

            with open('/p4/file_1', 'w') as file_content:
                file_content.write('rev 2')

            self.assertTrue(self._p4.revert_unchanged(changelist))

            self._assert_action_is('/p4/file_1', None)
            self._assert_action_is('/p4/file_2', None)
コード例 #9
0
    def test_edit(self):
        ''' edit should open correct files for edit'''
        with mock_p4() as mock:
            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev_1'),
                                ('/p4/file_2', 'rev_1'))

            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev_1'),
                                ('/p4/file_2', None))
            self._p4.sync()

            cl_number = self._p4.get_or_create_changelist('test changelist')
            self.assertTrue(
                self._p4.edit(cl_number, '/p4/file_1', '/p4/file_2'))

            self._assert_action_is('/p4/file_1', 'edit')
            self._assert_action_is('/p4/file_2', None)

            self.assertTrue(self._p4.submit(cl_number))
            self.assertFalse(self._p4.edit(cl_number, '/p4/file_1'))
            self.assertFalse(self._p4.edit(cl_number, '/p4/file_1'))
            self.assertFalse(self._p4.edit(cl_number, '/p4/file_2'))
コード例 #10
0
    def test_clean_workspace(self):
        ''' clean_workspace should revert all files and delete pending changelist '''
        with mock_p4() as mock:
            mock.add_changelist('test changelist', ('/p4/file_1', 'rev_1'),
                                ('/p4/file_2', 'rev_2'),
                                ('/p4/file_3', 'rev_1'))
            self._p4.sync()

            cl_number = self._p4.get_or_create_changelist('test changelist')
            self._p4.edit(cl_number, '/p4/file_1')

            cl_number = self._p4.get_or_create_changelist('test changelist 2')
            self._p4.edit(cl_number, '/p4/file_2')

            self.assertTrue(self._p4.clean_workspace())
            pending_cls = self._p4.get_pending_changelists()

            self.assertTrue(len(list(pending_cls)) == 0)
            self._assert_action_is('/p4/file_1', None)
            self._assert_action_is('/p4/file_2', None)
            self._assert_action_is('/p4/file_3', None)
コード例 #11
0
    def test_is_file_versionned(self):
        ''' describe should return changelist description'''
        with mock_p4() as mock:
            mock.add_changelist('test_changelist', ('/p4/file_1', 'rev 1'),
                                ('/p4/file_2', 'rev 1'),
                                ('/p4/file_3', 'rev 1'))

            mock.add_changelist('test_changelist', ('/p4/file_2', None),
                                ('/p4/file_3', None))

            mock.add_changelist('test_changelist', ('/p4/file_3', 'recreated'))

            self._p4.sync()
            nimp.tests.utils.create_file('/p4/file_4', 'rev 1')

            self.assertTrue(self._p4.is_file_versioned('/p4/file_1'))
            self.assertFalse(self._p4.is_file_versioned('/p4/file_2'))
            self.assertTrue(self._p4.is_file_versioned('/p4/file_3'))
            self.assertFalse(self._p4.is_file_versioned('/p4/file_4'))