testing/mozbase/manifestdestiny/tests/test_convert_symlinks.py

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rwxr-xr-x

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #!/usr/bin/env python
     3 # This Source Code Form is subject to the terms of the Mozilla Public
     4 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
     5 # You can obtain one at http://mozilla.org/MPL/2.0/.
     7 import os
     8 import shutil
     9 import tempfile
    10 import unittest
    12 from manifestparser import convert
    14 class TestSymlinkConversion(unittest.TestCase):
    15     """
    16     test conversion of a directory tree with symlinks to a manifest structure
    17     """
    19     # Currently broken: see
    20     # https://bugzilla.mozilla.org/show_bug.cgi?id=902610
    21     # https://bugzilla.mozilla.org/show_bug.cgi?id=920938
    23     def create_stub(self, directory=None):
    24         """stub out a directory with files in it"""
    26         files = ('foo', 'bar', 'fleem')
    27         if directory is None:
    28             directory = tempfile.mkdtemp()
    29         for i in files:
    30             file(os.path.join(directory, i), 'w').write(i)
    31         subdir = os.path.join(directory, 'subdir')
    32         os.mkdir(subdir)
    33         file(os.path.join(subdir, 'subfile'), 'w').write('baz')
    34         return directory
    36     def test_relpath(self):
    37         """test convert `relative_to` functionality"""
    39         oldcwd = os.getcwd()
    40         stub = self.create_stub()
    41         try:
    42             # subdir with in-memory manifest
    43             files = ['../bar', '../fleem', '../foo', 'subfile']
    44             subdir = os.path.join(stub, 'subdir')
    45             os.chdir(subdir)
    46             parser = convert([stub], relative_to='.')
    47             self.assertEqual([i['name'] for i in parser.tests],
    48                              files)
    49         except:
    50             raise
    51         finally:
    52             shutil.rmtree(stub)
    53             os.chdir(oldcwd)
    55     def test_relpath_symlink(self):
    56         """
    57         Ensure `relative_to` works in a symlink.
    58         Not available on windows.
    59         """
    61         symlink = getattr(os, 'symlink', None)
    62         if symlink is None:
    63             return # symlinks unavailable on this platform
    65         oldcwd = os.getcwd()
    66         workspace = tempfile.mkdtemp()
    67         try:
    68             tmpdir = os.path.join(workspace, 'directory')
    69             os.makedirs(tmpdir)
    70             linkdir = os.path.join(workspace, 'link')
    71             symlink(tmpdir, linkdir)
    72             self.create_stub(tmpdir)
    74             # subdir with in-memory manifest
    75             files = ['../bar', '../fleem', '../foo', 'subfile']
    76             subdir = os.path.join(linkdir, 'subdir')
    77             os.chdir(os.path.realpath(subdir))
    78             for directory in (tmpdir, linkdir):
    79                 parser = convert([directory], relative_to='.')
    80                 self.assertEqual([i['name'] for i in parser.tests],
    81                                  files)
    82         finally:
    83             shutil.rmtree(workspace)
    84             os.chdir(oldcwd)
    86         # a more complicated example
    87         oldcwd = os.getcwd()
    88         workspace = tempfile.mkdtemp()
    89         try:
    90             tmpdir = os.path.join(workspace, 'directory')
    91             os.makedirs(tmpdir)
    92             linkdir = os.path.join(workspace, 'link')
    93             symlink(tmpdir, linkdir)
    94             self.create_stub(tmpdir)
    95             files = ['../bar', '../fleem', '../foo', 'subfile']
    96             subdir = os.path.join(linkdir, 'subdir')
    97             subsubdir = os.path.join(subdir, 'sub')
    98             os.makedirs(subsubdir)
    99             linksubdir = os.path.join(linkdir, 'linky')
   100             linksubsubdir = os.path.join(subsubdir, 'linky')
   101             symlink(subdir, linksubdir)
   102             symlink(subdir, linksubsubdir)
   103             for dest in (subdir,):
   104                 os.chdir(dest)
   105                 for directory in (tmpdir, linkdir):
   106                     parser = convert([directory], relative_to='.')
   107                     self.assertEqual([i['name'] for i in parser.tests],
   108                                      files)
   109         finally:
   110             shutil.rmtree(workspace)
   111             os.chdir(oldcwd)
   114 if __name__ == '__main__':
   115     unittest.main()

mercurial