mercurial/pathutil.py
branchstable
changeset 34980 705d0f2bb677
parent 34965 f445b10dc7fb
child 36647 052351e3e1cd
equal deleted inserted replaced
34979:b64ea7fb9599 34980:705d0f2bb677
   133             return True
   133             return True
   134         except (OSError, error.Abort):
   134         except (OSError, error.Abort):
   135             return False
   135             return False
   136 
   136 
   137 def canonpath(root, cwd, myname, auditor=None):
   137 def canonpath(root, cwd, myname, auditor=None):
   138     '''return the canonical path of myname, given cwd and root'''
   138     '''return the canonical path of myname, given cwd and root
       
   139 
       
   140     >>> def check(root, cwd, myname):
       
   141     ...     a = pathauditor(root, realfs=False)
       
   142     ...     try:
       
   143     ...         return canonpath(root, cwd, myname, a)
       
   144     ...     except error.Abort:
       
   145     ...         return 'aborted'
       
   146     >>> def unixonly(root, cwd, myname, expected='aborted'):
       
   147     ...     if pycompat.iswindows:
       
   148     ...         return expected
       
   149     ...     return check(root, cwd, myname)
       
   150     >>> def winonly(root, cwd, myname, expected='aborted'):
       
   151     ...     if not pycompat.iswindows:
       
   152     ...         return expected
       
   153     ...     return check(root, cwd, myname)
       
   154     >>> winonly(b'd:\\\\repo', b'c:\\\\dir', b'filename')
       
   155     'aborted'
       
   156     >>> winonly(b'c:\\\\repo', b'c:\\\\dir', b'filename')
       
   157     'aborted'
       
   158     >>> winonly(b'c:\\\\repo', b'c:\\\\', b'filename')
       
   159     'aborted'
       
   160     >>> winonly(b'c:\\\\repo', b'c:\\\\', b'repo\\\\filename',
       
   161     ...         b'filename')
       
   162     'filename'
       
   163     >>> winonly(b'c:\\\\repo', b'c:\\\\repo', b'filename', b'filename')
       
   164     'filename'
       
   165     >>> winonly(b'c:\\\\repo', b'c:\\\\repo\\\\subdir', b'filename',
       
   166     ...         b'subdir/filename')
       
   167     'subdir/filename'
       
   168     >>> unixonly(b'/repo', b'/dir', b'filename')
       
   169     'aborted'
       
   170     >>> unixonly(b'/repo', b'/', b'filename')
       
   171     'aborted'
       
   172     >>> unixonly(b'/repo', b'/', b'repo/filename', b'filename')
       
   173     'filename'
       
   174     >>> unixonly(b'/repo', b'/repo', b'filename', b'filename')
       
   175     'filename'
       
   176     >>> unixonly(b'/repo', b'/repo/subdir', b'filename', b'subdir/filename')
       
   177     'subdir/filename'
       
   178     '''
   139     if util.endswithsep(root):
   179     if util.endswithsep(root):
   140         rootsep = root
   180         rootsep = root
   141     else:
   181     else:
   142         rootsep = root + pycompat.ossep
   182         rootsep = root + pycompat.ossep
   143     name = myname
   183     name = myname