text: # -*- coding: utf-8 -*-
  from __future__ import absolute_import, unicode_literals
  
  import os
  
  import salt.loader
  import salt.minion
  import salt.utils.yaml
  from salt.utils.files import fopen
  from tests.support.case import ModuleCase
  from tests.support.helpers import with_tempdir
  from tests.support.mock import patch
  
  
  class BasePillarTest(ModuleCase):
      @with_tempdir()
      def test_minion_cache_should_cache_files(self, tempdir):
          pillar = {"this": {"is": {"some": "pillar data"}}}
          opts = {
              "file_client": "remote",
              "minion_pillar_cache": "true",
              "master_type": "local",
              "discovery": False,
              "master": "local",
              "__role": "",
              "id": "test",
              "saltenv": "base",
              "pillar_cache": True,
              "pillar_cache_backend": "disk",
              "pillar_cache_ttl": 3600,
              "cachedir": tempdir,
              "state_top": "top.sls",
              "pillar_roots": {"base": tempdir},
              "extension_modules": tempdir,
              "file_ignore_regex": [],
              "file_ignore_glob": [],
              "pillar": pillar,
          }
          with patch("salt.loader.grains", return_value={}), patch(
              "salt.minion.SMinion.gen_modules"
          ), patch("salt.minion.SMinion.eval_master"), patch(
              "salt.minion.install_zmq"
          ), patch(
              "salt.minion.ZMQDefaultLoop.current"
          ):
              minion = salt.minion.SMinion(opts)
              self.assertTrue("pillar" in os.listdir(tempdir))
              pillar_cache = os.path.join(tempdir, "pillar")
              self.assertTrue("top.sls" in os.listdir(pillar_cache))
              self.assertTrue("cache.sls" in os.listdir(pillar_cache))
              with fopen(os.path.join(pillar_cache, "cache.sls"), "rb") as f:
                  cached_data = salt.utils.yaml.safe_load(f)
                  assert cached_data == pillar
  