##// END OF EJS Templates
tests: add test showing crash when shelving ghosted rename target...
tests: add test showing crash when shelving ghosted rename target When you `hg rename` a file and then delete the rename target, `hg shelve` will give you a traceback. Note that the shelve succeeds and the shelve is correct, it's just the update to the parent that fails (i.e. to the parent of the commit that was created for the shelve). This can be squashed into the next commit if the reviewer prefers. Differential Revision: https://phab.mercurial-scm.org/D8045

File last commit:

r43346:2372284d default
r44690:ae4d729e default
Show More
__init__.py
57 lines | 1.5 KiB | text/x-python | PythonLexer
# __init__.py - High-level automation interfaces
#
# Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
# no-check-code because Python 3 native.
import pathlib
import secrets
from .aws import AWSConnection
class HGAutomation:
"""High-level interface for Mercurial automation.
Holds global state, provides access to other primitives, etc.
"""
def __init__(self, state_path: pathlib.Path):
self.state_path = state_path
state_path.mkdir(exist_ok=True)
def default_password(self):
"""Obtain the default password to use for remote machines.
A new password will be generated if one is not stored.
"""
p = self.state_path / 'default-password'
try:
with p.open('r', encoding='ascii') as fh:
data = fh.read().strip()
if data:
return data
except FileNotFoundError:
pass
password = secrets.token_urlsafe(24)
with p.open('w', encoding='ascii') as fh:
fh.write(password)
fh.write('\n')
p.chmod(0o0600)
return password
def aws_connection(self, region: str, ensure_ec2_state: bool = True):
"""Obtain an AWSConnection instance bound to a specific region."""
return AWSConnection(self, region, ensure_ec2_state=ensure_ec2_state)