def test_common_path_when_duplicate_entries_of_single_path(self):
     d = PathList()
     files = [
         "/users/joebloggs/tmp/foo.txt", "/users/joebloggs/tmp/foo.txt"
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/users/joebloggs/tmp/foo.txt"))
 def test_next_fails_after_last(self):
     d = PathList()
     d.add("/file1", "/file2", "/file3")
     next(d)
     next(d)
     next(d)
     with self.assertRaises(StopIteration):
         next(d)
 def test_common_path_when_one_path_is_the_common_path(self):
     d = PathList()
     files = [
         "/users/joebloggs/tmp",
         "/users/joebloggs/tmp/bolly/operation",
         "/users/joebloggs/tmp/stay/go",
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/users/joebloggs/tmp"))
 def test_common_path(self):
     d = PathList()
     files = [
         "/users/joebloggs/tmp/foobar/test",
         "/users/joebloggs/tmp/baz/fripp",
         "/users/joebloggs/tmp/elephant/corner",
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/users/joebloggs/tmp"))
 def test_common_path_when_common_prefix_in_filename(self):
     d = PathList()
     files = [
         "/users/joebloggs/tmp/dissention/perfect",
         "/users/joebloggs/tmp/disagreement/crimson",
         "/users/joebloggs/tmp/diatribe/belew",
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/users/joebloggs/tmp"))
 def test_common_different_drive_letter(self):
     d = PathList()
     files = [
         "D:/users/joebloggs/tmp/foo.txt",
         "D:/users/joebloggs/tmp/modelman.jpg",
         "C:/users/joebloggs/tmp/ration.cpp",
         "C:/users/joebloggs/tmp/bill.project",
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/"))
 def test_common_path_when_lowest_path_is_the_common_path(self):
     d = PathList()
     files = [
         "/users/joebloggs/tmp/foo.txt",
         "/users/joebloggs/tmp/modelman.jpg",
         "/users/joebloggs/tmp/ration.cpp",
         "/users/joebloggs/tmp/bill.project",
     ]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/users/joebloggs/tmp"))
 def test_glob_when_files_dont_match(self):
     glob.populate(self.other_files_on_disk)
     d = PathList()
     file = "/some/file.*.exr"
     d.add(file)
     d.glob()
     self.assertEqual(len(d), 0)
 def test_remove_one_missing_file(self):
     d = PathList()
     files = ["/tmp/missing.txt", "/tmp/foo.txt", "/tmp/bar.txt"]
     d.add(*files)
     self.assertEqual(len(d), 3)
     d.remove_missing()
     self.assertEqual(len(d), 2)
 def test_remove_when_all_files_missing(self):
     d = PathList()
     files = ["/tmp/missing.txt", "/tmp/missing2.txt", "/tmp/missing3.txt"]
     d.add(*files)
     self.assertEqual(len(d), 3)
     d.remove_missing()
     self.assertFalse(d)
 def test_next_reset_after_add(self):
     d = PathList()
     d.add("/file1", "/file2", "/file3")
     next(d)
     next(d)
     d.add("/file4")
     self.assertEqual(next(d), Path("/file1"))
 def test_ignore_invalid_glob(self):
     bad_glob = "/path/to/Model[b-a]"
     glob.populate(bad_glob)
     d = PathList()
     d.add(bad_glob)
     d.glob()
     self.assertEqual(list(d)[0].fslash(), bad_glob)
 def test_glob_dedups_when_many_files_match(self):
     glob.populate(self.some_files_on_disk)
     d = PathList()
     files = ["/some/file.*.exr", "/some/*.exr"]
     d.add(*files)
     d.glob()
     self.assertEqual(len(d), 20)
 def test_glob_when_files_match_with_range(self):
     glob.populate(self.some_files_on_disk)
     d = PathList()
     file = "/some/file.000[0-9].exr"
     d.add(file)
     d.glob()
     self.assertEqual(len(d), 9)
 def test_glob_when_files_match_with_question_mark(self):
     glob.populate(self.some_files_on_disk)
     d = PathList()
     file = "/some/file.00?0.exr"
     d.add(file)
     d.glob()
     self.assertEqual(len(d), 2)
 def test_dont_remove_globbable_files(self):
     d = PathList()
     files = [
         "/tmp/foo", "/tmp/missing*", "/tmp/missing.[0-9]",
         "/tmp/missing.????.exr"
     ]
     d.add(*files)
     self.assertEqual(len(d), 4)
     d.remove_missing()
     self.assertEqual(len(d), 4)
 def test_remove_missing_when_dups_given(self):
     d = PathList()
     files = [
         "/tmp/missing", "/tmp/foo", "/tmp/bar", "/tmp/foo",
         "/tmp/missing2", "/tmp/missing"
     ]
     d.add(*files)
     self.assertEqual(len(d), 4)
     d.remove_missing()
     self.assertEqual(len(d), 2)
 def test_init_empty(self):
     d = PathList()
     self.assertEqual(list(d), [])
 def test_populated_list_is_truthy(self):
     self.assertTrue(PathList("/file"))
 def test_common_path_is_slash_when_root(self):
     d = PathList()
     files = ["/users/joebloggs/tmp/foo.txt", "/dev/joebloggs/tmp/foo.txt"]
     d.add(*files)
     self.assertEqual(d.common_path(), Path("/"))
 def test_removes_string(self):
     d = PathList()
     d.add("/a/file1", "/a/file2", "/a/file3")
     d.remove("/a/file2")
     self.assertEqual(len(d), 2)
 def test_adds_strings(self):
     d = PathList()
     d.add("/a/file1", "/a/file2")
     self.assertEqual(len(d), 2)
 def test_init_with_args(self):
     d = PathList("/a/file2", "/a/file3")
     self.assertEqual(len(d), 2)
 def test_empty_list_is_falsy(self):
     self.assertFalse(PathList())
 def test_adds_paths(self):
     d = PathList()
     d.add(Path("/a/file1"), Path("/a/file2"))
     self.assertEqual(len(d), 2)
 def test_common_path_is_none_when_no_entries(self):
     d = PathList()
     self.assertIsNone(d.common_path())
 def test_adds_mix(self):
     d = PathList()
     d.add("/a/file1", "/a/file2", Path("/a/file3"))
     self.assertEqual(len(d), 3)
 def test_unpacking(self):
     d = PathList()
     d.add(Path("/a/file1"), Path("/a/file2"))
     a, b = d
     self.assertEqual(type(a), Path)
 def test_removes_path(self):
     d = PathList()
     d.add("/a/file1", "/a/file2", "/a/file3")
     d.remove(Path("/a/file2"))
     self.assertEqual(len(d), 2)
     self.assertEqual(list(d)[1], Path("/a/file3"))
 def test_glob_leaves_non_existent_unglobbable_entries_untouched(self):
     glob.populate(self.some_files_on_disk[:3])
     d = PathList()
     d.add("/some/file.*.exr", "/other/file1.exr", "/other/file2.exr")
     d.glob()
     self.assertEqual(len(d), 5)