示例#1
0
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'"))
示例#2
0
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()))
示例#3
0
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'"))
示例#4
0
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))
示例#5
0
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))
示例#6
0
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'))
示例#7
0
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'))
示例#8
0
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))
示例#9
0
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))
示例#10
0
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'))
示例#11
0
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 }}"))
示例#12
0
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()))
示例#13
0
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'"))
示例#14
0
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"))
示例#15
0
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'))
示例#16
0
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))
示例#17
0
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'))
示例#18
0
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--'))
示例#19
0
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'))
示例#20
0
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--'))
示例#21
0
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'))
示例#22
0
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"))
示例#23
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']))
示例#24
0
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()
示例#25
0
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.'))
示例#26
0
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()))