---
- hosts: localhost
  gather_facts: no
  vars:
    host_hash_merged: {'host_var1': 'inventory 2', 'host_var2': 'inventory 1'}
    host_hash_replaced: {'host_var1': 'inventory 2'}
    group_hash_merged: {'group_var1': 'inventory 2', 'group_var2': 'inventory 1'}
    group_hash_replaced: {'group_var1': 'inventory 2'}
  tasks:

    - name: debug hash behaviour result
      debug:
        var: lookup('env', 'ANSIBLE_HASH_BEHAVIOUR')
        verbosity: 2

    - name: assert hash behaviour is merge or replace
      assert:
        that:
          - lookup('env', 'ANSIBLE_HASH_BEHAVIOUR') in ('merge', 'replace')

    - name: debug test_inventory_host_hash
      debug:
        var: hostvars['host1']['test_inventory_host_hash']
        verbosity: 2

    - name: debug test_inventory_group_hash
      debug:
        var: test_inventory_group_hash
        verbosity: 2

    - assert:
        that:
          - hostvars['host1']['test_inventory_host_hash'] == host_hash_replaced
          - test_inventory_group_hash == group_hash_replaced
      when: "lookup('env', 'ANSIBLE_HASH_BEHAVIOUR') == 'replace'"

    - assert:
        that:
          - hostvars['host1']['test_inventory_host_hash'] == host_hash_merged
          - test_inventory_group_hash == group_hash_merged
      when: "lookup('env', 'ANSIBLE_HASH_BEHAVIOUR') == 'merge'"
