python/mozbuild/mozpack/test/test_path.py

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 # This Source Code Form is subject to the terms of the Mozilla Public
     2 # License, v. 2.0. If a copy of the MPL was not distributed with this
     3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
     5 from mozpack.path import (
     6     relpath,
     7     join,
     8     normpath,
     9     dirname,
    10     commonprefix,
    11     basename,
    12     split,
    13     splitext,
    14     basedir,
    15     match,
    16     rebase,
    17 )
    18 import unittest
    19 import mozunit
    20 import os
    23 class TestPath(unittest.TestCase):
    24     def test_relpath(self):
    25         self.assertEqual(relpath('foo', 'foo'), '')
    26         self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar'), '')
    27         self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo'), 'bar')
    28         self.assertEqual(relpath(os.path.join('foo', 'bar', 'baz'), 'foo'),
    29                          'bar/baz')
    30         self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/bar/baz'),
    31                          '..')
    32         self.assertEqual(relpath(os.path.join('foo', 'bar'), 'foo/baz'),
    33                          '../bar')
    34         self.assertEqual(relpath('foo/', 'foo'), '')
    35         self.assertEqual(relpath('foo/bar/', 'foo'), 'bar')
    37     def test_join(self):
    38         self.assertEqual(join('foo', 'bar', 'baz'), 'foo/bar/baz')
    39         self.assertEqual(join('foo', '', 'bar'), 'foo/bar')
    40         self.assertEqual(join('', 'foo', 'bar'), 'foo/bar')
    41         self.assertEqual(join('', 'foo', '/bar'), '/bar')
    43     def test_normpath(self):
    44         self.assertEqual(normpath(os.path.join('foo', 'bar', 'baz',
    45                                                '..', 'qux')), 'foo/bar/qux')
    47     def test_dirname(self):
    48         self.assertEqual(dirname('foo/bar/baz'), 'foo/bar')
    49         self.assertEqual(dirname('foo/bar'), 'foo')
    50         self.assertEqual(dirname('foo'), '')
    51         self.assertEqual(dirname('foo/bar/'), 'foo/bar')
    53     def test_commonprefix(self):
    54         self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'),
    55                                        'foo/qux', 'foo/baz/qux']), 'foo/')
    56         self.assertEqual(commonprefix([os.path.join('foo', 'bar', 'baz'),
    57                                        'foo/qux', 'baz/qux']), '')
    59     def test_basename(self):
    60         self.assertEqual(basename('foo/bar/baz'), 'baz')
    61         self.assertEqual(basename('foo/bar'), 'bar')
    62         self.assertEqual(basename('foo'), 'foo')
    63         self.assertEqual(basename('foo/bar/'), '')
    65     def test_split(self):
    66         self.assertEqual(split(os.path.join('foo', 'bar', 'baz')),
    67                          ['foo', 'bar', 'baz'])
    69     def test_splitext(self):
    70         self.assertEqual(splitext(os.path.join('foo', 'bar', 'baz.qux')),
    71                          ('foo/bar/baz', '.qux'))
    73     def test_basedir(self):
    74         foobarbaz = os.path.join('foo', 'bar', 'baz')
    75         self.assertEqual(basedir(foobarbaz, ['foo', 'bar', 'baz']), 'foo')
    76         self.assertEqual(basedir(foobarbaz, ['foo', 'foo/bar', 'baz']),
    77                          'foo/bar')
    78         self.assertEqual(basedir(foobarbaz, ['foo/bar', 'foo', 'baz']),
    79                          'foo/bar')
    80         self.assertEqual(basedir(foobarbaz, ['foo', 'bar', '']), 'foo')
    81         self.assertEqual(basedir(foobarbaz, ['bar', 'baz', '']), '')
    83     def test_match(self):
    84         self.assertTrue(match('foo', ''))
    85         self.assertTrue(match('foo/bar/baz.qux', 'foo/bar'))
    86         self.assertTrue(match('foo/bar/baz.qux', 'foo'))
    87         self.assertTrue(match('foo', '*'))
    88         self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
    89         self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
    90         self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
    91         self.assertTrue(match('foo/bar/baz.qux', 'foo/bar/*'))
    92         self.assertTrue(match('foo/bar/baz.qux', 'foo/*/baz.qux'))
    93         self.assertTrue(match('foo/bar/baz.qux', '*/bar/baz.qux'))
    94         self.assertTrue(match('foo/bar/baz.qux', '*/*/baz.qux'))
    95         self.assertTrue(match('foo/bar/baz.qux', '*/*/*'))
    96         self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*'))
    97         self.assertTrue(match('foo/bar/baz.qux', 'foo/*/*.qux'))
    98         self.assertTrue(match('foo/bar/baz.qux', 'foo/b*/*z.qux'))
    99         self.assertTrue(match('foo/bar/baz.qux', 'foo/b*r/ba*z.qux'))
   100         self.assertFalse(match('foo/bar/baz.qux', 'foo/b*z/ba*r.qux'))
   101         self.assertTrue(match('foo/bar/baz.qux', '**'))
   102         self.assertTrue(match('foo/bar/baz.qux', '**/baz.qux'))
   103         self.assertTrue(match('foo/bar/baz.qux', '**/bar/baz.qux'))
   104         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/baz.qux'))
   105         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux'))
   106         self.assertTrue(match('foo/bar/baz.qux', '**/foo/bar/baz.qux'))
   107         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/baz.qux'))
   108         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/*.qux'))
   109         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/*.qux'))
   110         self.assertTrue(match('foo/bar/baz.qux', '**/*.qux'))
   111         self.assertFalse(match('foo/bar/baz.qux', '**.qux'))
   112         self.assertFalse(match('foo/bar', 'foo/*/bar'))
   113         self.assertTrue(match('foo/bar/baz.qux', 'foo/**/bar/**'))
   114         self.assertFalse(match('foo/nobar/baz.qux', 'foo/**/bar/**'))
   115         self.assertTrue(match('foo/bar', 'foo/**/bar/**'))
   117     def test_rebase(self):
   118         self.assertEqual(rebase('foo', 'foo/bar', 'bar/baz'), 'baz')
   119         self.assertEqual(rebase('foo', 'foo', 'bar/baz'), 'bar/baz')
   120         self.assertEqual(rebase('foo/bar', 'foo', 'baz'), 'bar/baz')
   122 if __name__ == '__main__':
   123     mozunit.main()

mercurial