예제 #1
0
  def testReduceConditions(self):
    # Set conditions span all of the supported architectures for linux.
    a = SourceSet(set(['foo.c']),
                  set([SourceListCondition('ia32', 'Chromium', 'linux'),
                       SourceListCondition('x64', 'Chromium', 'linux'),
                       SourceListCondition('arm', 'Chromium', 'linux'),
                       SourceListCondition('arm64', 'Chromium', 'linux'),
                       SourceListCondition('arm-neon', 'Chromium', 'linux'),
                       SourceListCondition('mipsel', 'Chromium', 'linux'),
                       SourceListCondition('mips64el', 'Chromium', 'linux')]))
    gg.ReduceConditionalLogic(a)

    # Conditions should reduce to a single condition with wild-card for arch.
    expected = set([SourceListCondition('*', 'Chromium', 'linux')])
    self.assertEqualSets(expected, a.conditions)

    # Set conditions span all of the supported architectures for windows.
    b = SourceSet(set(['foo.c']),
                  set([SourceListCondition('ia32', 'Chromium', 'win'),
                       SourceListCondition('x64', 'Chromium', 'win')]))
    gg.ReduceConditionalLogic(b)

    # Conditions should reduce to a single condition with wild-card for
    expected = set([SourceListCondition('*', 'Chromium', 'win')])
    self.assertEqualSets(expected, b.conditions)

    # Set conditions span all supported architectures and brandings for windows.
    b = SourceSet(set(['foo.c']),
                  set([SourceListCondition('ia32', 'Chromium', 'win'),
                       SourceListCondition('x64', 'Chromium', 'win'),
                       SourceListCondition('ia32', 'Chrome', 'win'),
                       SourceListCondition('x64', 'Chrome', 'win')]))
    gg.ReduceConditionalLogic(b)
    expected = set([SourceListCondition('*', '*', 'win')])
    self.assertEqualSets(expected, b.conditions)

    # Set conditions span all supported platforms.
    c = SourceSet(set(['foo.c']),
                  set([SourceListCondition('x64', 'Chromium', 'win'),
                       SourceListCondition('x64', 'Chromium', 'mac'),
                       SourceListCondition('x64', 'Chromium', 'linux'),
                       SourceListCondition('x64', 'Chromium', 'android')]))
    gg.ReduceConditionalLogic(c)
    expected = set([SourceListCondition('x64', 'Chromium', '*')])
    self.assertEqualSets(expected, c.conditions)

    # Spans all architectures for Chromium, but also all targets for ia32 & win.
    d = SourceSet(set(['foo.c']),
                  set([SourceListCondition('x64', 'Chromium', 'win'),
                       SourceListCondition('ia32', 'Chromium', 'win'),
                       SourceListCondition('ia32', 'Chrome', 'win')]))
    gg.ReduceConditionalLogic(d)
    expected = set([SourceListCondition('*', 'Chromium', 'win'),
                    SourceListCondition('ia32', '*', 'win')])
    self.assertEqualSets(expected, d.conditions)
예제 #2
0
  def testReduceConditions_fullSpan(self):
    # Build SourceSet with conditions spanning every combination of attributes.
    ss = SourceSet(set(['foo.c']), set())
    for arch in gg.SUPPORT_MATRIX[gg.Attr.ARCHITECTURE]:
      for target in gg.SUPPORT_MATRIX[gg.Attr.TARGET]:
        for platform in gg.SUPPORT_MATRIX[gg.Attr.PLATFORM]:
          ss.conditions.add(SourceListCondition(arch, target, platform))

    gg.ReduceConditionalLogic(ss)
    expected = set([SourceListCondition('*', '*', '*')])
    self.assertEqualSets(expected, ss.conditions)