Example #1
0
    def test_set_add_scm_change_localname(self):
        workspace = os.path.join(self.test_root_path, 'ws8')
        cli = RoswsCLI()
        self.assertEqual(0, cli.cmd_init([workspace, self.ros_path]))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        self.assertEqual(1, len(config.get_config_elements()))
        self.assertEqual(os.path.join(self.test_root_path, 'ros'), config.get_config_elements()[0].get_local_name())

        # use a weird absolute localname
        self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, '..', 'ws8', 'hgrepo'), '../hgrepo', '-y', '--hg']))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        self.assertEqual(2, len(config.get_config_elements()))
        self.assertEqual('hgrepo', config.get_config_elements()[1].get_local_name())

        oldcwd = os.getcwd()
        try:
            os.chdir(self.test_root_path)
            # try pointing to a relative dir that also exists elsewhere
            try:
                cli.cmd_set(workspace, ['gitrepo', '../gitrepo', '-y', '--hg'])
                self.fail("Expected SystemExit")
            except SystemExit:
                pass
            # use a weird relative localname
            self.assertEqual(0, cli.cmd_set(workspace, [os.path.join('ws8', 'gitrepo'), '../gitrepo', '-y', '--hg']))
            config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
            self.assertEqual(3, len(config.get_config_elements()))

            self.assertEqual('hgrepo', config.get_config_elements()[1].get_local_name())
            self.assertEqual('gitrepo', config.get_config_elements()[2].get_local_name())
        finally:
            os.chdir(oldcwd)
Example #2
0
 def test_set_add_plain(self):
     workspace = os.path.join(self.test_root_path, 'ws5')
     cli = RoswsCLI()
     self.assertEqual(0, cli.cmd_init([workspace, self.simple_rosinstall]))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(2, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     # detached
     self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'foo'), '-y']))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(3, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     self.assertEqual(False, config.get_config_elements()[2].is_vcs_element())
     self.assertEqual('foo', config.get_config_elements()[2].get_local_name())
     self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), '-y', '--detached']))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(4, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     self.assertEqual(False, config.get_config_elements()[2].is_vcs_element())
     self.assertEqual('foo', config.get_config_elements()[2].get_local_name())
     self.assertEqual(False, config.get_config_elements()[3].is_vcs_element())
     self.assertEqual('hgrepo', config.get_config_elements()[3].get_local_name())
     # turn into scm repo
     self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), '../hgrepo', '-y', '--hg']))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(4, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     self.assertTrue(config.get_config_elements()[3].is_vcs_element())
     self.assertEqual('hgrepo', config.get_config_elements()[3].get_local_name())
Example #3
0
 def test_set_detached(self):
     workspace = os.path.join(self.test_root_path, 'ws4')
     cli = RoswsCLI()
     self.assertEqual(0, cli.cmd_init([workspace, self.simple_rosinstall]))
     self.assertEqual(0, cli.cmd_merge(workspace, [self.simple_changed_vcs_rosinstall, '-y']))
     self.assertEqual(0, cli.cmd_update(workspace, []))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(3, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     self.assertEqual(True, config.get_config_elements()[1].is_vcs_element())
     self.assertEqual('hgrepo', config.get_config_elements()[2].get_local_name())
     self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'gitrepo'), '--detached', '-y']))
     config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
     self.assertEqual(3, len(config.get_config_elements()))
     self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
     self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
     self.assertEqual(False, config.get_config_elements()[1].is_vcs_element())
     self.assertEqual('hgrepo', config.get_config_elements()[2].get_local_name())
Example #4
0
    def test_set_add_scm(self):
        workspace = os.path.join(self.test_root_path, 'ws6')
        cli = RoswsCLI()
        self.assertEqual(0, cli.cmd_init([workspace, self.simple_rosinstall]))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        self.assertEqual(2, len(config.get_config_elements()))
        self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
        self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())

        # scm repo
        self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), '../hgrepo', '-y', '--hg']))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        self.assertEqual(3, len(config.get_config_elements()))
        self.assertEqual('ros', config.get_config_elements()[0].get_local_name())
        self.assertEqual('gitrepo', config.get_config_elements()[1].get_local_name())
        self.assertTrue(config.get_config_elements()[2].is_vcs_element())
        self.assertEqual('hgrepo', config.get_config_elements()[2].get_local_name())
        self.assertFalse(os.path.exists(os.path.join(workspace, 'hgrepo')))

        self.assertEqual(0, cli.cmd_update(workspace, []))
        self.assertTrue(os.path.exists(os.path.join(workspace, 'hgrepo')))

        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertFalse(path_spec is None)
        self.assertEqual(None, path_spec.get_version())
        self.assertEqual(None, path_spec.get_revision())
        self.assertFalse(path_spec.get_current_revision() is None)

        self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), '--version-new=0', '-y']))

        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual('0', path_spec.get_version())
        self.assertFalse(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)
        self.assertEqual(path_spec.get_revision(), path_spec.get_current_revision())

        # change in FS to version 1
        subprocess.check_call(["touch", "hgfixed2.txt"], cwd=os.path.join(workspace, 'hgrepo'))
        subprocess.check_call(["hg", "add", "hgfixed2.txt"], cwd=os.path.join(workspace, 'hgrepo'))
        subprocess.check_call(["hg", "commit", "-m", "2nd"], cwd=os.path.join(workspace, 'hgrepo'))
        self.assertTrue(os.path.exists(os.path.join(workspace, 'hgrepo', 'hgfixed2.txt')))

        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual('0', path_spec.get_version())
        self.assertFalse(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)
        self.assertNotEqual(path_spec.get_revision(), path_spec.get_current_revision())

        # revert FS to spec
        self.assertEqual(0, cli.cmd_update(workspace, []))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual('0', path_spec.get_version())
        self.assertFalse(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)
        self.assertEqual(path_spec.get_revision(), path_spec.get_current_revision())

        # change spec to 1
        self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), '--version-new=1', '-y']))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual('1', path_spec.get_version())
        self.assertFalse(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)
        self.assertNotEqual(path_spec.get_revision(), path_spec.get_current_revision())

        # setting version to ''
        self.assertEqual(0, cli.cmd_set(workspace, [os.path.join(workspace, 'hgrepo'), "--version-new=''", '-y']))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual(None, path_spec.get_version())
        self.assertTrue(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)

        self.assertEqual(0, cli.cmd_update(workspace, []))
        config = rosinstall.multiproject_cmd.get_config(workspace, config_filename='.rosinstall')
        path_spec = config.get_config_elements()[2].get_versioned_path_spec()
        self.assertEqual(None, path_spec.get_version())
        self.assertTrue(path_spec.get_revision() is None)
        self.assertFalse(path_spec.get_current_revision() is None)