# ex:ts=4:sw=4:sts=4:et # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- # # patchtestpatch: PatchTestPatch class which abstracts a patch file # # Copyright (C) 2016 Intel Corporation # # SPDX-License-Identifier: GPL-2.0-only # import logging import utils logger = logging.getLogger('patchtest') class PatchTestPatch(object): MERGE_STATUS_INVALID = 'INVALID' MERGE_STATUS_NOT_MERGED = 'NOTMERGED' MERGE_STATUS_MERGED_SUCCESSFULL = 'PASS' MERGE_STATUS_MERGED_FAIL = 'FAIL' MERGE_STATUS = (MERGE_STATUS_INVALID, MERGE_STATUS_NOT_MERGED, MERGE_STATUS_MERGED_SUCCESSFULL, MERGE_STATUS_MERGED_FAIL) def __init__(self, path, forcereload=False): self._path = path self._forcereload = forcereload self._contents = None self._branch = None self._merge_status = PatchTestPatch.MERGE_STATUS_NOT_MERGED @property def contents(self): if self._forcereload or (not self._contents): logger.debug('Reading %s contents' % self._path) try: with open(self._path, newline='') as _f: self._contents = _f.read() except IOError: logger.warn("Reading the mbox %s failed" % self.resource) return self._contents @property def path(self): return self._path @property def branch(self): if not self._branch: self._branch = utils.get_branch(self._path) return self._branch def setmergestatus(self, status): self._merge_status = status def getmergestatus(self): return self._merge_status merge_status = property(getmergestatus, setmergestatus)