Example #1
0
 def test_create_symlinks_with_commonprefix_cherrypicks(self):
     """Tests that '.a/b' can be included without interfering with '.ab'."""
     source = os.path.join(testing.base_directory(), '.a', 'b')
     target = os.path.join(self.home, '.a', 'b')
     unrelated = os.path.join(testing.base_directory(), '.ab')
     cherrypicks = [os.path.join('.a', 'b')]
     self.filesystem.CreateFile(source)
     self.filesystem.CreateFile(unrelated)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     create_symlinks(testing.base_directory(),
                     self.home,
                     excludes=None,
                     cherrypicks=cherrypicks)
     self.assertTrue(os.path.exists(source))
     self.assertTrue(os.path.exists(target))
     self.assertTrue(os.path.exists(unrelated),
                     msg='Unrelated file was clobbered.')
     self.assertTrue(os.path.islink(os.path.join(self.home, '.ab')),
                     msg='Unrelated file was not symlinked.')
     self.assertTrue(os.path.isdir(os.path.dirname(target)),
                     msg='Target parent directory is no longer a directory.')
     self.assertFalse(os.path.islink(os.path.dirname(target)),
                      msg='Target parent should not be a symlink.')
     self.assertTrue(os.path.islink(target),
                     msg='Target is not a symlink as expected.')
Example #2
0
    def test_create_symlinks_without_cherrypicks(self):
        """Tests that only 'base/.config' is symlinked.

        Without the 'cherrypicks' directive, the entire top level directory will
        be symlinked.
        """
        source = os.path.join(testing.base_directory(),
                              '.config',
                              'Terminal',
                              'terminalrc')
        target = os.path.join(self.home,
                              '.config',
                              'Terminal',
                              'terminalrc')
        self.filesystem.CreateFile(source)
        self.assertTrue(os.path.exists(source))
        self.assertFalse(os.path.exists(target))
        create_symlinks(testing.base_directory(),
                        self.home,
                        excludes=None,
                        cherrypicks=None)
        self.assertTrue(os.path.exists(source))
        self.assertTrue(os.path.exists(target))
        self.assertTrue(os.path.islink(os.path.join(self.home, '.config')))
        self.assertEquals(os.path.join(testing.base_directory(), '.config'),
                          os.readlink(os.path.join(self.home, '.config')))
Example #3
0
 def test_create_symlinks(self):
     """Tests symlinking 'base/.vimrc' to '$HOME/.vimrc'."""
     source = os.path.join(testing.base_directory(), '.vimrc')
     target = os.path.join(self.home, '.vimrc')
     self.filesystem.CreateFile(source)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     create_symlinks(testing.base_directory(), self.home)
     self.assertTrue(os.path.exists(source))
     self.assertTrue(os.path.exists(target))
     self.assertTrue(os.path.islink(target))
     self.assertEquals(source, os.readlink(target))
Example #4
0
 def test_create_symlinks_with_excludes(self):
     """Tests that 'base/.vimrc' can be excluded from symlinking."""
     source = os.path.join(testing.base_directory(), '.vimrc')
     target = os.path.join(self.home, '.vimrc')
     excludes = ['.vimrc']
     self.filesystem.CreateFile(source)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     create_symlinks(testing.base_directory(), self.home, excludes=excludes)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     self.assertFalse(os.path.islink(target))
Example #5
0
 def test_restore_with_excludes(self):
     """Test that excluded files are not restored."""
     source = os.path.join(testing.base_directory(), '.vimrc')
     unrelated = os.path.join(testing.base_directory(), '.git')
     excludes = ['.git']
     self.filesystem.CreateFile(source)
     self.filesystem.CreateFile(unrelated)
     self.assertTrue(os.path.exists(unrelated))
     self.assertFalse(os.path.exists(os.path.join(self.home, '.git')))
     create_symlinks(testing.base_directory(), self.home, excludes=excludes)
     restore(testing.base_directory(), self.home, excludes=excludes)
     self.assertFalse(os.path.exists(os.path.join(self.home, '.git')))
Example #6
0
 def test_restore_file(self):
     """Tests symlinking 'base/.vimrc' to '$HOME/.vimrc' and then restoring
     will undo the action.
     """
     source = os.path.join(testing.base_directory(), '.vimrc')
     target = os.path.join(self.home, '.vimrc')
     self.filesystem.CreateFile(source)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     create_symlinks(testing.base_directory(), self.home)
     restore(testing.base_directory(), self.home)
     self.assertTrue(os.path.exists(source))
     self.assertTrue(os.path.exists(target))
     self.assertFalse(os.path.islink(source))
     self.assertFalse(os.path.islink(target))
