def test_check_for_empty_workflow(self): self.create_workflow_file(""" workflow "samples" { resolves = ["a1", "a2"] } action "b" { uses = "sh" } action "c" { uses = "sh" } """) workflow = Workflow('/tmp/test_folder/a.workflow') workflow.normalize() workflow.resolves = ["a1", "a2"] self.assertRaises(SystemExit, workflow.check_for_empty_workflow)
def test_normalize(self): self.create_workflow_file(""" workflow "sample workflow" { resolves = "a" } action "a" { needs = "b" uses = "popperized/bin/npm@master" args = "npm --version" secrets = "SECRET_KEY" } """) wf = Workflow('/tmp/test_folder/a.workflow') wf.normalize() self.assertEqual(wf.resolves, ['a']) self.assertEqual(wf.name, 'sample workflow') self.assertEqual(wf.on, 'push') self.assertDictEqual(wf.props, dict()) action_a = wf.get_action('a') self.assertEqual(action_a['name'], 'a') self.assertEqual(action_a['needs'], ['b']) self.assertEqual(action_a['args'], ['npm', '--version']) self.assertEqual(action_a['secrets'], ['SECRET_KEY'])
def test_complete_graph(self): self.create_workflow_file(""" workflow "example" { resolves = "end" } action "a" { uses = "sh" args = "ls" } action "b" { uses = "sh" args = "ls" } action "c" { uses = "sh" args = "ls" } action "d" { needs = ["c"] uses = "sh" args = "ls" } action "e" { needs = ["d", "b", "a"] uses = "sh" args = "ls" } action "end" { needs = "e" uses = "sh" args = "ls" } """) wf = Workflow('/tmp/test_folder/a.workflow') wf.normalize() wf.complete_graph() self.assertEqual(wf.name, 'example') self.assertEqual(wf.resolves, ['end']) self.assertEqual(wf.on, 'push') self.assertEqual(wf.props, {}) self.assertEqual(wf.root, {'b', 'c', 'a'}) actions_dict = { 'a': { 'uses': 'sh', 'args': ['ls'], 'name': 'a', 'next': {'e'} }, 'b': { 'uses': 'sh', 'args': ['ls'], 'name': 'b', 'next': {'e'} }, 'c': { 'uses': 'sh', 'args': ['ls'], 'name': 'c', 'next': {'d'} }, 'd': { 'needs': ['c'], 'uses': 'sh', 'args': ['ls'], 'name': 'd', 'next': {'e'} }, 'e': { 'needs': ['d', 'b', 'a'], 'uses': 'sh', 'args': ['ls'], 'name': 'e', 'next': {'end'} }, 'end': { 'needs': ['e'], 'uses': 'sh', 'args': ['ls'], 'name': 'end' } } self.assertDictEqual(wf.action, actions_dict)