- hosts: localhost
  gather_facts: no
  vars:
    reset_color: '\x1b\[0m'
    color: '\x1b\[[0-9];[0-9]{2}m'
    base_environment:
      ANSIBLE_INVENTORY_PLUGINS: ./plugins/inventory
      ANSIBLE_INVENTORY_ENABLED: test
      ANSIBLE_INVENTORY_CACHE: true
      ANSIBLE_CACHE_PLUGINS: ./plugins/cache
      ANSIBLE_CACHE_PLUGIN_CONNECTION: localhost:6379:0
      ANSIBLE_CACHE_PLUGIN_PREFIX: 'ansible_inventory_'
    legacy_cache:
      ANSIBLE_INVENTORY_CACHE_PLUGIN: legacy_redis
    updated_cache:
      ANSIBLE_INVENTORY_CACHE_PLUGIN: configurable_redis
  tasks:
    - name: legacy-style cache plugin should cause a warning
      command: ansible-inventory -i inventory_config --graph
      register: result
      environment: "{{ base_environment | combine(legacy_cache) }}"

    - name: test warning message
      assert:
        that:
          - expected_warning in warning
          - "'No inventory was parsed, only implicit localhost is available' in warning"
      vars:
        warning: "{{ result.stderr | regex_replace(reset_color) | regex_replace(color) | regex_replace('\\n', ' ') }}"
        expected_warning: "Cache options were provided but may not reconcile correctly unless set via set_options"

    - name: cache plugin updated to use config manager should work
      command: ansible-inventory -i inventory_config --graph
      register: result
      environment: "{{ base_environment | combine(updated_cache) }}"

    - name: test warning message
      assert:
        that:
          - unexpected_warning not in warning
          - "'No inventory was parsed, only implicit localhost is available' not in warning"
          - '"host1" in result.stdout'
      vars:
        warning: "{{ result.stderr | regex_replace(reset_color) | regex_replace(color) | regex_replace('\\n', ' ') }}"
        unexpected_warning: "Cache options were provided but may not reconcile correctly unless set via set_options"
