- name: test with_sequence set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=0 end=3 - name: test with_sequence backwards set_fact: "{{ 'y' + item }}={{ item }}" with_sequence: start=3 end=0 stride=-1 - name: verify with_sequence assert: that: - "x0 == '0'" - "x1 == '1'" - "x2 == '2'" - "x3 == '3'" - "y3 == '3'" - "y2 == '2'" - "y1 == '1'" - "y0 == '0'" - name: test with_sequence not failing on count == 0 debug: msg='previously failed with backward counting error' with_sequence: count=0 register: count_of_zero - name: test with_sequence does 1 when start == end debug: msg='should run once' with_sequence: start=1 end=1 register: start_equal_end - name: test with_sequence count 1 set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: count=1 register: count_of_one - assert: that: - start_equal_end is not skipped - count_of_zero is skipped - count_of_one is not skipped - name: test with_sequence shortcut syntax (end) set_fact: "{{ 'ws_z_' + item }}={{ item }}" with_sequence: '4' - name: test with_sequence shortcut syntax (start-end/stride) set_fact: "{{ 'ws_z_' + item }}=stride_{{ item }}" with_sequence: '2-6/2' - name: test with_sequence shortcut syntax (start-end:format) set_fact: "{{ 'ws_z_' + item }}={{ item }}" with_sequence: '7-8:host%02d' - name: verify with_sequence shortcut syntax assert: that: - "ws_z_1 == '1'" - "ws_z_2 == 'stride_2'" - "ws_z_3 == '3'" - "ws_z_4 == 'stride_4'" - "ws_z_6 == 'stride_6'" - "ws_z_host07 == 'host07'" - "ws_z_host08 == 'host08'" - block: - name: EXPECTED FAILURE - test invalid arg set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=0 junk=3 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test invalid arg" - ansible_failed_result.msg in [expected1, expected2] vars: expected1: "unrecognized arguments to with_sequence: ['junk']" expected2: "unrecognized arguments to with_sequence: [u'junk']" - block: - name: EXPECTED FAILURE - test bad kv value set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=A end=3 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test bad kv value" - ansible_failed_result.msg == "can't parse start=A as integer" - block: - name: EXPECTED FAILURE - test bad simple form start value set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: A-4/2 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test bad simple form start value" - ansible_failed_result.msg == "can't parse start=A as integer" - block: - name: EXPECTED FAILURE - test bad simple form end value set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: 1-B/2 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test bad simple form end value" - ansible_failed_result.msg == "can't parse end=B as integer" - block: - name: EXPECTED FAILURE - test bad simple form stride value set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: 1-4/C - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test bad simple form stride value" - ansible_failed_result.msg == "can't parse stride=C as integer" - block: - name: EXPECTED FAILURE - test no count or end set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=1 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test no count or end" - ansible_failed_result.msg == "must specify count or end in with_sequence" - block: - name: EXPECTED FAILURE - test both count and end set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=1 end=4 count=2 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test both count and end" - ansible_failed_result.msg == "can't specify both count and end in with_sequence" - block: - name: EXPECTED FAILURE - test count backwards message set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=4 end=1 stride=2 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test count backwards message" - ansible_failed_result.msg == "to count backwards make stride negative" - block: - name: EXPECTED FAILURE - test count forward message set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=1 end=4 stride=-2 - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test count forward message" - ansible_failed_result.msg == "to count forward don't make stride negative" - block: - name: EXPECTED FAILURE - test bad format string message set_fact: "{{ 'x' + item }}={{ item }}" with_sequence: start=1 end=4 format=d - fail: msg: "should not get here" rescue: - assert: that: - ansible_failed_task.name == "EXPECTED FAILURE - test bad format string message" - ansible_failed_result.msg == expected vars: expected: "bad formatting string: d"