def test_can_determine_equality_between_package_dependencies(self):
        """fab.tests.dependency.system_package_dependency_test  Can determine equality between package dependencies"""

        package_dependency1a = SystemPackageDependency('package1', '1:1.1')
        package_dependency1b = SystemPackageDependency('package1', '1:1.1')

        self.assertEqual(package_dependency1a, package_dependency1a,
                         "Same instance should be equal to itself")
        self.assertNotEqual(
            SystemPackageDependency('package1', '1.1'),
            SystemPackageDependency('package1', '1.2'),
            "Package dependencies should be unequal when package versions differ"
        )
        self.assertNotEqual(
            SystemPackageDependency('package1', '1.1'),
            SystemPackageDependency('package2', '1.1'),
            "Package dependencies should be unequal when package names differ")
        self.assertNotEqual(
            SystemPackageDependency('package1', '1.1'),
            SystemPackageDependency('package2', '2.2'),
            "Package dependencies should be unequal when both package names and versions differ"
        )
        self.assertEqual(
            package_dependency1a, package_dependency1b,
            "Different instances with same package name and version should be equal"
        )
    def test_can_create_package_dependency_from_given_package_specification(
            self):
        """fab.tests.dependency.system_package_dependency_test  Can create a package dependency from a given package specification"""

        package_specification = {'name': 'libc6', 'version': '2.7-10ubuntu8'}
        expected_package_dependency = SystemPackageDependency(
            'libc6', '2.7-10ubuntu8')

        self.assertEqual(
            expected_package_dependency,
            SystemPackageDependency.from_specification(package_specification))
    def setUp(self):
        super(SystemPackageDependencyTest, self).setUp()
        self.mock_feedback = self.mox.CreateMock(ExecutionFeedback)
        self.mock_package_inspector = self.mox.CreateMock(
            UbuntuPackageInspector)
        self.mock_package_info = self.mox.CreateMock(UbuntuPackageInfo)

        self.minimum_package_version = "1:1.2"

        self.system_package_dependency = SystemPackageDependency(
            "package1", self.minimum_package_version)
    def test_dependency_is_not_met_if_package_is_unknown(self):
        """fab.tests.dependency.system_package_dependency_test  Dependency is not met if the package is unknown"""

        system_package_dependency = SystemPackageDependency(
            "nonexistent_package", self.minimum_package_version)

        self.mock_package_inspector.info_for("nonexistent_package").AndRaise(
            SystemExit)
        self.mock_feedback.warn("Unknown package: nonexistent_package")
        self.mox.ReplayAll()

        self.assertFalse(
            system_package_dependency.is_met(self.mock_package_inspector,
                                             self.mock_feedback),
            "System package dependency should not be met if package is unknown"
        )