예제 #1
0
def test_upgrade_to_user_config(project, from_legacy_version):

    shutil.copyfile(
        get_default_config_path(version=from_legacy_version),
        get_legacy_json_config_file_path(project_dir=project.project_dir))

    os.remove(project.config_file_path)

    logger = logging.getLogger("test.test_upgrade_to_user_config")
    upgrade_configs(project.project_dir, logger, FIRST_USER_CONFIG_VERSION)

    upgraded_project = Project(
        project_dir=project.project_dir,
        user_config_file_path=project.user_config_file_path)

    expected_user_config = Config(
        load_user_default_config(FIRST_USER_CONFIG_VERSION))
    expected_user_config.unref()

    expected_project_config = Config(
        load_default_config(FIRST_USER_CONFIG_VERSION))
    expected_project_config.unref()

    assert upgraded_project.legacy_config_path is None
    assert upgraded_project.config == expected_user_config
    assert upgraded_project.user_config == expected_user_config
    assert upgraded_project.project_config == expected_project_config
예제 #2
0
파일: v6.py 프로젝트: miohtama/populus
def upgrade_user_v6_to_v7(v6_user_config):
    """
    Upgrade a v6 config file to a v7 config file.
    """
    errors = get_validation_errors(v6_user_config, version=V6)
    if errors:
        raise ValueError(
            "Cannot upgrade invalid config.  Please ensure that your current "
            "configuration file is valid:\n\n{0}".format(
                format_errors(errors),
            )
        )

    v6_default = load_user_default_config(version=V6)
    v7_default = load_user_default_config(version=V7)

    v6_default_config = Config(v6_default)
    v6_default_config.unref()

    v7_default_config = Config(v7_default)
    v7_default_config.unref()

    if v6_user_config == v6_default_config:
        return v7_default_config

    # V7 just moved to user config, no change in keys
    upgraded_v6_user_config = copy.deepcopy(v6_user_config)
    upgraded_v6_user_config['version'] = V7

    return upgraded_v6_user_config
예제 #3
0
파일: v7.py 프로젝트: miohtama/populus
def upgrade_user_v7_to_v8(v7_user_config):
    """
    Upgrade a v7 user config file to a v8 user config file.
    """
    errors = get_validation_errors(v7_user_config, version=V7)
    if errors:
        raise ValueError(
            "Cannot upgrade invalid config.  Please ensure that your current "
            "configuration file is valid:\n\n{0}".format(
                format_errors(errors),
            )
        )

    v7_default = load_user_default_config(version=V7)

    v7_default_config = Config(v7_default)

    if v7_user_config == v7_default_config:
        return {}

    # V8 just removes all of the `$ref` values from the config.
    upgraded_v7_user_config = Config(copy.deepcopy(v7_user_config))
    upgraded_v7_user_config.unref()
    upgraded_v7_user_config['version'] = V8

    return upgraded_v7_user_config
예제 #4
0
def upgrade_v7_to_v8(v7_config):
    """
    Upgrade a v7 config file to a v8 config file.
    """
    errors = get_validation_errors(v7_config, version=V7)
    if errors:
        raise ValueError(
            "Cannot upgrade invalid config.  Please ensure that your current "
            "configuration file is valid:\n\n{0}".format(
                format_errors(errors), ))

    v7_default = load_default_config(version=V7)

    v7_default_config = Config(v7_default)

    v8_default = load_default_config(version=V8)
    v8_default_config = Config(v8_default)
    v8_default_config.unref()

    if v7_config == v7_default_config:
        return v8_default_config

    # V8 just removes all of the `$ref` values from the config.
    upgraded_v7_config = Config(copy.deepcopy(v7_config))
    upgraded_v7_config.unref()
    upgraded_v7_config['version'] = V8

    return upgraded_v7_config
예제 #5
0
파일: v6.py 프로젝트: zutobg/populus
def upgrade_user_v6_to_v7(v6_user_config):
    """
    Upgrade a v6 config file to a v7 config file.
    """
    errors = get_validation_errors(v6_user_config, version=V6)
    if errors:
        raise ValueError(
            "Cannot upgrade invalid config.  Please ensure that your current "
            "configuration file is valid:\n\n{0}".format(
                format_errors(errors), ))

    v6_default = load_user_default_config(version=V6)
    v7_default = load_user_default_config(version=V7)

    v6_default_config = Config(v6_default)
    v6_default_config.unref()

    v7_default_config = Config(v7_default)
    v7_default_config.unref()

    if v6_user_config == v6_default_config:
        return v7_default_config

    # V7 just moved to user config, no change in keys
    upgraded_v6_user_config = copy.deepcopy(v6_user_config)
    upgraded_v6_user_config['version'] = V7

    return upgraded_v6_user_config
