from unittest import TestCase from aws_lambda_builders.architecture import ARM64 from aws_lambda_builders.actions import CopySourceAction from aws_lambda_builders.exceptions import WorkflowFailedError from aws_lambda_builders.workflows.custom_make.workflow import CustomMakeWorkflow from aws_lambda_builders.workflows.custom_make.actions import CustomMakeAction class TestProvidedMakeWorkflow(TestCase): """ the workflow requires an external utility (make) to run, so it is extensively tested in integration tests. this is just a quick wiring test to provide fast feedback if things are badly broken """ def test_workflow_sets_up_make_actions(self): workflow = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello"} ) self.assertEqual(len(workflow.actions), 2) self.assertIsInstance(workflow.actions[0], CopySourceAction) self.assertIsInstance(workflow.actions[1], CustomMakeAction) def test_workflow_sets_up_make_actions_no_options(self): with self.assertRaises(WorkflowFailedError): CustomMakeWorkflow("source", "artifacts", "scratch_dir", "manifest") def test_must_validate_architecture(self): workflow = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello"} ) workflow_with_arm = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello"}, architecture=ARM64, ) self.assertEqual(workflow.architecture, "x86_64") self.assertEqual(workflow_with_arm.architecture, "arm64") def test_use_scratch_dir_as_working_directory(self): workflow = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello"} ) self.assertEqual(workflow.actions[1].working_directory, "scratch_dir") def test_use_working_directory(self): workflow = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello", "working_directory": "working/dir/path"}, ) self.assertEqual(workflow.actions[1].working_directory, "working/dir/path") def test_build_in_source(self): source_dir = "source" workflow = CustomMakeWorkflow( source_dir, "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello"}, build_in_source=True, ) self.assertEqual(len(workflow.actions), 1) self.assertIsInstance(workflow.actions[0], CustomMakeAction) self.assertEqual(workflow.actions[0].working_directory, source_dir) def test_build_in_source_with_custom_working_directory(self): working_dir = "working/dir/path" workflow = CustomMakeWorkflow( "source", "artifacts", "scratch_dir", "manifest", options={"build_logical_id": "hello", "working_directory": working_dir}, build_in_source=True, ) self.assertEqual(len(workflow.actions), 1) self.assertIsInstance(workflow.actions[0], CustomMakeAction) self.assertEqual(workflow.actions[0].working_directory, working_dir)