コード例 #1
0
 def setUp(self):
     self.config = {
         "Logger":
         MockLog(),
         "LocalPackageCache":
         "PACKAGE_CACHE",
         "GlobalPackageCache":
         "GLOBAL_CACHE",
         "ProjectRoot":
         "ROOT",
         "BuildFolder":
         "BUILD",
         "Packaging": [{
             "Type": "SnapPart",
             "SnapPartType": "headers",
             "HeadersSource": "myheaders",
             "HeadersDest": "destheaders"
         }, {
             "Type": "SnapPart",
             "SnapPartType": "headers",
             "HeadersSource": "myheaders2",
             "HeadersDest": "destheaders2"
         }, {
             "Type": "SnapCMake",
             "OtherStuff": "The mock does not care about them"
         }],
         "Dependencies": [],
         "BuildDeps": [{
             "Name": "YY",
             "Version": "0.0"
         }],
         "RuntimeDeps": [],
         "TestDeps": []
     }
コード例 #2
0
    def test_exception_on_step_exception(self, mock_getcwd, mock_config,
                                         mock_build_system,
                                         mock_dependency_resolver, mock_pkg):
        config = {"Logger": MockLog(), "BuildSystem": "CppCmake"}
        mock_config.side_effect = [MockConfig(config)]

        builder = MockBuildSystem()
        mock_build_system.side_effect = [builder]

        resolver = MockDependencyResolver()
        mock_dependency_resolver.side_effect = [resolver]

        package = MockPackage()
        mock_pkg.side_effect = [package]

        w = Workflow()

        resolver.set_throws()
        self.assertRaises(WorkflowException, w.run)
        resolver.unset_throws()

        builder.set_build_throws()
        self.assertRaises(WorkflowException, w.run)
        builder.unset_build_throws()

        builder.set_test_throws()
        self.assertRaises(WorkflowException, w.run)
        builder.unset_test_throws()

        package.set_throws()
        self.assertRaises(WorkflowException, w.execute_step, "Package")
        package.unset_throws()
コード例 #3
0
    def test_init_exception_on_build_exception(self, mock_getcwd, mock_config,
                                               mock_build_system):
        config = {"Logger": MockLog(), "BuildSystem": "CppCmake"}
        mock_config.side_effect = [MockConfig(config)]
        mock_build_system.side_effect = BuildException()

        self.assertRaises(WorkflowException, Workflow)
コード例 #4
0
 def setUp(self, mock_s3_client):
     self.config_obj = {
         "GlobalPackageCache": "TEST_PKG_CACHE",
         "PackageSource": {
             "Type": "URL",
             "Url": "https://my_ftp_site/folder"
         },
         "ProgramName": "Bob",
         "Logger": MockLog()
     }
     self.package_list = [{
         "Name": "A",
         "Version": "1.0"
     }, {
         "Name": "B",
         "Version": "2.0",
         "PackageSource": {
             "Type": "S3",
             "Bucket": "MY_BUCKET"
         }
     }, {
         "Name": "C",
         "Version": "3.0",
         "PackageSource": {
             "Type": "URL",
             "Url": "https://test_ftp"
         }
     }]
     self.downloader = PackageDownloader(self.config_obj)
コード例 #5
0
 def setUp(self, mock_getcwd):
     self.config_obj = {
         "ProjectRoot": "ROOT",
         "LocalPackageCache": "TEST_PACKAGE_CACHE",
         "BuildDir": "TEST_BUILD_DIR",
         "Logger": MockLog()
     }
     self.builder = CppCmake(self.config_obj)
コード例 #6
0
    def test_init_exception_on_resolver_exception(self, mock_getcwd,
                                                  mock_config,
                                                  mock_build_system,
                                                  mock_dependency_resolver):
        config = {"Logger": MockLog(), "BuildSystem": "CppCmake"}
        mock_config.side_effect = [MockConfig(config)]

        builder = MockBuildSystem()
        mock_build_system.side_effect = [builder]
        mock_dependency_resolver.side_effect = DependencyResolverException()

        self.assertRaises(WorkflowException, Workflow)
コード例 #7
0
    def test_exception_on_bad_build_system(self, mock_getcwd, mock_config,
                                           mock_build_system,
                                           mock_dependency_resolver):
        config = {"Logger": MockLog(), "BuildSystem": "Clown"}
        mock_config.side_effect = [MockConfig(config)]

        builder = MockBuildSystem()
        mock_build_system.side_effect = [builder]

        resolver = MockDependencyResolver()
        mock_dependency_resolver.side_effect = [resolver]

        self.assertRaises(WorkflowException, Workflow)
コード例 #8
0
 def setUp(self):
     self.conf = {
         "Name": "TEST_PROJECT",
         "Version": "1.0",
         "LocalPackageCache": "PACKAGE_CACHE",
         "ProjectRoot": "ROOT",
         "BuildFolder": "BUILD",
         "Logger": MockLog(),
         "Dependencies": [{"Name": "A", "Version": "1.0"}],
         "RuntimeDeps": [],
         "BuildDeps": [],
         "TestDeps": []
     }
