コード例 #1
0
ファイル: test.py プロジェクト: msthippo/rover
    def test_svn_exclude_naive(self):

        self.list_contents = {}
        self.list_contents['acme/project9/module'] = ['pk', 'cli', 'rab', 'api']

        r = Rover('')
        r.config_items = _list_as_rover_items(
                         [('acme/project9/module', 'HEAD', 'svn', 'http://foo.com'),
                          ('acme/project9/module/rab', 'HEAD', 'svn', 'http://bar.com')])
        r.resolve()
        
        expected = _list_as_rover_items(
                   [('acme/project9/module/pk', 'HEAD', 'svn', 'http://foo.com'),
                    ('acme/project9/module/cli', 'HEAD', 'svn', 'http://foo.com'),
                    ('acme/project9/module/api', 'HEAD', 'svn', 'http://foo.com'),
                    ('acme/project9/module/rab', 'HEAD', 'svn', 'http://bar.com')])
       
        self.assertEquals(r.config_items, expected)
コード例 #2
0
ファイル: test.py プロジェクト: msthippo/rover
class RoverResolverTestCase(unittest.TestCase):

    def setUp(self):
        self.rover = Rover('')


    def test_is_not_destructive(self):
        """
        tests that if the config has no overrides, that it comes
        out exactly as input
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9/module/api','project9_dev_03_b','cvs'),
            ('acme/project9/module/pk','ACME_LIVE_T','cvs'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(input, output)

    def test_overrides_are_removed(self):
        """
        tests that overridden whole directories are removed
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9','project9_foo_b','cvs'),
            ])

        expected = _list_as_rover_items([
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9','project9_foo_b','cvs'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(expected, output)

    def test_dir_overrides_subdir_but_not_file(self):
        """
        tests that a directory checked out later overrides subdirectories
        of itself that are checked out earlier. also checks that directories
        whose name is a prefix of a file do not override the checkout for
        that file
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9','project9_foo_b','cvs'),
            ('acme/project9/module.conf','bar','cvs'),
            ('acme/project9/module/api','project9_dev_03_b','cvs'),
            ('acme/project9/module','project9_module_b','cvs'),
            ])

        expected = _list_as_rover_items([
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9 !acme/project9/module !acme/project9/module/api !acme/project9/module.conf','project9_foo_b','cvs'),
            ('acme/project9/module.conf','bar','cvs'),
            ('acme/project9/module','project9_module_b','cvs'),
            ])
       
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(expected, output)

    def test_dir_overrides_file_in_dir(self):
        """
        tests that a directory checked out later overrides a single
        file checked out that lives in that directory
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9','project9_foo_b','cvs'),
            ('acme/project9/module.conf','bar','cvs'),
            ('acme/project9/module/api','project9_dev_03_b','cvs'),
            ('acme/project9/module/pk','ACME_LIVE_T','cvs'),
            ('acme/project9','project9_module_b','cvs'),
            ])

        expected = _list_as_rover_items([
            ('acme/app','HEAD','cvs'),
            ('acme/framework','HEAD','cvs'),
            ('acme/project9','project9_module_b','cvs'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(expected, output)
    
    def test_works_with_cvs_excludes(self):
        """
        tests that modules are replaced correctly, even in the presence
        of cvs excludes
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs', ''),
            ('acme/app','HEAD','cvs', ''),
            ('acme/framework','HEAD','cvs', ''),
            ('acme/project9 !acme/project9/module/api','project9_foo_b','cvs', ''),
            ('acme/project9/module.conf','bar','cvs', ''),
            ('acme/project9/module/api','project9_dev_03_b','cvs', ''),
            ('acme/project9/module/pk','ACME_LIVE_T','cvs', ''),
            ('acme/project9 !acme/project9/module/rab','project9_module_b','cvs', ''),
            ])

        expected = _list_as_rover_items([
            ('acme/app','HEAD','cvs', ''),
            ('acme/framework','HEAD','cvs', ''),
            ('acme/project9 !acme/project9/module/rab','project9_module_b','cvs', ''),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(expected, output)

    def test_is_not_destructive_with_cvs_exclude_self(self):
        """
        test that a child module does not cause a parent module to be replaced
        if the parent module excludes a match of the child module
        """

        input = _list_as_rover_items([
            ('acme !acme/foo/bar','HEAD','cvs', ''),
            ('acme/foo/bar','HEAD','cvs', ''),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(input, output)
    
    def test_is_not_destructive_with_cvs_exclude_parent(self):
        """
        test that a child module does not cause a parent module to be replaced
        if the parent module excludes a match of the child module
        """

        input = _list_as_rover_items([
            ('acme !acme/foo/bar/baz','HEAD','cvs', ''),
            ('acme/foo/bar','HEAD','cvs', ''),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(input, output)
    
    def test_works_with_svn_and_cvs(self):
        """
        tests that overrides happen correctly when cvs and svn checkouts are mixed
        """

        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/framework','HEAD','svn', 'http://example.com/trunk'),
            ('acme/project9/module/api','project9_dev_03_b','svn', 'http://example.com/trunk'),
            ])

        expected = _list_as_rover_items([
            ('acme/project9 !acme/project9/module/api','HEAD','cvs'),
            ('acme/framework','HEAD','svn', 'http://example.com/trunk'),
            ('acme/project9/module/api','project9_dev_03_b','svn', 'http://example.com/trunk'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(input, output)

    def test_only_excludes_once(self):
        """
        tests that excludes only get added to the checkout path once
        """

        input = _list_as_rover_items([
            ('acme/project9', 'HEAD', 'cvs'),
            ('acme/project9/etc', 'foo_b', 'cvs'),
            ('acme/project9/etc', 'bar_b', 'cvs'),
            ])

        expected = _list_as_rover_items([
            ('acme/project9 !acme/project9/etc','HEAD','cvs'),
            ('acme/project9/etc', 'bar_b', 'cvs'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover.config_items

        self.assertEquals(expected, output)

    def test_reports_clobbers(self):
        """
        tests that clobbered files are properly detected and reported
        """

        input = _list_as_rover_items([
            ('acme/project9', 'HEAD', 'cvs'),
            ('acme/project9/etc', 'foo_b', 'cvs'),
            ('acme/project9/etc', 'bar_b', 'cvs'),
            ])

        expected = _list_as_rover_items([
            ('acme/project9 !acme/project9/etc','HEAD','cvs'),
            ('acme/project9/etc', 'bar_b', 'cvs'),
            ])
        
        self.rover.config_items = input
        self.rover.resolve()

        self.assert_(len(self.rover.clobbers) > 0)
コード例 #3
0
ファイル: test.py プロジェクト: msthippo/rover
class RoverCleanTestCases(unittest.TestCase):
    """
    tests that Rover detects and removes the correct directories
    in clean and paranoid mode given a certain rover config
    and directory structure
    """

    def setUp(self):
        self.rover = Rover('')

    def test_removes(self):
        """
        test the basic case.  if a directory (say acme/spin) exists in the 
        local checkout, but is no longer in the rover config, it is removed.
        """
        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ])
        dirs = ['acme', [['app', [['CVS', [], []]], []],
                           ['project9', [['CVS', [], []],
                                   ['rab', [['CVS', [], []]], []]], 
                                  []],
                           ['spin', [['CVS', [], []]], []],
                           ['CVS', [], []]],
                          []]

        os.walk = mock_os_walk_factory(dirs)

        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover._clean()
        expected = ['acme/spin']

        self.assertEquals(expected, output)

    def test_removes_excludes(self):
        """
        tests that when a directory is excluded with a ! it is removed
        """
        input = _list_as_rover_items([
            ('acme/project9 !acme/project9/rab','HEAD','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/spin','HEAD','cvs'),
            ])
        dirs = ['acme', [['app', [['CVS', [], []]], []],
                           ['project9', [['CVS', [], []],
                                   ['rab', [['CVS', [], []]], []]], 
                                  []],
                           ['spin', [['CVS', [], []]], []],
                           ['CVS', [], []]],
                          []]

        os.walk = mock_os_walk_factory(dirs)

        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover._clean()
        expected = ['acme/project9/rab']

        self.assertEquals(expected, output)
    
    def test_preserves_not_excluded(self):
        """
        tests that when a directory is excluded in some lines but
        not in others, it is preserved
        """
        input = _list_as_rover_items([
            ('acme/project9 !acme/project9/rab','HEAD','cvs'),
            ('acme/project9/rab','FOO_BRANCH','cvs'),
            ('acme/app','HEAD','cvs'),
            ('acme/spin','HEAD','cvs'),
            ])
        dirs = ['acme', [['app', [['CVS', [], []]], []],
                           ['project9', [['CVS', [], []],
                                   ['rab', [['CVS', [], []]], []]], 
                                  []],
                           ['spin', [['CVS', [], []]], []],
                           ['CVS', [], []]],
                          []]

        os.walk = mock_os_walk_factory(dirs)

        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover._clean()
        expected = []

        self.assertEquals(expected, output)

    def test_mixed(self):
        """
        test with mixed cvs and svn
        """
        input = _list_as_rover_items([
            ('acme/project9','HEAD','cvs'),
            ('acme/app','HEAD','svn','http://example.com/svn'),
            ])
        dirs = ['acme', [['app', [['.svn', [], []]], []],
                           ['project9', [['CVS', [], []],
                                   ['rab', [['CVS', [], []]], []]], 
                                  []],
                           ['spin', [['.svn', [], []]], []],
                           ['CVS', [], []]],
                          []]

        os.walk = mock_os_walk_factory(dirs)

        self.rover.config_items = input
        self.rover.resolve()
        output = self.rover._clean()
        expected = ['acme/spin']

        self.assertEquals(expected, output)