def test_good_maintainers(self): """Maintainers field happy path.""" linter = Mock() charm = {"maintainers": ["Tester <*****@*****.**>", "Tester Joe H. <*****@*****.**>"]} validate_maintainer(charm, linter) self.assertFalse(linter.err.called) self.assertFalse(linter.warn.called)
def test_no_maintainer_fields(self): """Charm has neither maintainer nor maintainers field.""" linter = Mock() charm = {} validate_maintainer(charm, linter) linter.err.assert_called_once_with( 'Charm must have either a maintainer or maintainers field')
def test_maintainers_not_list(self): """Error if maintainers field is NOT a list.""" linter = Mock() charm = { 'maintainers': 'Tester <*****@*****.**>', } validate_maintainer(charm, linter) linter.err.assert_called_once_with('Maintainers field must be a list')
def test_good_maintainer(self): """Maintainer field happy path.""" linter = Mock() charm = { 'maintainer': 'Tester <*****@*****.**>', } validate_maintainer(charm, linter) self.assertFalse(linter.err.called) self.assertFalse(linter.warn.called)
def test_maintainer_list(self): """Error if maintainer field IS a list.""" linter = Mock() charm = { 'maintainer': ['Tester <*****@*****.**>'], } validate_maintainer(charm, linter) linter.err.assert_called_once_with( 'Maintainer field must not be a list')
def test_maintainers_not_list(self): """Error if maintainers field is NOT a list.""" linter = Mock() charm = { 'maintainers': 'Tester <*****@*****.**>', } validate_maintainer(charm, linter) linter.err.assert_called_once_with( 'Maintainers field must be a list')
def test_maintainers_bad_format(self): """Warn if format of a maintainers string not RFC2822 compliant.""" linter = Mock() charm = {"maintainers": ["Tester [email protected]"]} validate_maintainer(charm, linter) linter.warn.assert_called_once_with( 'Maintainer format should be "Name <Email>", not ' '"*****@*****.**"' ) self.assertFalse(linter.err.called)
def test_two_maintainer_fields(self): """Charm has maintainer AND maintainers.""" linter = Mock() charm = { 'maintainer': 'Tester <*****@*****.**>', 'maintainers': ['Tester <*****@*****.**>'], } validate_maintainer(charm, linter) linter.err.assert_called_once_with( 'Charm must not have both maintainer and maintainers fields')
def test_maintainers_bad_format(self): """Warn if format of a maintainers string not RFC2822 compliant.""" linter = Mock() charm = { 'maintainers': ['Tester [email protected]'], } validate_maintainer(charm, linter) linter.warn.assert_called_once_with( 'Maintainer format should be "Name <Email>", not ' '"Tester [email protected]"') self.assertFalse(linter.err.called)
def test_good_maintainers(self): """Maintainers field happy path.""" linter = Mock() charm = { 'maintainers': [ 'Tester <*****@*****.**>', 'Tester Joe H. <*****@*****.**>', ] } validate_maintainer(charm, linter) self.assertFalse(linter.err.called) self.assertFalse(linter.warn.called, "linter.warn was called, sadly")
def test_maintainer_list(self): """Error if maintainer field IS a list.""" linter = Mock() charm = {"maintainer": ["Tester <*****@*****.**>"]} validate_maintainer(charm, linter) linter.err.assert_called_once_with("Maintainer field must not be a list")
def test_two_maintainer_fields(self): """Charm has maintainer AND maintainers.""" linter = Mock() charm = {"maintainer": "Tester <*****@*****.**>", "maintainers": ["Tester <*****@*****.**>"]} validate_maintainer(charm, linter) linter.err.assert_called_once_with("Charm must not have both maintainer and maintainers fields")