コード例 #1
0
  def testConfigurationEquality(self):
    c1 = Configuration(fragments=('F1'), options={'o1': {'k1': 'v1'}})
    c2 = Configuration(fragments=('F1'), options={'o1': {'k1': 'v1'}})
    c3 = Configuration(fragments=('F2'), options={'o1': {'k1': 'v1'}})
    c4 = Configuration(fragments=('F1'), options={'o2': {'k2': 'v2'}})

    self.assertEqual(c1, c2)
    self.assertNotEqual(c1, c3)
    self.assertNotEqual(c1, c4)
    self.assertNotEqual(c3, c4)
コード例 #2
0
  def testAnalysis(self):
    config1 = Configuration(None, frozendict({'a': frozendict({'b': 'c'})}))
    config2 = Configuration(None, frozendict({'d': frozendict({'e': 'f'})}))

    ct1 = ConfiguredTarget('//foo', config1, 'hash1', None)
    ct2 = ConfiguredTarget('//foo', config2, 'hash2', None)
    ct3 = ConfiguredTarget('//foo', NullConfiguration(), 'null', None)
    ct4 = ConfiguredTarget('//bar', config1, 'hash1', None)

    res = summary.analyze((ct1, ct2, ct3, ct4))
    self.assertEqual(3, res.configurations)
    self.assertEqual(2, res.targets)
    self.assertEqual(4, res.configured_targets)
    self.assertEqual(1, res.repeated_targets)
コード例 #3
0
  def get_config(self, config_hash: str) -> Configuration:
    """Calls "bazel config" with the given config hash.

    Args:
      config_hash: A config hash as reported by "bazel cquery".

    Returns:
      The matching configuration or None if no match is found.

    Raises:
      ValueError on any parsing problems.
    """
    if config_hash == "HOST":
      return HostConfiguration()
    elif config_hash == "null":
      return NullConfiguration()

    base_args = ["config", "--output=json"]
    (returncode, stdout, stderr) = self.run_bazel(base_args + [config_hash])
    if returncode != 0:
      raise ValueError("Could not get config: " + stderr)
    config_json = json.loads(os.linesep.join(stdout))
    fragments = [
        fragment["name"].split(".")[-1] for fragment in config_json["fragments"]
    ]
    options = frozendict({
        entry["name"].split(".")[-1]: frozendict(entry["options"])
        for entry in config_json["fragmentOptions"]
    })
    return Configuration(fragments, options)
コード例 #4
0
  def testConfigurationHashAccuracy(self):
    d = {}

    options1 = frozendict({'o1': frozendict({'k1': 'v1'})})
    d[Configuration(fragments=('F1'), options=options1)] = 4
    self.assertEqual(len(d), 1)

    options2 = frozendict({'o1': frozendict({'k1': 'v1'})})
    d[Configuration(fragments=('F1'), options=options2)] = 4
    self.assertEqual(len(d), 1)

    options3 = frozendict({'o1': frozendict({'k1': 'v1'})})
    d[Configuration(fragments=('F2'), options=options3)] = 4
    self.assertEqual(len(d), 2)

    options4 = frozendict({'o2': frozendict({'k1': 'v1'})})
    d[Configuration(fragments=('F2'), options=options4)] = 4
    self.assertEqual(len(d), 3)

    options5 = frozendict({'o2': frozendict({'k2': 'v1'})})
    d[Configuration(fragments=('F2'), options=options5)] = 4
    self.assertEqual(len(d), 4)

    options6 = frozendict({'o2': frozendict({'k2': 'v2'})})
    d[Configuration(fragments=('F2'), options=options6)] = 4
    self.assertEqual(len(d), 5)
コード例 #5
0
 def testConfigurationIsHashable(self):
   options = frozendict({'o1': frozendict({'k1': 'v1'})})
   c = Configuration(fragments=('F1'), options=options)
   some_dict = {}
   some_dict[c] = 4