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)
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)
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)
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)
def testConfigurationIsHashable(self): options = frozendict({'o1': frozendict({'k1': 'v1'})}) c = Configuration(fragments=('F1'), options=options) some_dict = {} some_dict[c] = 4