testing/mozbase/manifestdestiny/tests/test_convert_directory.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
    13 from manifestparser import ManifestParser
    14 from StringIO import StringIO
    16 here = os.path.dirname(os.path.abspath(__file__))
    18 class TestDirectoryConversion(unittest.TestCase):
    19     """test conversion of a directory tree to a manifest structure"""
    21     def create_stub(self, directory=None):
    22         """stub out a directory with files in it"""
    24         files = ('foo', 'bar', 'fleem')
    25         if directory is None:
    26             directory = tempfile.mkdtemp()
    27         for i in files:
    28             file(os.path.join(directory, i), 'w').write(i)
    29         subdir = os.path.join(directory, 'subdir')
    30         os.mkdir(subdir)
    31         file(os.path.join(subdir, 'subfile'), 'w').write('baz')
    32         return directory
    34     def test_directory_to_manifest(self):
    35         """
    36         Test our ability to convert a static directory structure to a
    37         manifest.
    38         """
    40         # create a stub directory
    41         stub = self.create_stub()
    42         try:
    43             stub = stub.replace(os.path.sep, "/")
    44             self.assertTrue(os.path.exists(stub) and os.path.isdir(stub))
    46             # Make a manifest for it
    47             manifest = convert([stub])
    48             self.assertEqual(str(manifest),
    49 """[%(stub)s/bar]
    50 subsuite = 
    52 [%(stub)s/fleem]
    53 subsuite = 
    55 [%(stub)s/foo]
    56 subsuite = 
    58 [%(stub)s/subdir/subfile]
    59 subsuite = 
    61 """ % dict(stub=stub))
    62         except:
    63             raise
    64         finally:
    65             shutil.rmtree(stub) # cleanup
    67     def test_convert_directory_manifests_in_place(self):
    68         """
    69         keep the manifests in place
    70         """
    72         stub = self.create_stub()
    73         try:
    74             ManifestParser.populate_directory_manifests([stub], filename='manifest.ini')
    75             self.assertEqual(sorted(os.listdir(stub)),
    76                              ['bar', 'fleem', 'foo', 'manifest.ini', 'subdir'])
    77             parser = ManifestParser()
    78             parser.read(os.path.join(stub, 'manifest.ini'))
    79             self.assertEqual([i['name'] for i in parser.tests],
    80                              ['subfile', 'bar', 'fleem', 'foo'])
    81             parser = ManifestParser()
    82             parser.read(os.path.join(stub, 'subdir', 'manifest.ini'))
    83             self.assertEqual(len(parser.tests), 1)
    84             self.assertEqual(parser.tests[0]['name'], 'subfile')
    85         except:
    86             raise
    87         finally:
    88             shutil.rmtree(stub)
    90     def test_manifest_ignore(self):
    91         """test manifest `ignore` parameter for ignoring directories"""
    93         stub = self.create_stub()
    94         try:
    95             ManifestParser.populate_directory_manifests([stub], filename='manifest.ini', ignore=('subdir',))
    96             parser = ManifestParser()
    97             parser.read(os.path.join(stub, 'manifest.ini'))
    98             self.assertEqual([i['name'] for i in parser.tests],
    99                              ['bar', 'fleem', 'foo'])
   100             self.assertFalse(os.path.exists(os.path.join(stub, 'subdir', 'manifest.ini')))
   101         except:
   102             raise
   103         finally:
   104             shutil.rmtree(stub)
   106     def test_pattern(self):
   107         """test directory -> manifest with a file pattern"""
   109         stub = self.create_stub()
   110         try:
   111             parser = convert([stub], pattern='f*', relative_to=stub)
   112             self.assertEqual([i['name'] for i in parser.tests],
   113                              ['fleem', 'foo'])
   115             # test multiple patterns
   116             parser = convert([stub], pattern=('f*', 's*'), relative_to=stub)
   117             self.assertEqual([i['name'] for i in parser.tests],
   118                              ['fleem', 'foo', 'subdir/subfile'])
   119         except:
   120             raise
   121         finally:
   122             shutil.rmtree(stub)
   124     def test_update(self):
   125         """
   126         Test our ability to update tests from a manifest and a directory of
   127         files
   128         """
   130         # boilerplate
   131         tempdir = tempfile.mkdtemp()
   132         for i in range(10):
   133             file(os.path.join(tempdir, str(i)), 'w').write(str(i))
   135         # otherwise empty directory with a manifest file
   136         newtempdir = tempfile.mkdtemp()
   137         manifest_file = os.path.join(newtempdir, 'manifest.ini')
   138         manifest_contents = str(convert([tempdir], relative_to=tempdir))
   139         with file(manifest_file, 'w') as f:
   140             f.write(manifest_contents)
   142         # get the manifest
   143         manifest = ManifestParser(manifests=(manifest_file,))
   145         # All of the tests are initially missing:
   146         paths = [str(i) for i in range(10)]
   147         self.assertEqual([i['name'] for i in manifest.missing()],
   148                          paths)
   150         # But then we copy one over:
   151         self.assertEqual(manifest.get('name', name='1'), ['1'])
   152         manifest.update(tempdir, name='1')
   153         self.assertEqual(sorted(os.listdir(newtempdir)),
   154                         ['1', 'manifest.ini'])
   156         # Update that one file and copy all the "tests":
   157         file(os.path.join(tempdir, '1'), 'w').write('secret door')
   158         manifest.update(tempdir)
   159         self.assertEqual(sorted(os.listdir(newtempdir)),
   160                         ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'manifest.ini'])
   161         self.assertEqual(file(os.path.join(newtempdir, '1')).read().strip(),
   162                         'secret door')
   164         # clean up:
   165         shutil.rmtree(tempdir)
   166         shutil.rmtree(newtempdir)
   169 if __name__ == '__main__':
   170     unittest.main()

mercurial