def test_given_epics_release_exists_then_set(self):
        env = dls_environment.environment()

        with patch.dict('os.environ', {'EPICS_RELEASE': "test_release"}, clear=True):
            env.setEpicsFromEnv()

        self.assertEqual(env.epics, "test_release")
Example #2
0
    def test_given_neither_exists_then_set_default(self):
        env = dls_environment.environment()

        with patch.dict('os.environ', {'DOESNT_EXIST': "test_release"}, clear=True):
            env.setEpicsFromEnv()

        self.assertEqual(env.epics, "R3.14.12.3")
    def test_given_epics_not_set_then_set_dir_and_return(self, mock_set_epics_from_env):
        env = dls_environment.environment()
        env.epics = ""

        env.epicsVerDir()

        mock_set_epics_from_env.assert_called_once_with()
    def test_given_epics_version_without_R_and_match_then_set(self, mock_set_epics):
        env = dls_environment.environment()
        epics_version = "3.14.8.2"

        env.check_epics_version(epics_version)

        mock_set_epics.assert_called_once_with("R" + epics_version)
    def test_given_neither_exists_then_set_default(self):
        env = dls_environment.environment()

        with patch.dict('os.environ', {'DOESNT_EXIST': "test_release"}, clear=True):
            env.setEpicsFromEnv()

        self.assertEqual(env.epics, "R3.14.12.3")
Example #6
0
    def test_given_epics_version_without_R_and_match_then_set(self, mock_set_epics):
        env = dls_environment.environment()
        epics_version = "3.14.8.2"

        env.check_epics_version(epics_version)

        mock_set_epics.assert_called_once_with("R" + epics_version)
Example #7
0
    def test_areas_set(self):
        areas = ["support", "ioc", "matlab", "python", "etc", "tools", "epics"]

        env = dls_environment.environment()

        for area in areas:
            self.assertIn(area, env.areas)
    def test_areas_set(self):
        areas = ["support", "ioc", "matlab", "python", "etc", "tools", "epics"]

        env = dls_environment.environment()

        for area in areas:
            self.assertIn(area, env.areas)
    def test_given_epics_value_then_epics_set(self):
        epics = "test_epics"
        env = dls_environment.environment()

        env.setEpics(epics)

        self.assertEqual("test_epics", env.epics)
def check_releases_valid(releases, parser):
    """
    Check that two releases given and in correct order.

    Args:
        releases(list of str): Releases range requested by user
        parser(:class:`argparse.ArgumentParser`): ArgParse instance to handle
            error

    Raises:
        :class:`argparse.ArgumentParser.error`:
            * If one release given: To specify just start or just end point,
                use -e or -l flag.
            * If more than two releases given: Only two releases can be
                specified (start and end point)
            * If releases in wrong order: Input releases in correct order
                (<earlier_release> <later_release>)
    """

    if len(releases) == 1:
        parser.error("To specify just start or just end point, use -e or -l"
                     " flag.")
    if len(releases) > 2:
        parser.error("Only two releases can be specified (start and end"
                     " point)")
    elif len(releases) == 2:
        # If start and end points both provided then check that later comes
        # after earlier
        env = environment()
        test_list = env.sortReleases([releases[0], releases[1]])
        if releases[1] == test_list[0] and releases[1] != 'HEAD':
            parser.error("Input releases in correct order (<earlier> <later>)")
Example #11
0
    def test_given_epics_release_exists_then_set(self):
        env = dls_environment.environment()

        with patch.dict('os.environ', {'EPICS_RELEASE': "test_release"}, clear=True):
            env.setEpicsFromEnv()

        self.assertEqual(env.epics, "test_release")
