# use this to debug issues
#- debug: msg={{ is_private ~ ', ' ~ is_default ~ ', ' ~ privacy|default('nope')}}

- hosts: localhost
  name: test global privacy setting
  gather_facts: false
  roles:
    - a
  pre_tasks:

    - name: 'test roles: privacy'
      assert:
        that:
          - is_private and privacy is undefined or not is_private and privacy is defined
          - not is_default or is_default and privacy is defined

- hosts: localhost
  name: test import_role privacy
  gather_facts: false
  tasks:
    - import_role: name=a

    - name: role is private, var should be undefined
      assert:
        that:
          - is_private and privacy is undefined or not is_private and privacy is defined
          - not is_default or is_default and privacy is defined

- hosts: localhost
  name: test public no always overrides global on import_role
  gather_facts: false
  tasks:
    - import_role: name=a public=no

    - name: role is private, var should be undefined
      assert:
        that:
          - privacy is undefined

- hosts: localhost
  name: test public yes always overrides global on import_role
  gather_facts: false
  tasks:
    - import_role: name=a public=yes

    - name: role is private, var should be undefined
      assert:
        that:
          - privacy is defined

- hosts: localhost
  name: test global privacy setting on includes
  gather_facts: false
  tasks:
    - include_role: name=a

    - name: test include_role privacy
      assert:
        that:
          - not is_default and (is_private and privacy is undefined or not is_private and privacy is defined) or is_default and privacy is undefined

- hosts: localhost
  name: test public yes always overrides global privacy setting on includes
  gather_facts: false
  tasks:
    - include_role: name=a public=yes

    - name: test include_role privacy
      assert:
        that:
          - privacy is defined

- hosts: localhost
  name: test public no always overrides global privacy setting on includes
  gather_facts: false
  tasks:
    - include_role: name=a public=no

    - name: test include_role privacy
      assert:
        that:
          - privacy is undefined
