Exemple #1
0
 def getPackageName(self):
     list1 = get_installed_package_names(self.pinned1)
     list2 = get_installed_package_names(self.pinned2)
     list3 = get_installed_package_names(self.pinned3)
     self.assertTrue(self.get_pkg_name(list1[0], '='), 'python3')
     self.assertTrue(self.get_pkg_name(list1[1], '='), 'zlib1g-dev')
     self.assertTrue(self.get_pkg_name(list2[0], '='), 'ca-certificates')
     self.assertTrue(self.get_pkg_name(list3[0], '-'), 'libncurses5-dev')
     self.assertTrue(self.get_pkg_name(list3[1], '-'), 'syslog-ng')
Exemple #2
0
def get_dockerfile_packages():
    '''Given a Dockerfile return an approximate image object. This is mosty
    guess work and shouldn't be relied on for accurate information. Add
    Notice messages indicating as such:
        1. Create an image with a placeholder repotag
        2. For each RUN command, create a package list
        3. Create layer objects with incremental integers and add the package
        list to that layer with a Notice about parsing
        4. Return stub image'''
    stub_image = Image('easteregg:cookie')
    layer_count = 0
    for cmd in dhelper.docker_commands:
        if cmd['instruction'] == 'RUN':
            layer_count = layer_count + 1
            layer = ImageLayer(layer_count)
            install_commands, msg = \
                common.filter_install_commands(cmd['value'])
            if msg:
                layer.origins.add_notice_to_origins(cmd['value'],
                                                    Notice(msg, 'info'))
            pkg_names = []
            for command in install_commands:
                pkg_names.append(common.get_installed_package_names(command))
            for pkg_name in pkg_names:
                pkg = Package(pkg_name)
                # shell parser does not parse version pins yet
                # when that is enabled, Notices for no versions need to be
                # added here
                layer.add_package(pkg)
    return stub_image
 def testGetInstalledPackageNamesWithRemoveFlag(self):
     # Negative Scenarios
     self.command2.set_remove()
     self.assertEqual(
         len(common.get_installed_package_names(self.command2)), 0)
 def testGetInstalledPackageNamesWithInstallFlag(self):
     self.command1.set_install()
     self.assertGreater(
         len(common.get_installed_package_names(self.command1)), 0)