コード例 #9
0
    def test_single_step_happy_case(self, mock_getcwd, mock_config,
                                    mock_build_system,
                                    mock_dependency_resolver, mock_pkg):
        config = {"Logger": MockLog(), "BuildSystem": "CppCmake"}
        mock_config.side_effect = [MockConfig(config)]

        builder = MockBuildSystem()
        mock_build_system.side_effect = [builder]

        resolver = MockDependencyResolver()
        mock_dependency_resolver.side_effect = [resolver]
        package = MockPackage()
        mock_pkg.side_effect = [package]

        w = Workflow()
        w.execute_step("Bootstrap")
        self.assertEqual(1, resolver.invocations)
        self.assertEqual(0, builder.invocations["Build"])
        self.assertEqual(0, builder.invocations["Test"])
        self.assertEqual(0, builder.invocations["Clean"])
        self.assertEqual(0, package.invocations)

        w.execute_step("Build")
        self.assertEqual(1, resolver.invocations)
        self.assertEqual(1, builder.invocations["Build"])
        self.assertEqual(0, builder.invocations["Test"])
        self.assertEqual(0, builder.invocations["Clean"])
        self.assertEqual(0, package.invocations)

        w.execute_step("Test")
        self.assertEqual(1, resolver.invocations)
        self.assertEqual(1, builder.invocations["Build"])
        self.assertEqual(1, builder.invocations["Test"])
        self.assertEqual(0, builder.invocations["Clean"])
        self.assertEqual(0, package.invocations)

        w.execute_step("Clean")
        self.assertEqual(1, resolver.invocations)
        self.assertEqual(1, builder.invocations["Build"])
        self.assertEqual(1, builder.invocations["Test"])
        self.assertEqual(1, builder.invocations["Clean"])
        self.assertEqual(0, package.invocations)

        w.execute_step("Package")
        self.assertEqual(1, resolver.invocations)
        self.assertEqual(1, builder.invocations["Build"])
        self.assertEqual(1, builder.invocations["Test"])
        self.assertEqual(1, builder.invocations["Clean"])
        self.assertEqual(1, package.invocations)

        self.assertRaises(WorkflowException, w.execute_step, "BogusStep")
コード例 #10
0
 def test_exception_on_bad_md(self, mock_package_downloader, mock_package_installers):
     returned_dependencies = [
         {"A": {"Name": "A", "Version": "1.0"}, "B": {"Name": "B", "Version": "2.0"}},
         {"A": {"Name": "A", "Version": "1.0"}, "C": {"Name": "C", "Version": "3.0"}},
         {"A": {"Name": "B", "Version": "2.0"}, "C": {"Name": "C", "Version": "3.0"}}
     ]
     mock_package_downloader.side_effect = [MockPackageDownloader()]
     mock_package_installers.side_effect = [MockPackageInstaller(returned_dependencies)]
     self.config_obj = {
         "Dependencies": [{"Name": "D1", "Version": "1.0"}],
         "BuildDeps": [{"Name": "D2", "Version": "1.0"}],
         "RuntimeDeps": [{"Name": "D3", "Version": "1.0"}],
         "TestDeps": [{"Name": "D2", "Version": "1.0"}],
         "Logger": MockLog()
     }
     self.resolver = DependencyResolver(self.config_obj)
コード例 #11
0
    def test_workflow_happy_case(self, mock_getcwd, mock_config,
                                 mock_build_system, mock_dependency_resolver,
                                 mock_pkg):
        config = {"Logger": MockLog(), "BuildSystem": "CppCmake"}
        mock_config.side_effect = [MockConfig(config)]

        builder = MockBuildSystem()
        mock_build_system.side_effect = [builder]

        resolver = MockDependencyResolver()
        mock_dependency_resolver.side_effect = [resolver]

        package = MockPackage()
        mock_pkg.side_effect = [package]

        w = Workflow()
        w.run()

        self.assertEqual(1, resolver.invocations)
        self.assertEqual(1, builder.invocations["Build"])
        self.assertEqual(1, builder.invocations["Test"])
        self.assertEqual(0, builder.invocations["Clean"])
        self.assertEqual(0, package.invocations)
コード例 #12
0
 def setUp(self):
     self.conf = {
         "GlobalPackageCache": "GLOBAL_CACHE",
         "LocalPackageCache": "LOCAL_CACHE",
         "Logger": MockLog()
     }
     self.package_list = [{
         "Name": "A",
         "Version": "1.0"
     }, {
         "Name": "B",
         "Version": "2.0"
     }]
     self.md = {
         "A": {
             "Dependencies": [{
                 "Name": "C",
                 "Version": "3.0"
             }],
             "TestDeps": [{
                 "Name": "B",
                 "Version": "2.0"
             }]
         },
         "B": {
             "BuildDeps": [{
                 "Name": "Z",
                 "Version": "1.0"
             }],
             "RuntimeDeps": [{
                 "Name": "X",
                 "Version": "0.0"
             }]
         }
     }
     self.installer = PackageInstaller(self.conf)
コード例 #13
0
 def setUp(self):
     self.conf = {
         "Name": "TEST_PROJECT",
         "Version": "1.0",
         "LocalPackageCache": "PACKAGE_CACHE",
         "GlobalPackageCache": "GLOBAL_PACKAGE_CACHE",
         "ProjectRoot": "ROOT",
         "BuildFolder": "BUILD",
         "Logger": MockLog(),
         "Dependencies": [{
             "Name": "A",
             "Version": "1.0"
         }],
         "RuntimeDeps": [],
         "BuildDeps": [],
         "TestDeps": []
     }
     self.package_step = {
         "Version":
         "23.0",
         "Summary":
         "Test Snap",
         "Grade":
         "Alpha",
         "Confinement":
         "cl        assic",
         "Description":
         "Long description",
         "Apps": [{
             "Name": "MY_APP_1",
             "Command": "app1"
         }, {
             "Name": "MY_APP_2",
             "Command": "app2"
         }]
     }