def test_plugin_shell_on_unix_bad(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: /nonexistent ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string("'failure'"))
def test_plugin_echo_renders_node(capenv): stream = StringIO(''' - name: test0 env: set: "Joe": "{{ node }}" ''') document = loader.ordered_load(stream) node = next(TopLevel.build(document)) context = Context() node.execute(context) assert_that(os.getenv('Joe', None), equal_to(platform.node()))
def test_plugin_command_on_unix_nonzero_return(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 command: "false" ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string("'failure'"))
def test_plugin_echo_with_simple_when(caplog): stream = StringIO(''' - name: test0 echo: "{{ node }}" when: nbcpus == 0 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for index, node in enumerate(nodes): node.execute(context) assert_that(len(caplog.records), equal_to(2))
def test_top_level_is_created(): initialize() stream = StringIO(''' - name: test1 echo: hi1 - name: test2 echo: hi2 - name: test3 echo: hi3 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for node in nodes: assert_that(node, instance_of(TopLevel))
def test_plugin_shell_on_win(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: \'echo Hello world\' executable: cmd ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('| Hello world'))
def test_plugin_stage_fails_inner_task_with_context(caplog): stream = StringIO(''' - name: test1 stage: tasks: - fail: Exiting with style ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('Exiting with style'))
def test_plugin_env_unset_all_and_adds_one_via_str(capenv): stream = StringIO(''' - name: test1 env: set: "Joe": "Benden" unset: '*' ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for node in nodes: node.execute(None) assert_that('Joe' in os.environ, equal_to(True)) assert_that(len(os.environ), equal_to(1))
def test_plugin_env_unset_filter(capenv): stream = StringIO(''' - name: test1 env: unset: 'J*' ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) os.environ['Joe'] = '123' os.putenv('Joe', '123') for node in nodes: node.execute(None) assert_that(os.getenv('Joe', None), equal_to(None))
def test_plugin_shell_timeout_on_unix(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: "sleep 5 && echo Hello" executable: bash timeout: 0.1 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, not contains_string('| Hello'))
def test_plugin_fail_fails_rendering_multiple_items_without_a_context(caplog): stream = StringIO(''' - name: test0 fail: "{{ item }}" with_items: - a-0 - b-0 - c-0 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for index, node in enumerate(nodes): node.execute(None) assert_that(len(caplog.records), equal_to(5)) assert_that(caplog.text, contains_string("{{ item }}"))
def test_plugin_env_will_render_node(capenv, caplog): stream = StringIO(''' - name: test0 env: set: "Joe": "{{ node }}" - name: test case echo: "{{ env.Joe }}" ''') document = loader.ordered_load(stream) context = Context() for node in TopLevel.build(document): node.execute(context) assert_that(os.getenv('Joe', None), equal_to(platform.node())) assert_that(caplog.text, contains_string("| %s" % platform.node()))
def test_plugin_shell_on_win_bad_with_retry(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: sdfsdfdsf329909092 executable: cmd attempts: 2 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string("'failure'"))
def test_plugin_shell_on_unix_nonzero_return_with_retries(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: "false" attempts: 2 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string("'failure'")) assert_that(caplog.text, contains_string("Task failed all retry attempts"))
def test_plugin_set_works(caplog): stream = StringIO(''' - name: test1 set: joe: benden - name: test2 echo: '{{ joe }}' ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('| benden'))
def test_plugin_env_set_one(capenv): stream = StringIO(''' - name: test1 env: set: "Joe": "Blarg" - name: test2 echo: hi2 - name: test3 echo: hi3 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for node in nodes: node.execute(None) assert_that('Joe' in os.environ, equal_to(True))
def test_plugin_matrix_fails_inner_task(caplog): stream = StringIO(''' - name: test1 matrix: tags: - m1 - m2 tasks: - fail: Exiting with style ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for node in nodes: node.execute(None) assert_that(caplog.text, contains_string('entry: m1')) assert_that(caplog.text, not contains_string('entry: m2')) assert_that(caplog.text, contains_string('Exiting with style'))
def test_plugin_command_with_register_result_method_on_win( caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 command: \'\Windows\System32\cmd.exe /c echo Hello world\' register: test1 - name: result1 echo: "--{{ test1.succeeded() }}--" ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('--True--'))
def test_plugin_shell_silent_failure_on_unix(caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 shell: script: 'echo Hello >&2 && false' executable: bash silent: true timeout: 5.0 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('failure')) assert_that(caplog.text, contains_string('| Hello'))
def test_plugin_command_with_register_result_on_unix( caplog, reactor): # noqa: no-cover stream = StringIO(''' - name: test1 command: echo Hello register: test1 - name: result1 echo: "--{{ test1 }}--" ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('--Hello--'))
def test_plugin_stage_does_not_create_scope(caplog): stream = StringIO(''' - name: test1 stage: scope: false tasks: - set: joe: benden - name: test2 echo: "{{ joe }}" ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(caplog.text, contains_string('| benden'))
def test_plugin_echo_renders_multiple_items(caplog): stream = StringIO(''' - name: test0 echo: "{{ item }}" with_items: - a-0 - b-0 - c-0 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for index, node in enumerate(nodes): node.execute(context) assert_that(len(caplog.records), equal_to(11)) assert_that(caplog.text, contains_string("| a-0")) assert_that(caplog.text, contains_string("| b-0")) assert_that(caplog.text, contains_string("| c-0"))
def test_plugin_matrix_runs_with_two_matrices_and_contains_tags(caplog): stream = StringIO(''' - name: test1 matrix: tags: - m1 - m2 tasks: - name: test2 matrix: tags: - m3 tasks: - name: Testing task echo: "Hello world. {{ matrix_tag }}" ''') document = loader.ordered_load(stream) assert_that(TopLevel.valid(document), equal_to(True)) nodes = TopLevel.build(document) context = Context() for node in nodes: node.execute(context) assert_that(context.variables.last(), not has_entry('matrix_tag', 'm2')) assert_that(context.variables.last(), not has_entry('matrix_list', ['m2'])) assert_that(caplog.text, contains_string('entry: m1')) assert_that(caplog.text, contains_string('entry: m2')) assert_that(caplog.text, contains_string('entry: m3')) assert_that(caplog.text, contains_string('Hello world. m3')) assert_that(context.variables.last(), not has_entry('matrix_tag', 'm2')) assert_that(context.variables.last(), not has_entry('matrix_list', ['m2']))
def test_plugin_top_level_produces_logging(caplog): stream = StringIO(''' - name: test0 echo: hi1 - name: test1 echo: hi2 - name: test2 echo: hi3 ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) for index, node in enumerate(nodes): node.execute(None) assert_that(len(caplog.records), equal_to(11)) assert_that(caplog.records[1].message, starts_with("test%d is starting" % index)) assert_that(caplog.records[3].message, starts_with("test%d has finished" % index)) caplog.clear()
def test_plugin_matrix_runs_with_two_elements(caplog): stream = StringIO(''' - name: test1 matrix: tags: - m1 - m2 tasks: - name: Testing task echo: Hello world. ''') document = loader.ordered_load(stream) assert_that(TopLevel.valid(document), equal_to(True)) nodes = TopLevel.build(document) for node in nodes: node.execute(None) assert_that(caplog.text, contains_string('entry: m1')) assert_that(caplog.text, contains_string('entry: m2')) assert_that(caplog.text, contains_string('Hello world.'))
def test_plugin_matrix_renders_node(caplog): stream = StringIO(''' - name: A simple test matrix: tags: - m1 tasks: - name: test0 echo: "{{ node }}" - name: test1 echo: "{{ node }}" - name: test2 echo: "{{ node }}" ''') document = loader.ordered_load(stream) nodes = TopLevel.build(document) context = Context() for index, node in enumerate(nodes): node.execute(context) assert_that(caplog.text, contains_string("| %s" % platform.node()))