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": [] }
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()
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)
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)
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)
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)
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)
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": [] }
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")
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)
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)
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)
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" }] }