view tests/test_fetch_exec.py @ 872:a279b5838aaf

test_util: remove self.repo_path, generate new paths each time This solves a problem with startrev tests sporadically failing in ra.get_log() with some kind of svn corruption error. Loading each svn repository in a different place solved that, or at least prevented me from reproducing it. What is interesting is this is the same fixture being loaded each time. Also, before loading the fixture, we take care of removing an existing repository. Loading with the same options twice also failed reproducing the issue. Same thing if the first load only load the svn repository but does not convert it. So, I have absolutely no idea what was wrong, blame python subprocess, subversion or some kind of filesystem write ordering bug.
author Patrick Mezard <patrick@mezard.eu>
date Thu, 19 Apr 2012 18:29:32 +0200
parents 04729f3a3d17
children d741f536f23a
line wrap: on
line source

import test_util

import unittest

from mercurial import node

class TestFetchExec(test_util.TestBase):
    def assertexec(self, ctx, files, isexec=True):
        for f in files:
            self.assertEqual(isexec, 'x' in ctx[f].flags())

    def test_exec(self, stupid=False):
        repo = self._load_fixture_and_fetch('executebit.svndump', stupid=stupid)
        self.assertexec(repo[0], ['text1', 'binary1', 'empty1'], True)
        self.assertexec(repo[0], ['text2', 'binary2', 'empty2'], False)
        self.assertexec(repo[1], ['text1', 'binary1', 'empty1'], False)
        self.assertexec(repo[1], ['text2', 'binary2', 'empty2'], True)

    def test_exec_stupid(self):
        self.test_exec(True)

    def test_empty_prop_val_executable(self, stupid=False):
        repo = self._load_fixture_and_fetch('executable_file_empty_prop.svndump',
                                            stupid=stupid)
        self.assertEqual(node.hex(repo['tip'].node()),
                         '08e6b380bf291b361a418203a1cb9427213cd1fd')
        self.assertEqual(repo['tip']['foo'].flags(), 'x')

    def test_empty_prop_val_executable_stupid(self):
        self.test_empty_prop_val_executable(True)

def suite():
    all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestFetchExec),
          ]
    return unittest.TestSuite(all_tests)