diff --git a/tests/trychange_unittest.py b/tests/trychange_unittest.py index 2ebfd9240..4ee984a85 100755 --- a/tests/trychange_unittest.py +++ b/tests/trychange_unittest.py @@ -40,7 +40,7 @@ class TryChangeUnittest(TryChangeTestsBase): """General trychange.py tests.""" def testMembersChanged(self): members = [ - 'EPILOG', 'EscapeDot', 'GIT', 'GuessVCS', 'GetMungedDiff', 'HELP_STRING', + 'EPILOG', 'Escape', 'GIT', 'GuessVCS', 'GetMungedDiff', 'HELP_STRING', 'InvalidScript', 'NoTryServerAccess', 'PrintSuccess', 'SCM', 'SVN', 'TryChange', 'USAGE', 'breakpad', 'datetime', 'errno', 'gcl', 'gclient_utils', 'getpass', diff --git a/trychange.py b/trychange.py index 602162369..5d73cb71d 100755 --- a/trychange.py +++ b/trychange.py @@ -85,8 +85,11 @@ class NoTryServerAccess(Exception): return self.args[0] + '\n' + HELP_STRING -def EscapeDot(name): - return name.replace('.', '-') +def Escape(name): + """Escapes characters that could interfere with the file system or try job + parsing. + """ + return re.sub(r'[^\w#-]', '_', name) class SCM(object): @@ -378,7 +381,7 @@ def _SendChangeSVN(options): # Diff file current_time = str(datetime.datetime.now()).replace(':', '.') - file_name = (EscapeDot(options.user) + '.' + EscapeDot(options.name) + + file_name = (Escape(options.user) + '.' + Escape(options.name) + '.%s.diff' % current_time) full_path = os.path.join(temp_dir, file_name) gclient_utils.FileWrite(full_path, options.diff, 'wb')