def test_correctness(self, tmpdir): config_file = os.path.join(str(tmpdir), "config.yaml") logging_config_file = os.path.join(str(tmpdir), "logging.json") beer_garden.config.generate( ["-c", config_file, "-l", logging_config_file]) spec = YapconfSpec(beer_garden.config._SPECIFICATION) spec.add_source(label="config_file", source_type="yaml", filename=config_file) config = spec.load_config("config_file") # Defaults from spec assert config.log.fallback_file is None assert config.log.fallback_level == "INFO" # Value passed in assert config.log.config_file == logging_config_file # Ensure that bootstrap items were not written to file assert config.configuration.file is None with open(config_file) as f: yaml_config = yaml.safe_load(f) assert "configuration" not in yaml_config
def _setup_config_sources(spec: YapconfSpec, cli_vars: Iterable[str]) -> List[str]: """Sets the sources for configuration loading Args: spec: Yapconf specification cli_vars: Command line arguments Returns: List of configuration sources """ spec.add_source("cli_args", "dict", data=cli_vars) spec.add_source("ENVIRONMENT", "environment") config_sources = ["cli_args", "ENVIRONMENT"] # Load bootstrap items to see if there's a config file temp_config = spec.load_config(*config_sources, bootstrap=True) config_filename = temp_config.configuration.file if config_filename: _safe_migrate(spec, config_filename) spec.add_source(config_filename, "yaml", filename=config_filename) config_sources.insert(1, config_filename) return config_sources