def check_releases_valid(releases, parser):
    """
    Check that two releases given and in correct order.

    Args:
        releases(list of str): Releases range requested by user
        parser(:class:`argparse.ArgumentParser`): ArgParse instance to handle error

    Raises:
        :class:`argparse.ArgumentParser.error`:
            * If one release given: To specify just start or just end point, use -e or -l flag.
            * If more than two releases given: Only two releases can be specified (start and end point)
            * If releases in wrong order: Input releases in correct order (<earlier_release> <later_release>)

    """
    if len(releases) == 1:
        parser.error("To specify just start or just end point, use -e or -l flag.")
    if len(releases) > 2:
        parser.error("Only two releases can be specified (start and end point)")
    elif len(releases) == 2:
        # If start and end points both provided then check that later comes after earlier
        env = environment()
        test_list = env.sortReleases([releases[0], releases[1]])
        if releases[1] == test_list[0] and releases[1] != 'HEAD':
            parser.error("Input releases in correct order (<earlier> <later>)")
Example #13
0
    def test_given_epics_value_then_epics_set(self):
        epics = "test_epics"
        env = dls_environment.environment()

        env.setEpics(epics)

        self.assertEqual("test_epics", env.epics)
Example #14
0
    def test_given_epics_not_set_then_set_dir_and_return(self, mock_set_epics_from_env):
        env = dls_environment.environment()
        env.epics = ""

        env.epicsVerDir()

        mock_set_epics_from_env.assert_called_once_with()
Example #15
0
    def test_given_rhel_then_set(self):

        rhel = "6"

        env = dls_environment.environment(rhel=rhel)

        self.assertEqual(env.rhel, rhel)
    def test_given_version_more_and_support_then_dls_diamond_dir(self, _1):
        expected_path = "/dls_sw/work/dir/support"
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea()

        self.assertEqual(path, expected_path)
    def test_given_epics_then_dls(self):
        area = 'epics'
        expected_path = "/dls_sw/" + area

        env = dls_environment.environment()
        path = env.prodArea(area)

        self.assertEqual(path, expected_path)
    def test_given_version_less_and_support_then_home_diamond_dir(self, _1):
        expected_path = "/home/diamond/dir/work/support"
        env = dls_environment.environment()
        env.epics = "R3.1"

        path = env.devArea()

        self.assertEqual(path, expected_path)
    def test_given_epics_set_then_return_dir(self, mock_set_epics_from_env):
        env = dls_environment.environment()
        env.epics = "dir_test_epics"

        epics = env.epicsVerDir()

        self.assertFalse(mock_set_epics_from_env.call_count)
        self.assertEqual(epics, "dir")
Example #20
0
    def test_given_epics_then_dls(self):
        area = 'epics'
        expected_path = "/dls_sw/" + area

        env = dls_environment.environment()
        path = env.prodArea(area)

        self.assertEqual(path, expected_path)
Example #21
0
    def test_given_epics_set_then_return_dir(self, mock_set_epics_from_env):
        env = dls_environment.environment()
        env.epics = "dir_test_epics"

        epics = env.epicsVerDir()

        self.assertFalse(mock_set_epics_from_env.call_count)
        self.assertEqual(epics, "dir")
Example #22
0
    def test_given_support_then_dls_diamond_dir(self, _1):
        expected_path = "/dls_sw/work/dir/support"
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea()

        self.assertEqual(path, expected_path)
    def test_given_version_more_and_ioc_then_dls_diamond_dir(self, _1):
        area = 'ioc'
        expected_path = "/dls_sw/work/dir/" + area
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
    def test_given_epics_version_with_R_and_not_match_then_raise_error(self, mock_set_epics):
        env = dls_environment.environment()
        epics_version = "R3"
        expected_error_message = "Expected epics version like R3.14.8.2, got: " + epics_version

        try:
            env.check_epics_version(epics_version)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)
    def test_given_version_less_and_tools_then_home_work(self):
        area = "tools"
        expected_path = "/home/work/" + area

        env = dls_environment.environment()
        env.epics = "R3.1"
        path = env.devArea(area)

        self.assertEqual(path, expected_path)
Example #26
0
    def test_given_epics_version_with_R_and_not_match_then_raise_error(self, mock_set_epics):
        env = dls_environment.environment()
        epics_version = "R3"
        expected_error_message = "Expected epics version like R3.14.8.2, got: " + epics_version

        try:
            env.check_epics_version(epics_version)
        except Exception as error:
            self.assertEqual(str(error), expected_error_message)
Example #27
0
    def test_given_python_then_dls_work_common(self):
        area = 'python'
        env = dls_environment.environment()
        expected_path = "/dls_sw/work/common/" + area + "/" + env.rhelVerDir()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
