266
266
self.assertEqual(expected_dirblocks[1:],
267
267
[[line[0:3] for line in block] for block in result])
269
def assertPathCompare(self, path_less, path_greater):
270
"""check that path_less and path_greater compare correctly."""
271
self.assertEqual(0, osutils.compare_paths_prefix_order(
272
path_less, path_less))
273
self.assertEqual(0, osutils.compare_paths_prefix_order(
274
path_greater, path_greater))
275
self.assertEqual(-1, osutils.compare_paths_prefix_order(
276
path_less, path_greater))
277
self.assertEqual(1, osutils.compare_paths_prefix_order(
278
path_greater, path_less))
280
def test_compare_paths_prefix_order(self):
281
# root before all else
282
self.assertPathCompare("/", "/a")
284
self.assertPathCompare("/a", "/b")
285
self.assertPathCompare("/b", "/z")
286
# high dirs before lower.
287
self.assertPathCompare("/z", "/a/a")
288
# except if the deeper dir should be output first
289
self.assertPathCompare("/a/b/c", "/d/g")
290
# lexical betwen dirs of the same height
291
self.assertPathCompare("/a/z", "/z/z")
292
self.assertPathCompare("/a/c/z", "/a/d/e")
294
# this should also be consistent for no leading / paths
295
# root before all else
296
self.assertPathCompare("", "a")
298
self.assertPathCompare("a", "b")
299
self.assertPathCompare("b", "z")
300
# high dirs before lower.
301
self.assertPathCompare("z", "a/a")
302
# except if the deeper dir should be output first
303
self.assertPathCompare("a/b/c", "d/g")
304
# lexical betwen dirs of the same height
305
self.assertPathCompare("a/z", "z/z")
306
self.assertPathCompare("a/c/z", "a/d/e")
308
def test_path_prefix_sorting(self):
309
"""Doing a sort on path prefix should match our sample data."""
340
sorted(original_paths, key=osutils.path_prefix_key))
341
# using the comparison routine shoudl work too:
344
sorted(original_paths, cmp=osutils.compare_paths_prefix_order))