def test_dont_use_names_taken(self): self.assertEqual(name_uniquely('foo.py'), 'foo.py') self.assertEqual( name_uniquely('foo.py', names_taken=['foo.py']), 'foo-1.py') self.assertEqual( name_uniquely('foo.py', names_taken=['foo.py', 'foo-1.py']), 'foo-2.py')
def test_dont_used_proposed_names_taken(self): self.assertEqual(name_uniquely("foo.py", proposed_name="bar.py"), "bar.py") self.assertEqual(name_uniquely("foo.py", names_taken=["bar.py"], proposed_name="bar.py"), "bar-1.py") self.assertEqual( name_uniquely("foo.py", names_taken=["bar.py", "bar-1.py"], proposed_name="bar.py"), "bar-2.py" ) # doesn't matter if path is taken self.assertEqual(name_uniquely("foo.py", names_taken=["foo.py"], proposed_name="bar.py"), "bar.py")
def test_unhide(self): self.assertEqual( name_uniquely('.emacs', unhide=True), 'emacs') self.assertEqual( name_uniquely('._foo', unhide=True), 'foo') self.assertEqual( name_uniquely('_.bar', unhide=True), '1.bar') self.assertEqual( name_uniquely('_', unhide=True), '1')
def test_auto_names_with_no_extension(self): self.assertEqual( name_uniquely( 'foo', names_taken=['foo']), 'foo-1') self.assertEqual( name_uniquely( '', names_taken=['_']), '_-1')
def test_initial_dot_isnt_extension(self): self.assertEqual( name_uniquely( '.emacs', names_taken=['.emacs']), '.emacs-1') # not '-1.emacs' self.assertEqual( name_uniquely( '.mrjob.conf', names_taken=['.mrjob.conf']), '.mrjob-1.conf') # not '-1.mrjob.conf'
def test_unhide_affects_proposed_name(self): # these options aren't used together in practice, but of course # the proposed name is the one we care about if it's given self.assertEqual( name_uniquely( 'foo.py', proposed_name='.hidden.foo.py', unhide=True), 'hidden.foo.py')
def test_dont_used_proposed_names_taken(self): self.assertEqual( name_uniquely('foo.py', proposed_name='bar.py'), 'bar.py') self.assertEqual( name_uniquely('foo.py', names_taken=['bar.py'], proposed_name='bar.py'), 'bar-1.py') self.assertEqual( name_uniquely('foo.py', names_taken=['bar.py', 'bar-1.py'], proposed_name='bar.py'), 'bar-2.py') # doesn't matter if path is taken self.assertEqual( name_uniquely( 'foo.py', names_taken=['foo.py'], proposed_name='bar.py'), 'bar.py')
def _dir_archive_path(self, dir_path): """Assign a path for the archive of *dir_path* but don't actually create anything.""" if dir_path not in self._dir_to_archive_path: # we can check local paths now if not (is_uri(dir_path) or os.path.isdir(dir_path)): raise OSError('%s is not a directory!' % dir_path) name = name_uniquely( dir_path, names_taken=self._dir_archive_names_taken) self._dir_archive_names_taken.add(name) self._dir_to_archive_path[dir_path] = os.path.join( self._get_local_tmp_dir(), 'archives', name + '.tar.gz') return self._dir_to_archive_path[dir_path]
def test_strip_trailing_slash(self): self.assertEqual( name_uniquely('s3://bucket/archive-dir/'), 'archive-dir')
def test_unhide(self): self.assertEqual(name_uniquely('.emacs', unhide=True), 'emacs') self.assertEqual(name_uniquely('._foo', unhide=True), 'foo') self.assertEqual(name_uniquely('_.bar', unhide=True), '1.bar') self.assertEqual(name_uniquely('_', unhide=True), '1')
def test_auto_names_preserve_full_extension(self): self.assertEqual( name_uniquely( 'foo.tar.gz', names_taken=['foo.tar.gz']), 'foo-1.tar.gz')
def test_no_empty_names(self): self.assertEqual(name_uniquely(''), '_')
def test_use_basename_by_default(self): self.assertEqual(name_uniquely('foo/bar.py'), 'bar.py') self.assertEqual(name_uniquely('foo/bar/'), '_')
def test_strip_trailing_os_sep(self): self.assertEqual(name_uniquely(os.path.join('foo', 'bar', '')), 'bar')
def test_auto_names_with_no_extension(self): self.assertEqual(name_uniquely("foo", names_taken=["foo"]), "foo-1") self.assertEqual(name_uniquely("", names_taken=["_"]), "_-1")
def test_empty_proposed_name_same_as_none(self): self.assertEqual(name_uniquely('foo.py', proposed_name=None), 'foo.py') self.assertEqual(name_uniquely('foo.py', proposed_name=''), 'foo.py')
def test_use_basename_by_default(self): self.assertEqual(name_uniquely("foo/bar.py"), "bar.py") self.assertEqual(name_uniquely("foo/bar/"), "_")
def test_no_empty_names(self): self.assertEqual(name_uniquely(""), "_")
def test_auto_names_with_no_extension(self): self.assertEqual(name_uniquely('foo', names_taken=['foo']), 'foo-1') self.assertEqual(name_uniquely('', names_taken=['_']), '_-1')
def test_auto_names_preserve_full_extension(self): self.assertEqual( name_uniquely('foo.tar.gz', names_taken=['foo.tar.gz']), 'foo-1.tar.gz')
def test_empty_proposed_name_same_as_none(self): self.assertEqual(name_uniquely("foo.py", proposed_name=None), "foo.py") self.assertEqual(name_uniquely("foo.py", proposed_name=""), "foo.py")
def test_strip_trailing_os_sep(self): self.assertEqual( name_uniquely(os.path.join('foo', 'bar', '')), 'bar')
def test_dont_use_names_taken(self): self.assertEqual(name_uniquely("foo.py"), "foo.py") self.assertEqual(name_uniquely("foo.py", names_taken=["foo.py"]), "foo-1.py") self.assertEqual(name_uniquely("foo.py", names_taken=["foo.py", "foo-1.py"]), "foo-2.py")
def test_auto_names_preserve_full_extension(self): self.assertEqual(name_uniquely("foo.tar.gz", names_taken=["foo.tar.gz"]), "foo-1.tar.gz")
def test_initial_dot_isnt_extension(self): self.assertEqual(name_uniquely(".emacs", names_taken=[".emacs"]), ".emacs-1") # not '-1.emacs' self.assertEqual( name_uniquely(".mrjob.conf", names_taken=[".mrjob.conf"]), ".mrjob-1.conf" ) # not '-1.mrjob.conf'
def test_strip_trailing_slash(self): self.assertEqual(name_uniquely('s3://bucket/archive-dir/'), 'archive-dir')