Example #28
0
    def test_given_etc_then_dls_work(self):
        area = 'etc'
        expected_path = "/dls_sw/work/" + area
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
Example #29
0
    def test_given_matlab_then_dls_work_common(self):
        area = 'matlab'
        expected_path = "/dls_sw/work/common/" + area
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
    def test_given_version_less_and_ioc_then_home_diamond_dir(self, _1):
        area = "ioc"
        expected_path = "/home/diamond/dir/work/" + area

        env = dls_environment.environment()
        env.epics = "R3.1"
        path = env.devArea(area)

        self.assertEqual(path, expected_path)
Example #31
0
    def test_given_ioc_then_dls_diamond_dir(self, _1):
        area = 'ioc'
        expected_path = "/dls_sw/work/dir/" + area
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
    def test_given_version_less_and_python_then_home_diamond_common(self):
        area = "python"
        expected_path = "/home/diamond/common/work/" + area

        env = dls_environment.environment()
        env.epics = "R3.1"
        path = env.devArea(area)

        self.assertEqual(path, expected_path)
    def test_given_version_more_and_python_then_dls_work_common(self):
        area = 'python'
        expected_path = "/dls_sw/work/common/" + area
        env = dls_environment.environment()
        env.epics = "R3.15"

        path = env.devArea(area)

        self.assertEqual(path, expected_path)
Example #34
0
    def test_given_python_then_prod(self, mock_dev_area):
        area = 'python'
        expected_path = "test/prod/test/" + area

        env = dls_environment.environment()
        env.devArea.return_value = "test/work/test/" + area
        path = env.prodArea(area)

        self.assertEqual(path, expected_path)
        mock_dev_area.assert_called_once_with(area)
    def test_given_python_then_prod(self, mock_dev_area):
        area = 'python'
        expected_path = "test/prod/test/" + area

        env = dls_environment.environment()
        env.devArea.return_value = "test/work/test/" + area
        path = env.prodArea(area)

        self.assertEqual(path, expected_path)
        mock_dev_area.assert_called_once_with(area)
    def test_sorts_dash_doubles(self):
        env = dls_environment.environment()
        a = '-1-3'
        a_norm = [0, '', 1, 'z', 3, 'z', 0, '', 0, '', 0, '']
        b = '1-3'
        b_norm = [1, 'z', 3, 'z', 0, '', 0, '', 0, '', 0, '']
        c = '-1-2'
        c_norm = [0, '', 1, 'z', 2, 'z', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['-1-2', '-1-3', '1-3'])
    def test_sorts_x_x_dls_y(self):
        env = dls_environment.environment()
        a = '3-10dls12'
        a_norm = [3, 'z', 10, 'z', 0, '', 12, 'z', 0, '', 0, '']
        b = '3-8dls12'
        b_norm = [3, 'z', 8, 'z', 0, '', 12, 'z', 0, '', 0, '']
        c = '3-10dls15'
        c_norm = [3, 'z', 10, 'z', 0, '', 15, 'z', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['3-8dls12', '3-10dls12', '3-10dls15'])
    def test_sorts_singles(self):
        env = dls_environment.environment()
        a = '2'
        a_norm = [2, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']
        b = '3'
        b_norm = [3, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']
        c = '1'
        c_norm = [1, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['1', '2', '3'])
    def test_sorts_letters(self):
        env = dls_environment.environment()
        a = '1-f'
        a_norm = [1, 'z', 0, 'fz', 0, '', 0, '', 0, '', 0, '']
        b = '1-a'
        b_norm = [1, 'z', 0, 'az', 0, '', 0, '', 0, '', 0, '']
        c = '1-1'
        c_norm = [1, 'z', 1, 'z', 0, '', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['1-a', '1-f', '1-1'])
Example #40
0
def get_last_release(releases):
    """
    Returns the most recent release number

    Args:
        releases(list of str): Previous release numbers

    Returns:
        str: Most recent release number

    """
    last_release = environment().sortReleases(releases)[-1].split("/")[-1]
    return last_release
Example #41
0
    def test_sorts_letters(self):
        env = dls_environment.environment()
        a = '1-f'
        a_norm = [1, 'z', 0, 'fz', 0, '', 0, '', 0, '', 0, '']
        b = '1-a'
        b_norm = [1, 'z', 0, 'az', 0, '', 0, '', 0, '', 0, '']
        c = '1-1'
        c_norm = [1, 'z', 1, 'z', 0, '', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['1-a', '1-f', '1-1'])
Example #42
0
    def test_sorts_dash_doubles(self):
        env = dls_environment.environment()
        a = '-1-3'
        a_norm = [0, '', 1, 'z', 3, 'z', 0, '', 0, '', 0, '']
        b = '1-3'
        b_norm = [1, 'z', 3, 'z', 0, '', 0, '', 0, '', 0, '']
        c = '-1-2'
        c_norm = [0, '', 1, 'z', 2, 'z', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['-1-2', '-1-3', '1-3'])
Example #43
0
def get_last_release(releases):
    """
    Returns the most recent release number

    Args:
        releases(list of str): Previous release numbers

    Returns:
        str: Most recent release number

    """
    last_release = environment().sortReleases(releases)[-1].split("/")[-1]
    return last_release
Example #44
0
    def test_sorts_x_x_dls_y(self):
        env = dls_environment.environment()
        a = '3-10dls12'
        a_norm = [3, 'z', 10, 'z', 0, '', 12, 'z', 0, '', 0, '']
        b = '3-8dls12'
        b_norm = [3, 'z', 8, 'z', 0, '', 12, 'z', 0, '', 0, '']
        c = '3-10dls15'
        c_norm = [3, 'z', 10, 'z', 0, '', 15, 'z', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['3-8dls12', '3-10dls12', '3-10dls15'])
Example #45
0
    def test_sorts_singles(self):
        env = dls_environment.environment()
        a = '2'
        a_norm = [2, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']
        b = '3'
        b_norm = [3, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']
        c = '1'
        c_norm = [1, 'z', 0, 'z', 0, '', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]), ['1', '2', '3'])
Example #46
0
    def test_sorts_x_x_x_x_alpha_alpha2_dls_y(self):
        env = dls_environment.environment()
        a = '1-7-12-3alpha1dls16'
        a_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'alpha1', 16, 'z', 0, '', 0, '', 0, '']
        b = '1-7-12-3alpha2dls16'
        b_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'alpha2', 16, 'z', 0, '', 0, '', 0, '']
        c = '1-7-12-3dls16'
        c_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['1-7-12-3alpha1dls16', '1-7-12-3alpha2dls16', '1-7-12-3dls16'])
