def test_that_logger_with_high_verbosity_level_does_emit_info_logs( logger: Logger, level: Verbosity): logger.set_verbosity(level) logger.info("test") output = get_logger_output(logger) assert "INFO" in output
def test_that_logger_with_low_verbosity_level_does_not_emit_info_logs( logger: Logger, level): logger.set_verbosity(level) logger.info("test") output = get_logger_output(logger) assert "INFO" not in output
def format_nix_files(logger: Logger) -> None: if is_nixfmt_installed(): logger.info("Formatting nix files") integration_test_nix_files = find_nix_files_in_integration_tests() subprocess.run( ["nixfmt", "default.nix", "src/pypi2nix/pip/bootstrap.nix"] + integration_test_nix_files, check=True, ) else: logger.warning( "Could not find `nixfmt` executable. Cannot format .nix files")
def main( packages_metadata: Iterable[Wheel], sources: Sources, requirements_name: str, requirements_frozen: str, extra_build_inputs: Iterable[str], enable_tests: bool, python_version: PythonVersion, target_directory: str, logger: Logger, common_overrides: Iterable[Overrides] = [], ) -> None: """Create Nix expressions. """ default_file = os.path.join(target_directory, f"{requirements_name}.nix") overrides_file = os.path.join(target_directory, f"{requirements_name}_override.nix") frozen_file = os.path.join(target_directory, f"{requirements_name}_frozen.txt") metadata_by_name: Dict[str, Wheel] = {x.name: x for x in packages_metadata} generated_packages_metadata = [] for item in sorted(packages_metadata, key=lambda x: x.name): if item.build_dependencies: buildInputs = "\n".join( sorted([ ' self."{}"'.format(dependency.name()) for dependency in item.build_dependencies ])) buildInputs = "[\n" + buildInputs + "\n ]" else: buildInputs = "[ ]" propagatedBuildInputs = "[ ]" dependencies = item.dependencies(extras=[]) if dependencies: deps = [ x.name() for x in dependencies if x.name() in metadata_by_name.keys() ] if deps: propagatedBuildInputs = "[\n%s\n ]" % ("\n".join( sorted([ ' self."%s"' % (metadata_by_name[x].name) for x in deps if x != item.name ]))) source = sources[item.name] fetch_expression = source.nix_expression() package_format = item.package_format generated_packages_metadata.append( dict( name=item.name, version=item.version, fetch_expression=fetch_expression, buildInputs=buildInputs, propagatedBuildInputs=propagatedBuildInputs, homepage=item.homepage, license=item.license, description=item.description, package_format=package_format, )) templates = jinja2.Environment( loader=jinja2.FileSystemLoader(HERE + "/templates")) generated_template = templates.get_template("generated.nix.j2") generated = "\n\n".join( generated_template.render(**x) for x in generated_packages_metadata) overrides = templates.get_template("overrides.nix.j2").render() common_overrides_expressions = [ " (" + override.nix_expression(logger) + ")" for override in common_overrides ] default_template = templates.get_template("requirements.nix.j2") overrides_file_nix_path = os.path.join(".", os.path.split(overrides_file)[1]) default = default_template.render( version=pypi2nix_version, command_arguments=" ".join(map(shlex.quote, sys.argv[1:])), python_version=python_version.derivation_name(), extra_build_inputs=(extra_build_inputs and "with pkgs; [ %s ]" % (" ".join(extra_build_inputs)) or "[]"), overrides_file=overrides_file_nix_path, enable_tests=str(enable_tests).lower(), generated_package_nix=generated, common_overrides="\n".join(common_overrides_expressions), python_major_version=python_version.major_version(), ) if not os.path.exists(overrides_file): with open(overrides_file, "w+") as f: f.write(overrides.strip()) logger.info("|-> writing %s" % overrides_file) with open(default_file, "w+") as f: f.write(default.strip()) with open(frozen_file, "w+") as f: f.write(requirements_frozen)
def test_every_info_line_is_prefixed(logger: Logger): logger.info("line1\nline2") output = get_logger_output(logger) assert "INFO: line1" in output assert "INFO: line2" in output
def test_can_log_info(logger: Logger): logger.info("test") assert "INFO: test" in get_logger_output(logger)