CoolFace
Apppublic

Aluode/PerceptionLabPortable

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
test_install_lib.py111 linesDownload Raw Back to tests
1"""Tests for distutils.command.install_data."""2 3import importlib.util4import os5import sys6from distutils.command.install_lib import install_lib7from distutils.errors import DistutilsOptionError8from distutils.extension import Extension9from distutils.tests import support10 11import pytest12 13 14@support.combine_markers15@pytest.mark.usefixtures('save_env')16class TestInstallLib(17    support.TempdirManager,18):19    def test_finalize_options(self):20        dist = self.create_dist()[1]21        cmd = install_lib(dist)22 23        cmd.finalize_options()24        assert cmd.compile == 125        assert cmd.optimize == 026 27        # optimize must be 0, 1, or 228        cmd.optimize = 'foo'29        with pytest.raises(DistutilsOptionError):30            cmd.finalize_options()31        cmd.optimize = '4'32        with pytest.raises(DistutilsOptionError):33            cmd.finalize_options()34 35        cmd.optimize = '2'36        cmd.finalize_options()37        assert cmd.optimize == 238 39    @pytest.mark.skipif('sys.dont_write_bytecode')40    def test_byte_compile(self):41        project_dir, dist = self.create_dist()42        os.chdir(project_dir)43        cmd = install_lib(dist)44        cmd.compile = cmd.optimize = 145 46        f = os.path.join(project_dir, 'foo.py')47        self.write_file(f, '# python file')48        cmd.byte_compile([f])49        pyc_file = importlib.util.cache_from_source('foo.py', optimization='')50        pyc_opt_file = importlib.util.cache_from_source(51            'foo.py', optimization=cmd.optimize52        )53        assert os.path.exists(pyc_file)54        assert os.path.exists(pyc_opt_file)55 56    def test_get_outputs(self):57        project_dir, dist = self.create_dist()58        os.chdir(project_dir)59        os.mkdir('spam')60        cmd = install_lib(dist)61 62        # setting up a dist environment63        cmd.compile = cmd.optimize = 164        cmd.install_dir = self.mkdtemp()65        f = os.path.join(project_dir, 'spam', '__init__.py')66        self.write_file(f, '# python package')67        cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]68        cmd.distribution.packages = ['spam']69        cmd.distribution.script_name = 'setup.py'70 71        # get_outputs should return 4 elements: spam/__init__.py and .pyc,72        # foo.import-tag-abiflags.so / foo.pyd73        outputs = cmd.get_outputs()74        assert len(outputs) == 4, outputs75 76    def test_get_inputs(self):77        project_dir, dist = self.create_dist()78        os.chdir(project_dir)79        os.mkdir('spam')80        cmd = install_lib(dist)81 82        # setting up a dist environment83        cmd.compile = cmd.optimize = 184        cmd.install_dir = self.mkdtemp()85        f = os.path.join(project_dir, 'spam', '__init__.py')86        self.write_file(f, '# python package')87        cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]88        cmd.distribution.packages = ['spam']89        cmd.distribution.script_name = 'setup.py'90 91        # get_inputs should return 2 elements: spam/__init__.py and92        # foo.import-tag-abiflags.so / foo.pyd93        inputs = cmd.get_inputs()94        assert len(inputs) == 2, inputs95 96    def test_dont_write_bytecode(self, caplog):97        # makes sure byte_compile is not used98        dist = self.create_dist()[1]99        cmd = install_lib(dist)100        cmd.compile = True101        cmd.optimize = 1102 103        old_dont_write_bytecode = sys.dont_write_bytecode104        sys.dont_write_bytecode = True105        try:106            cmd.byte_compile([])107        finally:108            sys.dont_write_bytecode = old_dont_write_bytecode109 110        assert 'byte-compiling is disabled' in caplog.messages[0]111 
Aluode/PerceptionLabPortable · CoolFace