Example #47
0
    def test_sorts_x_x_x_x_dls_y(self):
        env = dls_environment.environment()
        a = '1-7-12-3dls16-2-13-1'
        a_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 2, 'z', 13, 'z', 1, 'z']
        b = '1-7-12-2dls16-2-13-1'
        b_norm = [1, 'z', 7, 'z', 12, 'z', 2, 'z', 16, 'z', 2, 'z', 13, 'z', 1, 'z']
        c = '1-7-12-3dls16-2-14-1'
        c_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 2, 'z', 14, 'z', 1, 'z']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['1-7-12-2dls16-2-13-1', '1-7-12-3dls16-2-13-1', '1-7-12-3dls16-2-14-1'])
Example #48
0
    def test_sorts_x_x_beta_dls_y(self):
        env = dls_environment.environment()
        a = '4-5beta2dls1-3'
        a_norm = [4, 'z', 5, 'beta2', 0, '', 1, 'z', 3, 'z', 0, '']
        b = '4-5beta1dls1-3'
        b_norm = [4, 'z', 5, 'beta1', 0, '', 1, 'z', 3, 'z', 0, '']
        c = '4-5beta2dls2-3'
        c_norm = [4, 'z', 5, 'beta2', 0, '', 2, 'z', 3, 'z', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['4-5beta1dls1-3', '4-5beta2dls1-3', '4-5beta2dls2-3'])
