Esempio n. 1
0
  def test_get_spec_uuid(self):
    tester = self

    missing_name = 'missing_name'
    unique_name = 'unique_name'
    ambiguous_name = 'ambiguous_name'
    bundle_counts = {
      missing_name: 0,
      unique_name: 1,
      ambiguous_name: 2,
    }
    test_uuids = ['test_uuid_0', 'test_uuid_1', 'test_uuid_2']
    test_uuid = test_uuids[0]

    class MockBundleModel(object):
      def search_bundles(self, **kwargs):
        tester.assertEqual(set(kwargs), set(['name']))
        tester.assertIn(kwargs['name'], bundle_counts)
        count = bundle_counts[kwargs['name']]
        return [
          type('MockBundle', (object,), {'uuid': test_uuids[i]})
          for i in range(count)
        ]
    model = MockBundleModel()

    # Test that get_spec_uuid is idempotent on generated uuids.
    uuid = spec_util.generate_uuid()
    self.assertEqual(uuid, canonicalize.get_spec_uuid(model, uuid))
    # Test that get_spec_uuid returns the uuid of a uniquely named bundle.
    self.assertEqual(test_uuid, canonicalize.get_spec_uuid(model, unique_name))
    # Test that get_spec_uuid raises UsageErrors on missing or ambigious names.
    self.assertRaises(
      UsageError,
      lambda: canonicalize.get_spec_uuid(model, missing_name),
    )
    self.assertRaises(
      UsageError,
      lambda: canonicalize.get_spec_uuid(model, ambiguous_name),
    )
    # Test that get_spec_uuid raises UsageError on specs that can be neither a
    # name or a uuid.
    self.assertRaises(
      UsageError,
      lambda: canonicalize.get_spec_uuid(model, 'names have no exclamations!'),
    )
Esempio n. 2
0
 def get_spec_uuid(self, bundle_spec):
   return canonicalize.get_spec_uuid(self.model, bundle_spec)