普通文本  |  42行  |  1.4 KB

# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import utils
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import autotemp

class desktopui_FontCache(test.test):
    version = 1
    _mounted = False
    _new_cache = None
    _FONTCACHE = "/usr/share/cache/fontconfig"


    def _mount_cache(self):
        utils.system("mount -n --bind %s %s" % (self._new_cache.name,
                                                self._FONTCACHE))
        self._mounted = True

    def _unmount_cache(self):
        if self._mounted:
            utils.system("umount -n %s" % self._FONTCACHE)
            self._mounted = False

    def cleanup(self):
        self._unmount_cache()
        if self._new_cache:
            self._new_cache.clean()


    def run_once(self):
        self._new_cache = autotemp.tempdir(unique_id="new-font-cache")
        # Generate a new cache and compare it to the existing cache. Ideally, we
        # would simply point fc-cache to a new cache location, however, that
        # doesn't seem possible. So, just bind mount the existing cache location
        # out of rootfs temporarily.
        self._mount_cache()
        utils.system("fc-cache -fv")
        self._unmount_cache()
        utils.system("diff -qr %s %s" % (self._FONTCACHE, self._new_cache.name))