Example #49
0
    def __init__(self, bld_os, server=None, epics=None):

        assert bld_os in os_list, "Build operating system not supported"

        self.os = bld_os
        self.force = False
        self.area = ""
        self.user = getpass.getuser()
        self.email = lookup_contact_details(self.user)[1]
        self.dls_env = environment()

        if server:
            self.dls_env.check_rhel_version(server)

        if server in SERVER_SHORTCUT.keys():
            server = SERVER_SHORTCUT[server]

        if epics is None:
            # if we have not specifier the epics version
            if server is None:
                # use the default server and epics from env
                self.server = default_server()
            else:
                # set specified server
                self.server = server
            # set epics from server
            if self.epics() not in BUILD_SERVERS[self.os][self.server]:
                self.set_epics(BUILD_SERVERS[self.os][self.server][0])
        else:
            # if we have specified epics version then set it
            self.set_epics(epics)
            if server is None:
                # set server from epics
                self.server = default_server()
                if self.epics() not in BUILD_SERVERS[self.os][self.server]:
                    servers = epics_servers(self.os, self.epics())
                    assert servers, \
                        "No %s build servers exist for epics version %s" % \
                        (self.os, self.epics())
                    self.server = servers[0]
            else:
                # set specified server
                self.server = server

        assert self.server in BUILD_SERVERS[self.os].keys(), \
            "No build server for this OS server: %s" % self.server
        assert self.epics() in BUILD_SERVERS[self.os][self.server], \
            "EPICS version %s not allowed for server %s" % (
                self.epics(),
                self.server)
    def test_sorts_x_x_beta_dls_y(self):
        env = dls_environment.environment()
        a = '4-5beta2dls1-3'
        a_norm = [4, 'z', 5, 'beta2', 0, '', 1, 'z', 3, 'z', 0, '']
        b = '4-5beta1dls1-3'
        b_norm = [4, 'z', 5, 'beta1', 0, '', 1, 'z', 3, 'z', 0, '']
        c = '4-5beta2dls2-3'
        c_norm = [4, 'z', 5, 'beta2', 0, '', 2, 'z', 3, 'z', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['4-5beta1dls1-3', '4-5beta2dls1-3', '4-5beta2dls2-3'])
    def test_sorts_x_x_x_x_dls_y(self):
        env = dls_environment.environment()
        a = '1-7-12-3dls16-2-13-1'
        a_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 2, 'z', 13, 'z', 1, 'z']
        b = '1-7-12-2dls16-2-13-1'
        b_norm = [1, 'z', 7, 'z', 12, 'z', 2, 'z', 16, 'z', 2, 'z', 13, 'z', 1, 'z']
        c = '1-7-12-3dls16-2-14-1'
        c_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 2, 'z', 14, 'z', 1, 'z']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['1-7-12-2dls16-2-13-1', '1-7-12-3dls16-2-13-1', '1-7-12-3dls16-2-14-1'])
    def test_sorts_x_x_x_x_alpha_alpha2_dls_y(self):
        env = dls_environment.environment()
        a = '1-7-12-3alpha1dls16'
        a_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'alpha1', 16, 'z', 0, '', 0, '', 0, '']
        b = '1-7-12-3alpha2dls16'
        b_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'alpha2', 16, 'z', 0, '', 0, '', 0, '']
        c = '1-7-12-3dls16'
        c_norm = [1, 'z', 7, 'z', 12, 'z', 3, 'z', 16, 'z', 0, '', 0, '', 0, '']

        if isinstance(env.normaliseRelease, MagicMock):
            env.normaliseRelease.side_effect = [a_norm, b_norm, c_norm]

        self.assertEqual(env.sortReleases([a, b, c]),
                         ['1-7-12-3alpha1dls16', '1-7-12-3alpha2dls16', '1-7-12-3dls16'])