def test_upgrade_to_user_config(project, from_legacy_version):

    shutil.copyfile(
        get_default_config_path(version=from_legacy_version),
        get_legacy_json_config_file_path(project_dir=project.project_dir)
    )

    logger = logging.getLogger("test.test_upgrade_to_user_config")
    upgrade_configs(project.project_dir, logger, LATEST_VERSION)

    upgraded_project = Project(
        project_dir=project.project_dir,
        user_config_file_path=project.user_config_file_path
    )

    expected_user_config = Config(load_user_default_config(LATEST_VERSION))
    expected_user_config.unref()

    expected_project_config = Config(load_default_config(LATEST_VERSION))
    expected_project_config.unref()

    legacy_config_path = get_legacy_json_config_file_path(project.project_dir)
    assert not os.path.exists(legacy_config_path)

    assert upgraded_project.user_config == expected_user_config
    assert upgraded_project.project_config == expected_project_config
예제 #7
0
파일: project.py 프로젝트: miohtama/populus
    def clean_config(self):

        items = self.project_config.items(flatten=True)

        default_config = Config(load_default_config(version=self.project_config['version']))
        default_config.unref()
        default_project_keys = [x[0] for x in default_config.items(flatten=True)]

        for key, value in items:
            if self.user_config.get(key) == value and key not in default_project_keys:
                self.project_config.pop(key)
예제 #8
0
파일: project.py 프로젝트: miohtama/populus
    def user_config(self):

        if self._user_config_cache is None:
            user_config = Config(
                config=self._user_config,
                schema=self._config_schema,
            )
            user_config.unref()
            self._user_config_cache = user_config
            self.merge_user_and_project_configs(user_config, self.project_config)

        return self._user_config_cache
예제 #9
0
    def project_config(self):
        if self._project_config_cache is None:
            project_config = Config(config=self._project_config,
                                    parent=Config(self._user_config))
            project_config.unref()
            self._project_config_cache = project_config

            # schema validation
            # partial project config must be merged to get the entire schema
            self.merge_user_and_project_configs(self.user_config,
                                                project_config)

        return self._project_config_cache
예제 #10
0
    def user_config(self):

        if self._user_config_cache is None:
            user_config = Config(
                config=self._user_config,
                schema=self._config_schema,
            )
            user_config.unref()
            self._user_config_cache = user_config
            self.merge_user_and_project_configs(user_config,
                                                self.project_config)

        return self._user_config_cache
예제 #11
0
파일: project.py 프로젝트: miohtama/populus
    def project_config(self):
        if self._project_config_cache is None:
            project_config = Config(
                config=self._project_config,
                parent=Config(self._user_config)
            )
            project_config.unref()
            self._project_config_cache = project_config

            # schema validation
            # partial project config must be merged to get the entire schema
            self.merge_user_and_project_configs(self.user_config, project_config)

        return self._project_config_cache
예제 #12
0
    def clean_config(self):

        items = self.project_config.items(flatten=True)

        default_config = Config(
            load_default_config(version=self.project_config['version']))
        default_config.unref()
        default_project_keys = [
            x[0] for x in default_config.items(flatten=True)
        ]

        for key, value in items:
            if self.user_config.get(
                    key) == value and key not in default_project_keys:
                self.project_config.pop(key)
예제 #13
0
def test_upgrade_to_user_config(project, from_legacy_version):

    shutil.copyfile(
        get_default_config_path(version=from_legacy_version),
        get_legacy_json_config_file_path(project_dir=project.project_dir))

    logger = logging.getLogger("test.test_upgrade_to_user_config")
    upgrade_configs(project.project_dir, logger, LATEST_VERSION)

    upgraded_project = Project(
        project_dir=project.project_dir,
        user_config_file_path=project.user_config_file_path)

    expected_user_config = Config(load_user_default_config(LATEST_VERSION))
    expected_user_config.unref()

    expected_project_config = Config(load_default_config(LATEST_VERSION))
    expected_project_config.unref()

    legacy_config_path = get_legacy_json_config_file_path(project.project_dir)
    assert not os.path.exists(legacy_config_path)

    assert upgraded_project.user_config == expected_user_config
    assert upgraded_project.project_config == expected_project_config