Example #7
0
 def _configure(self):
     self.config = config.Config()
     self.config.base = testing.base_directory()
     self.config.directory = testing.main_directory()
     self.config.override = True
     self.config.save(testing.configuration_file())
     self.homekeeper = homekeeper.Homekeeper()
Example #8
0
 def test_restore_directory(self):
     """Tests symlinking directory 'base/.foo' to '$HOME/.foo' and then
     restoring will undo the action.
     """
     source = os.path.join(testing.base_directory(), '.foo', 'bar')
     target = os.path.join(self.home, '.foo', 'bar')
     os.makedirs(source)
     shutil.rmtree(target)
     self.assertTrue(os.path.exists(source))
     self.assertFalse(os.path.exists(target))
     create_symlinks(testing.base_directory(), self.home)
     restore(testing.base_directory(), self.home)
     self.assertTrue(os.path.exists(os.path.join(self.home, '.foo')))
     self.assertFalse(os.path.islink(os.path.join(self.home, '.foo')))
     self.assertTrue(os.path.exists(os.path.join(self.home, '.foo', 'bar')))
     self.assertFalse(os.path.islink(os.path.join(self.home, '.foo', 'bar')))
Example #9
0
    def test_create_symlinks_with_cherrypicks(self):
        """Tests that only 'terminalrc' is symlinked.

        With the 'cherrypicks' directive, only the most specific file or
        directory will be symlinked. That is, '.config/Terminal/terminalrc'
        will be symlinked, but everything else in the target '.config' directory
        will be left alone.

        This test ensures that unrelated files won't be clobbered by symlinking
        the 'terminalrc' file.
        """
        source = os.path.join(testing.base_directory(),
                              '.config',
                              'Terminal',
                              'terminalrc')
        target = os.path.join(self.home,
                              '.config',
                              'Terminal',
                              'terminalrc')
        unrelated = os.path.join(self.home,
                                 '.config',
                                 'user-dirs.dirs')
        cherrypicks = [os.path.join('.config', 'Terminal', 'terminalrc')]
        self.filesystem.CreateFile(source)
        self.filesystem.CreateFile(unrelated)
        self.assertTrue(os.path.exists(source))
        self.assertTrue(os.path.exists(unrelated))
        self.assertFalse(os.path.exists(target))
        create_symlinks(testing.base_directory(),
                        self.home,
                        excludes=None,
                        cherrypicks=cherrypicks)
        self.assertTrue(os.path.exists(source))
        self.assertTrue(os.path.exists(target))
        self.assertTrue(os.path.exists(unrelated),
                        msg='Unrelated file was clobbered.')
        self.assertFalse(os.path.islink(unrelated),
                         msg='Unrelated file was transformed into symlink.')
        self.assertTrue(os.path.isdir(os.path.dirname(target)),
                        msg='Target parent directory is no longer a directory.')
        self.assertFalse(os.path.islink(os.path.dirname(target)),
                         msg='Target parent should not be a symlink.')
        self.assertTrue(os.path.islink(target),
                        msg='Target is not a symlink as expected.')
Example #10
0
 def setUp(self):
     global os, shutil
     self.filesystem, os, shutil = testing.init()
     self.defaults = {
         'base': testing.base_directory(),
         'directory': testing.main_directory(),
         'excludes': ['.git'],
         'override': True
     }
     self.create_config_file()
Example #11
0
 def test_restore_with_cherrypicks(self):
     """Test that restoring cherrypicked files does not clobber other files.
     """
     source = os.path.join(testing.base_directory(), '.a', 'b', 'c')
     unrelated = os.path.join(self.home, '.a', 'd')
     cherrypicks = [os.path.join('.a', 'b', 'c')]
     self.filesystem.CreateFile(source)
     self.filesystem.CreateFile(unrelated)
     self.assertTrue(os.path.exists(unrelated))
     create_symlinks(testing.base_directory(),
                     self.home,
                     cherrypicks=cherrypicks)
     restore(testing.base_directory(),
             self.home,
             cherrypicks=cherrypicks)
     self.assertTrue(os.path.exists(unrelated))
     self.assertFalse(os.path.islink(unrelated))
     self.assertTrue(os.path.exists(os.path.join(self.home, '.a', 'b', 'c')))
     self.assertFalse(os.path.islink(os.path.join(self.home,
                                                  '.a',
                                                  'b',
                                                  'c')))