Example #53
0
    def __init__(self, bld_os, server=None, epics=None):
        if server in server_shortcut.keys():
            server = server_shortcut[server]
        assert bld_os in os_list, "Build operating system not supported"

        self.os = bld_os
        self.force = False
        self.area = ""
        self.user = getpass.getuser()
        self.email = get_email(self.user)
        self.dls_env = environment()

        if epics is None:
            # if we have not specifier the epics version
            if server is None:
                # use the default server and epics from env
                self.server = default_server()
            else:
                # set specified server
                self.server = server
            # set epics from server
            if self.epics() not in build_servers[self.os][self.server]:
                self.set_epics(build_servers[self.os][self.server][0])
        else:
            # if we have specified epics version then set it
            self.set_epics(epics)
            if server is None:
                # set server from epics
                self.server = default_server()
                if self.epics() not in build_servers[self.os][self.server]:
                    servers = epics_servers(self.os, self.epics())
                    assert servers, \
                        "No %s build servers exist for epics version %s" % \
                        (self.os, self.epics())
                    self.server = servers[0]
            else:
                # set specified server
                self.server = server

        assert self.server in build_servers[self.os].keys(), \
            "No build server for this OS server: %s" % self.server
        assert self.epics() in build_servers[self.os][self.server], \
            "EPICS version %s not allowed for server %s" % (
                self.epics(),
                self.server)
Example #54
0
Default epics version and rhel version are the set from you environment,
to specify different versions the epics version or rhel version flags can be used.
The git flag will list releases from the repository.
"""

import os
import sys
import shutil
import platform
import logging
from dls_ade.dls_environment import environment
from dls_ade.argument_parser import ArgParser
from dls_ade import path_functions as pathf
from dls_ade import vcs_git

env = environment()
logging.basicConfig(level=logging.DEBUG)


usage = """
Default <area> is 'support'.

List the releases of <module_name> in the <area> area of prod or the repository if -g is true.
By default uses the epics release number from your environment to work out the area on disk to
look for the module, this can be overridden with the -e flag.
"""


def get_rhel_version():
    """
    Checks if platform is Linux redhat, if so returns base version number from environment (e.g. returns 6 if 6.7),
Example #55
0
from argparse import ArgumentParser
from dls_ade import dls_environment
env = dls_environment.environment()

areas = ["support", "ioc", "matlab", "python", "etc", "tools", "epics"]


class ArgParser(ArgumentParser):
    """
    Makes a custom parser class with area arguments by default.

    """
    def __init__(self, usage_v, supported_areas=None):
        super(ArgParser, self).__init__(description=usage_v)

        if supported_areas is None:
            supported_areas = areas

        area = self.add_mutually_exclusive_group(required=False)
        area.add_argument(
            "-a", "--area", action="store", type=str, default="support", dest="area",
            help="Set area, e.g. " + ", ".join(supported_areas))
        area.add_argument(
            "-p", "--python", action="store_true", dest="python",
            help="Set 'python' area")
        area.add_argument(
            "-i", "--ioc", action="store_true", dest="ioc",
            help="Set 'ioc' area")

    def parse_args(self, args=None, namespace=None):
        """
 def test_normalises_1_7_12beta1dls16_2_13_2(self):
     env = dls_environment.environment()
     self.assertEqual(env.normaliseRelease("1-7-12beta1dls16-2-13"),
                      [1, 'z', 7, 'z', 12, 'beta1', 16, 'z', 2, 'z', 13, 'z'])
Example #57
0
 def test_normalises_1_7_12_1dls_16(self):
     env = dls_environment.environment()
     self.assertEqual(env.normaliseRelease("1-7-12-1dls16"),
                      [1, 'z', 7, 'z', 12, 'z', 1, 'z', 16, 'z', 0, ''])
Example #58
0
    def test_given_epics_then_set(self):
        epics = 'R3.14.8.2'

        env = dls_environment.environment(epics=epics)

        self.assertEqual(env.epics, epics)
Example #59
0
 def test_normalises_4_5_beta2_dls_1_3(self):
     env = dls_environment.environment()
     self.assertEqual(env.normaliseRelease("4-5beta2dls1-3"),
                      [4, 'z', 5, 'beta2', 0, '', 1, 'z', 3, 'z', 0, ''])
Example #60
0
 def test_normalises_1_7_12beta1dls16_2_13_2(self):
     env = dls_environment.environment()
     self.assertEqual(env.normaliseRelease("1-7-12beta1dls16-2-13"),
                      [1, 'z', 7, 'z', 12, 'beta1', 16, 'z', 2, 'z', 13, 'z'])