Exemplo n.º 1
0
def test_does_handle_missing_dependency_error(tmpdir, capsys):
    appdir = _create_app_structure(tmpdir)
    builder = mock.Mock(spec=DependencyBuilder)
    fake_package = mock.Mock(spec=Package)
    fake_package.identifier = 'foo==1.2'
    builder.build_site_packages.side_effect = MissingDependencyError(
        set([fake_package]))
    packager = LambdaDeploymentPackager(dependency_builder=builder)
    packager.create_deployment_package(str(appdir), 'python2.7')

    out, _ = capsys.readouterr()
    assert 'Could not install dependencies:\nfoo==1.2' in out
Exemplo n.º 2
0
def test_empty_layer_package_raises_error(tmpdir, layer_packager):
    packager, deps_builder = layer_packager
    appdir = _create_app_structure(tmpdir)
    appdir.mkdir('chalicelib')
    appdir.join('requirements.txt').write('')
    appdir.join('chalicelib', '__init__.py').write('# Test package')
    filename = packager.deployment_package_filename(str(appdir), 'python2.7')
    with pytest.raises(EmptyPackageError):
        packager.create_deployment_package(str(appdir), 'python2.7')
    # We should also verify that the file does not exist so it doesn't
    # get reused in subsequent caches.  This shouldn't affect anything,
    # we're just trying to cleanup properly.
    assert not os.path.isfile(filename)
Exemplo n.º 3
0
def test_does_handle_missing_dependency_error(tmpdir):
    appdir = _create_app_structure(tmpdir)
    builder = mock.Mock(spec=DependencyBuilder)
    fake_package = mock.Mock(spec=Package)
    fake_package.identifier = 'foo==1.2'
    builder.build_site_packages.side_effect = MissingDependencyError(
        set([fake_package]))
    ui = mock.Mock(spec=chalice.utils.UI)
    osutils = chalice.utils.OSUtils()
    packager = LambdaDeploymentPackager(
        osutils=osutils,
        dependency_builder=builder,
        ui=ui,
    )
    packager.create_deployment_package(str(appdir), 'python2.7')

    output = ''.join([call[0][0] for call in ui.write.call_args_list])
    assert 'Could not install dependencies:\nfoo==1.2' in output
Exemplo n.º 4
0
def test_does_handle_missing_dependency_error(tmpdir):
    appdir = _create_app_structure(tmpdir)
    builder = mock.Mock(spec=DependencyBuilder)
    fake_package = mock.Mock(spec=Package)
    fake_package.identifier = 'foo==1.2'
    builder.build_site_packages.side_effect = MissingDependencyError(
        set([fake_package]))
    ui = mock.Mock(spec=chalice.utils.UI)
    osutils = chalice.utils.OSUtils()
    packager = LambdaDeploymentPackager(
        osutils=osutils,
        dependency_builder=builder,
        ui=ui,
    )
    packager.create_deployment_package(str(appdir), 'python2.7')

    output = ''.join([call[0][0] for call in ui.write.call_args_list])
    assert 'Could not install dependencies:\nfoo==1.2' in output
Exemplo n.º 5
0
def test_no_vendor_in_app_only_packager(tmpdir, app_only_packager):
    packager, deps_builder = app_only_packager
    appdir = _create_app_structure(tmpdir)
    appdir.mkdir('chalicelib')
    appdir.join('requirements.txt').write('boto3')
    appdir.join('chalicelib', '__init__.py').write('# Test package')
    vendor = appdir.mkdir('vendor')
    extra_package = vendor.mkdir('mypackage')
    extra_package.join('__init__.py').write('# Test package')
    name = packager.create_deployment_package(str(appdir), 'python2.7')
    with zipfile.ZipFile(name) as f:
        _assert_not_in_zip('mypackage/__init__.py', f)
        _assert_in_zip('chalicelib/__init__.py', b'# Test package', f)
        _assert_in_zip('app.py', b'# Test app', f)
    assert not deps_builder.build_site_packages.called
Exemplo n.º 6
0
def test_py_deps_in_layer_package(tmpdir, layer_packager):
    packager, deps_builder = layer_packager
    appdir = _create_app_structure(tmpdir)
    appdir.mkdir('chalicelib')
    appdir.join('requirements.txt').write('boto3')
    appdir.join('chalicelib', '__init__.py').write('# Test package')
    vendor = appdir.mkdir('vendor')
    extra_package = vendor.mkdir('mypackage')
    extra_package.join('__init__.py').write('# Test package')
    name = packager.create_deployment_package(str(appdir), 'python2.7')
    assert os.path.basename(name).startswith('managed-layer-')
    with zipfile.ZipFile(name) as f:
        prefix = 'python/lib/python2.7/site-packages'
        _assert_in_zip('%s/mypackage/__init__.py' % prefix, b'# Test package',
                       f)
        _assert_not_in_zip('%s/chalicelib/__init__.py' % prefix, f)
        _assert_not_in_zip('%s/app.py' % prefix, f)
    deps_builder.build_site_packages.assert_called_with(
        'cp27mu', str(appdir.join('requirements.txt')), mock.ANY)