• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2# Copyright 2015 The PDFium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7
8import common
9
10class Suppressor:
11  def __init__(self, finder, feature_string):
12    feature_vector = feature_string.strip().split(",")
13    self.has_v8 = "V8" in feature_vector
14    self.has_xfa = "XFA" in feature_vector
15    self.suppression_set = self._LoadSuppressedSet('SUPPRESSIONS', finder)
16    self.image_suppression_set = self._LoadSuppressedSet(
17        'SUPPRESSIONS_IMAGE_DIFF',
18        finder)
19
20  def _LoadSuppressedSet(self, suppressions_filename, finder):
21    v8_option = "v8" if self.has_v8 else "nov8"
22    xfa_option = "xfa" if self.has_xfa else "noxfa"
23    with open(os.path.join(finder.TestingDir(), suppressions_filename)) as f:
24      return set(self._FilterSuppressions(
25        common.os_name(), v8_option, xfa_option, self._ExtractSuppressions(f)))
26
27  def _ExtractSuppressions(self, f):
28    return [y.split(' ') for y in
29            [x.split('#')[0].strip() for x in
30             f.readlines()] if y]
31
32  def _FilterSuppressions(self, os, js, xfa, unfiltered_list):
33    return [x[0] for x in unfiltered_list
34            if self._MatchSuppression(x, os, js, xfa)]
35
36  def _MatchSuppression(self, item, os, js, xfa):
37    os_column = item[1].split(",");
38    js_column = item[2].split(",");
39    xfa_column = item[3].split(",");
40    return (('*' in os_column or os in os_column) and
41            ('*' in js_column or js in js_column) and
42            ('*' in xfa_column or xfa in xfa_column))
43
44  def IsResultSuppressed(self, input_filename):
45    if input_filename in self.suppression_set:
46      print "%s result is suppressed" % input_filename
47      return True
48    return False
49
50  def IsExecutionSuppressed(self, input_filepath):
51    if "xfa_specific" in input_filepath and not self.has_xfa:
52      print "%s execution is suppressed" % input_filepath
53      return True
54    return False
55
56  def IsImageDiffSuppressed(self, input_filename):
57    if input_filename in self.image_suppression_set:
58      print "%s image diff comparison is suppressed" % input_filename
59      return True
60    return False
61