diff options
author | 2016-05-17 15:43:33 +0000 | |
---|---|---|
committer | 2016-05-17 16:19:53 +0000 | |
commit | 3caacf17fadfe6ce491565e0113c7d8bb13b07e5 (patch) | |
tree | bdd6d4e263730d8521c7aaa0b8c787bda6a9d4d1 /tools/build_defs/pkg/path_test.py | |
parent | 5ec6a258d41ef7c2174eb0e0c83ed0fbb7376286 (diff) |
Support top-level packages in pkg_tar
Previously, _short_path_dirname would take a short path like "libfoo.jar",
rfind would return -1, sp[:-1] would return "libfoo.ja", and then
_dest_path would strip that prefix off of "libfoo.jar", leaving just "r".
Also added some unit tests for these functions.
Fixes #1253.
--
MOS_MIGRATED_REVID=122527723
Diffstat (limited to 'tools/build_defs/pkg/path_test.py')
-rw-r--r-- | tools/build_defs/pkg/path_test.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/build_defs/pkg/path_test.py b/tools/build_defs/pkg/path_test.py new file mode 100644 index 0000000000..bb08003457 --- /dev/null +++ b/tools/build_defs/pkg/path_test.py @@ -0,0 +1,84 @@ +# Copyright 2016 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Testing for helper functions.""" + +import imp +import unittest + +pkg_bzl = imp.load_source('pkg_bzl', 'tools/build_defs/pkg/path.bzl') + + +class File(object): + """Mock Skylark File class for testing.""" + + def __init__(self, short_path): + self.short_path = short_path + + +class ShortPathDirnameTest(unittest.TestCase): + """Testing for _short_path_dirname.""" + + def testShortPathDirname(self): + path = pkg_bzl._short_path_dirname(File('foo/bar/baz')) + self.assertEqual('foo/bar', path) + + def testTopLevel(self): + path = pkg_bzl._short_path_dirname(File('baz')) + self.assertEqual('', path) + + +class DestPathTest(unittest.TestCase): + """Testing for _dest_path.""" + + def testDestPath(self): + path = pkg_bzl.dest_path(File('foo/bar/baz'), 'foo') + self.assertEqual('/bar/baz', path) + + def testNoMatch(self): + path = pkg_bzl.dest_path(File('foo/bar/baz'), 'qux') + self.assertEqual('foo/bar/baz', path) + + def testNoStrip(self): + path = pkg_bzl.dest_path(File('foo/bar/baz'), None) + self.assertEqual('/baz', path) + + def testTopLevel(self): + path = pkg_bzl.dest_path(File('baz'), None) + self.assertEqual('baz', path) + + +class ComputeDataPathTest(unittest.TestCase): + """Testing for _data_path_out.""" + + def testComputeDataPath(self): + path = pkg_bzl.compute_data_path(File('foo/bar/baz.tar'), 'a/b/c') + self.assertEqual('foo/bar/a/b/c', path) + + def testAbsolute(self): + path = pkg_bzl.compute_data_path(File('foo/bar/baz.tar'), '/a/b/c') + self.assertEqual('a/b/c', path) + + def testRelative(self): + path = pkg_bzl.compute_data_path(File('foo/bar/baz.tar'), './a/b/c') + self.assertEqual('foo/bar/a/b/c', path) + + def testEmpty(self): + path = pkg_bzl.compute_data_path(File('foo/bar/baz.tar'), './') + self.assertEqual('foo/bar', path) + path = pkg_bzl.compute_data_path(File('foo/bar/baz.tar'), './.') + self.assertEqual('foo/bar', path) + + +if __name__ == '__main__': + unittest.main() |