# (c) 2014, James Tanner <tanner.jc@gmail.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

- name: prep for local facts tests
  block:
    - name: set factdir var
      set_fact: fact_dir={{output_dir}}/facts.d

    - name: create fact dir
      file: path={{ fact_dir }} state=directory

    - name: copy local facts test files
      copy: src={{ item['name'] }}.fact dest={{ fact_dir }}/ mode={{ item['mode']|default(omit) }}
      loop:
        - name: preferences
        - name: basdscript
          mode: '0775'
        - name: goodscript
          mode: '0775'
        - name: unreadable
          mode: '0000'

- name: force fact gather to get ansible_local
  setup:
    fact_path: "{{ fact_dir | expanduser }}"
    filter: "*local*"
  register: setup_result

- name: show gathering results if rerun with -vvv
  debug: var=setup_result verbosity=3

- name: check for expected results from local facts
  assert:
    that:
        - "'ansible_facts' in setup_result"
        - "'ansible_local' in setup_result.ansible_facts"
        - "'ansible_env' not in setup_result.ansible_facts"
        - "'ansible_user_id' not in setup_result.ansible_facts"
        - "'preferences' in setup_result.ansible_facts['ansible_local']"
        - "'general' in setup_result.ansible_facts['ansible_local']['preferences']"
        - "'bar' in setup_result.ansible_facts['ansible_local']['preferences']['general']"
        - "setup_result.ansible_facts['ansible_local']['preferences']['general']['bar'] == 'loaded'"
        - setup_result['ansible_facts']['ansible_local']['goodscript']['script_ran']|bool
        - setup_result['ansible_facts']['ansible_local']['basdscript'].startswith("Failure executing fact script")
        - setup_result['ansible_facts']['ansible_local']['unreadable'].startswith('error loading facts')
