Example #1
0
def test_appenv_custom_pip_version(root):
    pip_version = '20.1.1'
    with open("requirements.lock", "w") as f:
        # I hate using a real package and a real index here ...
        f.write("six==1.14.0\n")

    appenv = AppEnv("3", pip_version=pip_version)
    root.component += appenv
    root.component.deploy()
    pip = appenv.cmd(
        os.path.join(root.component.workdir,
                     '{{component.env_dir}}/bin/pip --version'))
    assert f'pip {pip_version}' in pip[0]
Example #2
0
    def configure(self):
        self.address = Address(self.host.fqdn, '8081')
        self += AppEnv('3.7')

        self += SyncDirectory('mysite', source='mysite')

        self += File('foo', content='asdf\nbsdf\ncsdf')

        self += Program(
            'django',
            command='bin/python',
            deployment='cold',
            options={'stopasgroup': 'true'},
            args=self.expand('mysite/manage.py runserver '
                             ' {{component.address.listen}}'))
Example #3
0
    def configure(self):
        self.address = Address(self.host.fqdn, "8081")
        self += AppEnv("3.8")

        self += SyncDirectory("mysite", source="mysite")

        self += File("foo", content="asdf\nbsdf\ncsdf")

        self += Program(
            "django",
            command="bin/python",
            deployment="cold",
            options={"stopasgroup": "true"},
            args=self.expand("mysite/manage.py runserver "
                             " {{component.address.listen}}"),
        )
Example #4
0
def test_simple_appenv(root):
    with open('requirements.lock', 'w') as f:
        # I hate using a real package and a real index here ...
        f.write('six==1.14.0\n')

    appenv = AppEnv('3')
    root.component += appenv
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, 'bin'))
    assert os.path.exists(
        os.path.join(root.component.workdir, 'bin', 'python3'))
    assert os.path.exists(
        os.path.join(root.component.workdir, '.appenv', 'current'))

    hashes = os.listdir(os.path.join(root.component.workdir, '.appenv'))
    assert len(hashes) == 2

    # Running it twice doesn't change anything
    appenv.prepare(root.component)
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, 'bin'))
    assert os.path.exists(
        os.path.join(root.component.workdir, 'bin', 'python3'))
    assert os.path.exists(
        os.path.join(root.component.workdir, '.appenv', 'current'))

    hashes2 = os.listdir(os.path.join(root.component.workdir, '.appenv'))
    assert hashes2 == hashes
    assert len(hashes2) == 2
    # Changing the requirements does change something:L
    with open('requirements.lock', 'w') as f:
        # I hate using a real package and a real index here ...
        f.write('# comment\nsix==1.14.0\n')

    appenv.prepare(root.component)
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, 'bin'))
    assert os.path.exists(
        os.path.join(root.component.workdir, 'bin', 'python3'))
    assert os.path.exists(
        os.path.join(root.component.workdir, '.appenv', 'current'))

    hashes3 = os.listdir(os.path.join(root.component.workdir, '.appenv'))
    assert hashes3 != hashes

    assert len(hashes3) == 2
Example #5
0
def test_simple_appenv(root):
    with open("requirements.lock", "w") as f:
        # I hate using a real package and a real index here ...
        f.write("six==1.14.0\n")

    appenv = AppEnv("3")
    root.component += appenv
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, "bin"))
    assert os.path.exists(
        os.path.join(root.component.workdir, "bin", "python3"))
    assert os.path.exists(
        os.path.join(root.component.workdir, ".appenv", "current"))

    hashes = os.listdir(os.path.join(root.component.workdir, ".appenv"))
    assert len(hashes) == 2
    first_hash = list(set(hashes) - set(["current"]))[0]

    # Running it twice doesn't change anything
    appenv.prepare(root.component)
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, "bin"))
    assert os.path.exists(
        os.path.join(root.component.workdir, "bin", "python3"))
    assert os.path.exists(
        os.path.join(root.component.workdir, ".appenv", "current"))

    hashes2 = os.listdir(os.path.join(root.component.workdir, ".appenv"))
    assert hashes2 == hashes
    assert len(hashes2) == 2
    # Changing the requirements does change something:
    with open("requirements.lock", "w") as f:
        # I hate using a real package and a real index here ...
        f.write("# comment\nsix==1.14.0\n")

    appenv.prepare(root.component)
    root.component.deploy()

    assert os.path.exists(os.path.join(root.component.workdir, "bin"))
    assert os.path.exists(
        os.path.join(root.component.workdir, "bin", "python3"))
    assert os.path.exists(
        os.path.join(root.component.workdir, ".appenv", "current"))

    hashes3 = os.listdir(os.path.join(root.component.workdir, ".appenv"))
    assert hashes3 != hashes

    assert len(hashes3) == 3
    second_hash = list(set(hashes3) - set(["current", first_hash]))[0]
    assert first_hash == appenv.last_env_hash
    assert second_hash == appenv.env_hash

    # Changing the requirements again will remove `first_hash`
    with open("requirements.lock", "w") as f:
        # I hate using a real package and a real index here ...
        f.write("# another comment\nsix==1.14.0\n")

    appenv.prepare(root.component)
    root.component.deploy()

    hashes4 = os.listdir(os.path.join(root.component.workdir, ".appenv"))
    assert len(hashes4) == 3

    assert "current" in hashes4
    assert second_hash in hashes4
    assert first_hash not in hashes4