1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/tests/integration/targets/read_csv/tasks/main.yml
Felix Fontein 24efe9ee9a
Normalize bools in tests (#5996)
* Normalize bools in tests.

* Fix typo.
2023-02-15 22:55:23 +01:00

150 lines
4.2 KiB
YAML

---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# Create basic CSV file
- name: Create unique CSV file
copy:
content: |
name,uid,gid,gecos
dag,500,500,Dag Wieërs
jeroen,501,500,Jeroen Hoekx
dest: users_unique.csv
# Read a CSV file and access user 'dag'
- name: Read users from CSV file and return a dictionary
read_csv:
path: users_unique.csv
key: name
register: users_unique
- assert:
that:
- users_unique.dict.dag.name == 'dag'
- users_unique.dict.dag.gecos == 'Dag Wieërs'
- users_unique.dict.dag.uid == '500'
- users_unique.dict.dag.gid == '500'
- users_unique.dict.jeroen.name == 'jeroen'
- users_unique.dict.jeroen.gecos == 'Jeroen Hoekx'
- users_unique.dict.jeroen.uid == '501'
- users_unique.dict.jeroen.gid == '500'
# Read a CSV file and access the first item
- name: Read users from CSV file and return a list
read_csv:
path: users_unique.csv
register: users_unique
- assert:
that:
- users_unique.list.0.name == 'dag'
- users_unique.list.0.gecos == 'Dag Wieërs'
- users_unique.list.0.uid == '500'
- users_unique.list.0.gid == '500'
- users_unique.list.1.name == 'jeroen'
- users_unique.list.1.gecos == 'Jeroen Hoekx'
- users_unique.list.1.uid == '501'
- users_unique.list.1.gid == '500'
# Create basic CSV file using semi-colon
- name: Create non-unique CSV file using semi-colon
copy:
content: |
name;uid;gid;gecos
dag;500;500;Dag Wieërs
jeroen;501;500;Jeroen Hoekx
dag;502;500;Dag Wieers
dest: users_nonunique.csv
# Read a CSV file and access user 'dag'
- name: Read users from CSV file and return a dictionary
read_csv:
path: users_nonunique.csv
key: name
unique: false
delimiter: ';'
register: users_nonunique
- assert:
that:
- users_nonunique.dict.dag.name == 'dag'
- users_nonunique.dict.dag.gecos == 'Dag Wieers'
- users_nonunique.dict.dag.uid == '502'
- users_nonunique.dict.dag.gid == '500'
- users_nonunique.dict.jeroen.name == 'jeroen'
- users_nonunique.dict.jeroen.gecos == 'Jeroen Hoekx'
- users_nonunique.dict.jeroen.uid == '501'
- users_nonunique.dict.jeroen.gid == '500'
# Read a CSV file using an non-existing dialect
- name: Read users from CSV file and return a dictionary
read_csv:
path: users_nonunique.csv
dialect: placebo
register: users_placebo
ignore_errors: true
- assert:
that:
- users_placebo is failed
- users_placebo.msg == "Dialect 'placebo' is not supported by your version of python."
# Create basic CSV file without header
- name: Create unique CSV file without header
copy:
content: |
dag,500,500,Dag Wieërs
jeroen,501,500,Jeroen Hoekx
dest: users_noheader.csv
# Read a CSV file and access user 'dag'
- name: Read users from CSV file and return a dictionary
read_csv:
path: users_noheader.csv
key: name
fieldnames: name,uid,gid,gecos
register: users_noheader
- assert:
that:
- users_noheader.dict.dag.name == 'dag'
- users_noheader.dict.dag.gecos == 'Dag Wieërs'
- users_noheader.dict.dag.uid == '500'
- users_noheader.dict.dag.gid == '500'
- users_noheader.dict.jeroen.name == 'jeroen'
- users_noheader.dict.jeroen.gecos == 'Jeroen Hoekx'
- users_noheader.dict.jeroen.uid == '501'
- users_noheader.dict.jeroen.gid == '500'
# Create broken file
- name: Create unique CSV file
copy:
content: |
name,uid,gid,gecos
dag,500,500,Dag Wieërs
jeroen,501,500,"Jeroen"Hoekx"
dest: users_broken.csv
# Read a broken CSV file using strict
- name: Read users from a broken CSV file
read_csv:
path: users_broken.csv
key: name
strict: true
register: users_broken
ignore_errors: true
- assert:
that:
- users_broken is failed
- "'Unable to process file' in users_broken.msg"