def test_invalid(self): with self.assertRaises(ValidationError): GitPackage.validate( { 'git': 'http://example.com', 'version': '0.0.1' }, )
def test_resolve_fail(self): a_contract = GitPackage.from_dict({ 'git': 'http://example.com', 'revision': '0.0.1' }) b_contract = GitPackage.from_dict({ 'git': 'http://example.com', 'revision': '0.0.2' }) a = GitUnpinnedPackage.from_contract(a_contract) b = GitUnpinnedPackage.from_contract(b_contract) c = a.incorporate(b) self.assertEqual(c.git, 'http://example.com') self.assertEqual(c.revisions, ['0.0.1', '0.0.2']) with self.assertRaises(dbt.exceptions.DependencyException): c.resolved()
def from_contract(cls, contract: GitPackage) -> 'GitUnpinnedPackage': revisions = contract.get_revisions() # we want to map None -> True warn_unpinned = contract.warn_unpinned is not False return cls(git=contract.git, revisions=revisions, warn_unpinned=warn_unpinned)
def test_resolve_ok(self): a_contract = GitPackage.from_dict({ 'git': 'http://example.com', 'revision': '0.0.1' }) b_contract = GitPackage.from_dict({ 'git': 'http://example.com', 'revision': '0.0.1', 'warn-unpinned': False }) a = GitUnpinnedPackage.from_contract(a_contract) b = GitUnpinnedPackage.from_contract(b_contract) self.assertTrue(a.warn_unpinned) self.assertFalse(b.warn_unpinned) c = a.incorporate(b) c_pinned = c.resolved() self.assertEqual(c_pinned.name, 'http://example.com') self.assertEqual(c_pinned.get_version(), '0.0.1') self.assertEqual(c_pinned.source_type(), 'git') self.assertFalse(c_pinned.warn_unpinned)
def test_default_revision(self): a_contract = GitPackage.from_dict({'git': 'http://example.com'}) self.assertEqual(a_contract.revision, None) self.assertIs(a_contract.warn_unpinned, None) a = GitUnpinnedPackage.from_contract(a_contract) self.assertEqual(a.git, 'http://example.com') self.assertEqual(a.revisions, []) self.assertIs(a.warn_unpinned, True) a_pinned = a.resolved() self.assertEqual(a_pinned.name, 'http://example.com') self.assertEqual(a_pinned.get_version(), 'HEAD') self.assertEqual(a_pinned.source_type(), 'git') self.assertIs(a_pinned.warn_unpinned, True)
def test_init(self): a_contract = GitPackage.from_dict( { 'git': 'http://example.com', 'revision': '0.0.1' }, ) self.assertEqual(a_contract.git, 'http://example.com') self.assertEqual(a_contract.revision, '0.0.1') self.assertIs(a_contract.warn_unpinned, None) a = GitUnpinnedPackage.from_contract(a_contract) self.assertEqual(a.git, 'http://example.com') self.assertEqual(a.revisions, ['0.0.1']) self.assertIs(a.warn_unpinned, True) a_pinned = a.resolved() self.assertEqual(a_pinned.name, 'http://example.com') self.assertEqual(a_pinned.get_version(), '0.0.1') self.assertEqual(a_pinned.source_type(), 'git') self.assertIs(a_pinned.warn_unpinned, True)