diff --git a/testing_support/fake_repos.py b/testing_support/fake_repos.py index e9460c8c30..60fff5693d 100755 --- a/testing_support/fake_repos.py +++ b/testing_support/fake_repos.py @@ -156,7 +156,7 @@ class FakeReposBase(object): # It is 1-based too. self.git_hashes = {} self.gitdaemon = None - self.git_pid_file = None + self.git_pid_file_name = None self.git_root = None self.git_dirty = False self.git_port = None @@ -196,16 +196,16 @@ class FakeReposBase(object): logging.debug('Killing git-daemon pid %s' % self.gitdaemon.pid) self.gitdaemon.kill() self.gitdaemon = None - if self.git_pid_file: - pid = int(self.git_pid_file.read()) - self.git_pid_file.close() + if self.git_pid_file_name: + pid = int(open(self.git_pid_file_name).read()) logging.debug('Killing git daemon pid %s' % pid) try: subprocess2.kill_pid(pid) except OSError as e: if e.errno != errno.ESRCH: # no such process raise - self.git_pid_file = None + os.remove(self.git_pid_file_name) + self.git_pid_file_name = None wait_for_port_to_free(self.host, self.git_port) self.git_port = None self.git_base = None @@ -238,7 +238,7 @@ class FakeReposBase(object): self.set_up() if self.gitdaemon: return True - assert self.git_pid_file == None + assert self.git_pid_file_name == None try: subprocess2.check_output(['git', '--version']) except (OSError, subprocess2.CalledProcessError): @@ -249,12 +249,14 @@ class FakeReposBase(object): self.git_port = find_free_port(self.host, 20000) self.git_base = 'git://%s:%d/git/' % (self.host, self.git_port) # Start the daemon. - self.git_pid_file = tempfile.NamedTemporaryFile() + git_pid_file = tempfile.NamedTemporaryFile(delete=False) + self.git_pid_file_name = git_pid_file.name + git_pid_file.close() cmd = ['git', 'daemon', '--export-all', '--reuseaddr', '--base-path=' + self.root_dir, - '--pid-file=' + self.git_pid_file.name, + '--pid-file=' + self.git_pid_file_name, '--port=%d' % self.git_port] if self.host == '127.0.0.1': cmd.append('--listen=' + self.host)