diff --git a/test/integration/Makefile b/test/integration/Makefile index 7a496f65de2..a685cb8a6f3 100644 --- a/test/integration/Makefile +++ b/test/integration/Makefile @@ -21,8 +21,9 @@ MYTMPDIR = $(shell mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir') VAULT_PASSWORD_FILE = vault-password CONSUL_RUNNING := $(shell python consul_running.py) +EUID := $(shell id -u -r) -all: setup parsing test_var_precedence unicode test_templating_settings environment non_destructive destructive includes blocks pull check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log +all: setup parsing test_var_precedence unicode test_templating_settings environment non_destructive destructive includes blocks pull check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log test_connection setup: rm -rf $(TEST_DIR) @@ -72,6 +73,19 @@ environment: setup non_destructive: setup ansible-playbook non_destructive.yml -i $(INVENTORY) -e outputdir=$(TEST_DIR) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS) +test_connection: setup +ifeq ($(EUID),0) + # Test connection plugins when running as root (lang unspecified). + ansible-playbook test_connection.yml -i test_connection.inventory -l '!skip-during-build' $(TEST_FLAGS) + # Test connection plugins when running as root (lang=C). + LC_ALL=C LANG=C ansible-playbook test_connection.yml -i test_connection.inventory -l '!skip-during-build' $(TEST_FLAGS) +else + # Test connection plugins when not running as root (lang unspecified). + ansible-playbook test_connection.yml -i test_connection.inventory -l '!skip-during-build !chroot' $(TEST_FLAGS) + # Test connection plugins when not running as root (lang=C). + LC_ALL=C LANG=C ansible-playbook test_connection.yml -i test_connection.inventory -l '!skip-during-build !chroot' $(TEST_FLAGS) +endif + destructive: setup ansible-playbook destructive.yml -i $(INVENTORY) -e outputdir=$(TEST_DIR) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS) diff --git a/test/integration/test_connection.inventory b/test/integration/test_connection.inventory new file mode 100644 index 00000000000..b5edb558952 --- /dev/null +++ b/test/integration/test_connection.inventory @@ -0,0 +1,31 @@ +[local] +local-pipelining ansible_ssh_pipelining=true +local-no-pipelining ansible_ssh_pipelining=false +[local:vars] +ansible_host=localhost +ansible_connection=local + +[chroot] +chroot-pipelining ansible_ssh_pipelining=true +chroot-no-pipelining ansible_ssh_pipelining=false +[chroot:vars] +ansible_host=/ +ansible_connection=chroot + +[ssh] +ssh-pipelining ansible_ssh_pipelining=true +ssh-no-pipelining ansible_ssh_pipelining=false +[ssh:vars] +ansible_host=localhost +ansible_connection=ssh + +[paramiko_ssh] +paramiko_ssh-pipelining ansible_ssh_pipelining=true +paramiko_ssh-no-pipelining ansible_ssh_pipelining=false +[paramiko_ssh:vars] +ansible_host=localhost +ansible_connection=paramiko_ssh + +[skip-during-build:children] +ssh +paramiko_ssh diff --git a/test/integration/test_connection.yml b/test/integration/test_connection.yml new file mode 100644 index 00000000000..5b3d4f1bc3c --- /dev/null +++ b/test/integration/test_connection.yml @@ -0,0 +1,35 @@ +- hosts: all + gather_facts: no + serial: 1 + tasks: + + ### raw with unicode arg and output + + - name: raw with unicode arg and output + raw: echo 汉语 + register: command + - name: check output of raw with unicode arg and output + assert: { that: "'汉语' in command.stdout" } + + ### copy local file with unicode filename and content + + - name: create local file with unicode filename and content + local_action: lineinfile dest=/tmp/ansible-local-汉语 create=true line=汉语 + - name: remove remote file with unicode filename and content + file: path=/tmp/ansible-remote-汉语 state=absent + - name: copy local file with unicode filename and content + copy: src=/tmp/ansible-local-汉语 dest=/tmp/ansible-remote-汉语 + + ### fetch remote file with unicode filename and content + + - name: remove local file with unicode filename and content + local_action: file path=/tmp/ansible-local-汉语 state=absent + - name: fetch remote file with unicode filename and content + fetch: src=/tmp/ansible-remote-汉语 dest=/tmp/ansible-local-汉语 fail_on_missing=true validate_checksum=true flat=true + + ### remove local and remote temp files + + - name: remove local temp file + local_action: file path=/tmp/ansible-local-汉语 state=absent + - name: remove remote temp file + file: path=/tmp/ansible-remote-汉语 state=absent