You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/win_path/tasks/main.yml

184 lines
5.5 KiB
YAML

- set_fact:
varname: WINPATH_TEST
- name: Remove {{ varname }} vars from user and machine scope
raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'
- name: Set a var at the machine and user levels
win_path:
name: "{{ varname }}"
elements: C:\{{ item }}Path
scope: "{{ item }}"
with_items:
- machine
- user
register: pathout
- name: Get path value from machine and user levels
raw: '[Environment]::GetEnvironmentVariable("{{ varname }}","{{ item.item }}")'
with_items: "{{ pathout.results }}"
register: varout
- name: Ensure output
assert:
that:
- item.0 is changed
- item.0.path_value == "C:\\" + item.0.item + "Path"
- item.1.stdout_lines[0] == 'C:\\' + item.0.item + 'Path'
with_together:
- "{{ pathout.results }}"
- "{{ varout.results }}"
- name: Remove {{ varname }} vars from user and machine scope
raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'
- name: Create multi-element path
win_path:
name: "{{ varname }}"
elements:
- C:\PathZ
- C:\PathA
register: multiout
- name: Get path value
raw: $env:{{ varname }}
register: varout
- name: Ensure output
assert:
that:
- multiout is changed
- multiout.path_value == "C:\\PathZ;C:\\PathA"
- varout.stdout_lines[0] == "C:\\PathZ;C:\\PathA"
- name: Add value to middle and end
win_path:
name: "{{ varname }}"
elements:
- C:\NewPath
- C:\PathA
- 'C:\PathWithTrailingBackslash\' # store with a trailing backslash
- '"C:\Quoted;With;Semicolons"' # embedded semicolon, wrapped in quotes
- '%SystemRoot%\stuff'
register: addout
- name: Get path value
raw: $env:{{ varname }}
register: varout
- name: Test idempotence- retry values to middle and end, test case-insensitive comparison, backslash canonicalization
win_path:
name: "{{ varname }}"
elements:
- c:\nEwPaTh
- c:\patha
- C:\pathwithtrailingbackslash # no trailing backslash, should be the same
- '"C:\Quoted;With;Semicolons"'
- '%SystemRoot%\stuff'
register: idemout
- name: Get path value
raw: $env:{{ varname }}
register: idemvarout
- name: Ensure output
assert:
that:
- addout is changed
- addout.path_value == 'C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- varout.stdout_lines[0] == ('C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff')
- idemout is not changed
- idemout.path_value == 'C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- idemvarout.stdout_lines[0] == ('C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff')
- name: Remove single element
win_path:
name: "{{ varname }}"
elements: C:\NewPath
state: absent
register: removeout
- name: Get path value
raw: $env:{{ varname }}
register: varout
- name: Test idempotence- retry remove single element
win_path:
name: "{{ varname }}"
elements: C:\NewPath
state: absent
register: idemremoveout
- name: Get path value
raw: $env:{{ varname }}
register: idemvarout
- name: Ensure output
assert:
that:
- removeout is changed
- removeout.path_value == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- varout.stdout_lines[0] == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff'
- idemremoveout is not changed
- idemremoveout.path_value == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- idemvarout.stdout_lines[0] == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff'
- name: Remove multiple elements
win_path:
name: "{{ varname }}"
elements:
- C:\PathWithTrailingBackslash # no trailing backslash
- c:\pathz
- '"C:\Quoted;With;Semicolons"'
- '%SystemRoot%\stuff\' # add trailing backslash
state: absent
register: removeout
- name: Get path value
raw: $env:{{ varname }}
register: varout
- name: Ensure output
assert:
that:
- removeout is changed
- removeout.path_value == "C:\\PathA"
- varout.stdout_lines[0] == "C:\\PathA"
- name: Test check mode add
check_mode: yes
win_path:
name: "{{ varname }}"
elements:
- C:\MissingPath
register: checkadd
- name: Get path value
raw: $env:{{ varname }}
register: checkaddvarout
- name: Test check mode remove
check_mode: yes
win_path:
name: "{{ varname }}"
elements: C:\PathA
state: absent
register: checkremove
- name: Get path value
raw: $env:{{ varname }}
register: checkremovevarout
- name: Ensure output
assert:
that:
- checkadd is changed
- checkadd.path_value == "C:\\PathA;C:\\MissingPath"
- checkaddvarout.stdout_lines[0] == "C:\\PathA" # shouldn't have actually changed the value
- checkremove is changed
- checkremove.path_value == ""
- checkremovevarout.stdout_lines[0] == "C:\\PathA" # shouldn't have actually changed the value
- name: Remove {{ varname }} vars from user and machine scope
raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'