示例#1
0
def test_settings_class(setup_cte):
    '''Test the creation, bool, and equality of Settings instances.'''

    empty_settings = settings.Settings()
    assert not empty_settings

    settings1 = settings.Settings(setup_cte)
    settings2 = settings.Settings(setup_cte)
    assert settings1 == settings2

    setup_cte['lattice']['name'] = 'new_name'
    settings3 = settings.Settings(setup_cte)
    assert settings3 != settings1
示例#2
0
def test_change_config(settings_dict):
    ''''Changing the settings in any way gets updated.'''
    filename = os.path.join(test_folder_path, 'test_standard_config.txt')
    sett = settings.Settings(settings_dict)
    sett.validate(filename)

    sett.number = 5
    assert sett.number == sett['number']
    assert sett.number == sett.settings['number']

    sett['number'] = 10
    assert sett.number == sett['number']
    assert sett.number == sett.settings['number']

    sett.settings['number'] = 15
    assert sett.number == sett['number']
    assert sett.number == sett.settings['number']

    # add a different item
    sett.new_item = 'new'
    assert sett.new_item == sett['new_item']
    assert sett.new_item == sett.settings['new_item']

    del sett.new_item
    assert hasattr(sett, 'new_item') == False
示例#3
0
def test_non_existing_file(settings_dict):
    with pytest.raises(SettingsFileError) as excinfo:
        # load non existing file
        sett = settings.Settings(settings_dict)
        sett.validate(
            os.path.join(test_folder_path, 'test_non_existing_config.txt'))
    assert excinfo.match(r"Error reading file")
    assert excinfo.type == SettingsFileError
示例#4
0
def test_duplicate_key(settings_dict):
    data = '''key1: 5
key1: 10
'''
    with pytest.raises(SettingsValueError) as excinfo:
        with temp_filename(data) as filename:
            settings.Settings(settings_dict).validate(filename)
    assert excinfo.match(r"Duplicate label")
    assert excinfo.type == SettingsValueError
示例#5
0
def test_load_from_dict(settings_dict, good_settings):
    '''Create an instance of Settings from a dictionary'''

    filename = os.path.join(test_folder_path, 'test_standard_config.txt')
    sett = settings.Settings(settings_dict)
    sett.validate(filename)

    sett_from_d = settings.Settings.load_from_dict(good_settings)

    assert sett_from_d == sett
示例#6
0
def test_good_config(good_settings, settings_dict):
    ''''Test that the returned Settings instance for a know config file is correct.'''
    filename = os.path.join(test_folder_path, 'test_standard_config.txt')
    sett = settings.Settings(settings_dict)
    sett.validate(filename)

    assert sett == good_settings
    assert sett.settings == good_settings

    good_settings['version'] = 2
    assert sett != good_settings
示例#7
0
def test_extra_value(settings_dict):
    extra_data = '''version: 1
extra: 3
'''
    with pytest.warns(SettingsExtraValueWarning
                      ) as record:  # "extra_value" in lattice section
        with temp_filename(extra_data) as filename:
            settings.Settings({
                'version': settings_dict['version']
            }).validate(filename)
    assert len(record) == 2  # one warning
    warning = record.pop(SettingsExtraValueWarning)
    assert warning.category == SettingsExtraValueWarning
    assert 'Some values or sections should not be present in the file' in str(
        warning.message)
示例#8
0
def test_missing_value(settings_dict):
    ''''Test that missing values raise errors.'''
    orig_filename = os.path.join(test_folder_path, 'test_standard_config.txt')
    with open(orig_filename) as file:
        file_text = file.read()
    # remove the version section
    file_text = file_text.replace('version: 1', '')

    sett = settings.Settings(settings_dict)

    with temp_filename(file_text) as filename:
        with pytest.raises(SettingsFileError) as excinfo:
            sett.validate(filename)
    assert excinfo.match(
        r'Sections that are needed but not present in the file')
    assert excinfo.type == SettingsFileError
示例#9
0
def test_standard_config(setup_cte):
    ''''Test that the returned Settings instance for a know config file is correct.'''
    filename = os.path.join(test_folder_path, 'test_standard_config.txt')
    cte = settings.load(filename)

    with open(filename, 'rt') as file:
        config_file = file.read()
    setup_cte['config_file'] = config_file
    settings_cte = settings.Settings(setup_cte)

    assert cte['lattice'] == settings_cte.lattice
    assert cte['states'] == settings_cte.states

    assert cte['excitations'] == settings_cte.excitations
    assert cte.decay['branching_S'] == settings_cte.decay['branching_S']
    assert cte.decay['decay_A'] == settings_cte.decay['decay_A']
    assert cte.decay['decay_S'] == settings_cte.decay['decay_S']
    assert cte.decay['branching_A'] == settings_cte.decay['branching_A']
    assert cte.decay == settings_cte.decay

    assert cte == settings_cte
示例#10
0
def test_not_dict_config(settings_dict):
    with pytest.raises(SettingsFileError) as excinfo:
        with temp_filename('vers') as filename:
            settings.Settings(settings_dict).validate(filename)
    assert excinfo.match(r"The settings file is empty or otherwise invalid")
    assert excinfo.type == SettingsFileError
示例#11
0
def test_yaml_error_config(bad_yaml_data, settings_dict):
    with pytest.raises(SettingsFileError) as excinfo:
        with temp_filename(bad_yaml_data) as filename:
            settings.Settings(settings_dict).validate(filename)
    assert excinfo.match(r"Error while parsing the config file")
    assert excinfo.type == SettingsFileError