def test_valid_schedule(self): config = Config() for sched in [ "every day", "every week", "every week on monday", "every week on tuesday", "every week on wednesday", "every week on thursday", "every week on friday", "every week on saturday", "every week on sunday", "every two weeks", "every two weeks on monday", "every two weeks on monday", "every two weeks on tuesday", "every two weeks on wednesday", "every two weeks on thursday", "every two weeks on friday", "every two weeks on saturday", "every two weeks on sunday", "every month"]: config.schedule = sched self.assertTrue(config.is_valid_schedule()) for sched in [ "every day on monday", "every month on tuesday", "some other crap", "every bla", "foo"]: config.schedule = sched self.assertFalse(config.is_valid_schedule())
def test_pyup_yml_is_valid(): with open(tools.PYUP_FILE, "r") as i: data = yaml.safe_load(i.read()) config = Config() config.update_config(data) assert config.is_valid_schedule(), "Schedule %r is invalid" % (config.schedule,)
def test_update(self): update = { "branch": "some branch", "search": False, "requirements": [ "foo.txt", { "bar.txt": { "pin": True, "compile": { "specs": ["baz.in", "foo.in"] } } } ] } config = Config() self.assertEqual(config.requirements, []) self.assertEqual(config.branch, "master") config.update_config(update) self.assertEqual(config.branch, "some branch") self.assertFalse(config.search) self.assertEqual(config.requirements[0].path, "foo.txt") self.assertEqual(config.requirements[1].path, "bar.txt") self.assertEqual(config.requirements[2].path, "baz.in") self.assertEqual(config.requirements[3].path, "foo.in") self.assertEqual(config.requirements[1].pin, True) self.assertEqual(config.requirements[1].compile.specs, ["baz.in", "foo.in"])
def test_merge_pull_request_with_remove(self): mr = Mock() mr.merge.return_value = True config = Config() config.update_config({'gitlab': {'should_remove_source_branch': True}}) self.provider._merge_merge_request(mr, config) mr.merge.assert_called_once_with(merge_when_pipeline_succeeds=True, remove_source_branch=True)
def check_pyup_yml(): with open(tools.PYUP_FILE, 'r') as i: data = yaml.safe_load(i.read()) config = Config() config.update_config(data) if not config.is_valid_schedule(): print('Schedule %r is invalid' % (config.schedule, )) sys.exit(1)
def test_assignees(self): config = Config() self.assertEqual(config.assignees, []) config.update_config({"assignees": "jay"}) self.assertEqual(config.assignees, ["jay"]) config.update_config({"assignees": ["jay", "bla"]}) self.assertEqual(config.assignees, ["jay", "bla"])
def test_gitlab(self): update = { "gitlab": { "should_remove_source_branch": True, "merge_when_pipeline_succeeds": True } } config = Config() self.assertEqual(config.gitlab.should_remove_source_branch, False) self.assertEqual(config.gitlab.merge_when_pipeline_succeeds, False) config.update_config(update) self.assertEqual(config.gitlab.should_remove_source_branch, True) self.assertEqual(config.gitlab.merge_when_pipeline_succeeds, True)
def test_create_pull_request_merge_when_pipeline_succeeds( self, merge_mock): config = Config() self.provider.create_pull_request(self.repo, "title", "body", "master", "new", False, [], config) self.assertEqual(merge_mock.call_count, 0) config.update_config( {'gitlab': { 'merge_when_pipeline_succeeds': True }}) self.provider.create_pull_request(self.repo, "title", "body", "master", "new", False, [], config) self.assertEqual(merge_mock.call_count, 1) merge_mock.assert_called_once_with(ANY, config)
def test_create_pull_request_with_label(self): self.provider.create_pull_request(self.repo, "title", "body", "master", "new", "some-label", [], Config()) self.assertEqual( self.provider.bundle.get_pull_request_class.call_count, 1) self.assertEqual( self.provider.bundle.get_pull_request_class().call_count, 1)
def test_merge_pull_request(self): mr = Mock() mr.merge.return_value = True config = Config() self.provider._merge_merge_request(mr, config) mr.merge.assert_called_once_with(merge_when_pipeline_succeeds=True, remove_source_branch=False)
def test_create_pull_request_with_exceeding_body(self): body = ''.join(["a" for i in range(0, 65536 + 1)]) self.provider.create_pull_request(self.repo, "title", body, "master", "new", False, [], Config()) self.assertEqual( self.provider.bundle.get_pull_request_class.call_count, 1) self.assertEqual( self.provider.bundle.get_pull_request_class().call_count, 1)
def test_defaults(self): config = Config() self.assertEqual(config.close_prs, True) self.assertEqual(config.branch, "master") self.assertEqual(config.pin, True) self.assertEqual(config.search, True) self.assertEqual(config.requirements, []) self.assertEqual(config.schedule, "") self.assertEqual(config.assignees, []) self.assertEqual(config.update, "all") self.assertEqual(config.pr_prefix, "")
def test_pr_prefix(self): config = Config() self.assertEqual(config.pr_prefix, '') config.update_config({"pr_prefix": "Some Prefix"}) self.assertEqual(config.pr_prefix, "Some Prefix") config.pr_prefix = "" config.update_config({"pr_prefix": "Some | Prefix"}) self.assertEqual(config.pr_prefix, "")
def test_update(self): update = { "branch": "some branch", "requirements": [ "foo.txt", {"bar.txt": {"pin": True, "compile": {"specs": ["baz.in", "foo.in"]}}} ] } config = Config() self.assertEqual(config.requirements, []) self.assertEqual(config.branch, "master") config.update(update) self.assertEqual(config.branch, "some branch") self.assertEqual(config.requirements[0].path, "foo.txt") self.assertEqual(config.requirements[1].path, "bar.txt") self.assertEqual(config.requirements[2].path, "baz.in") self.assertEqual(config.requirements[3].path, "foo.in") self.assertEqual(config.requirements[1].pin, True) self.assertEqual(config.requirements[1].compile.specs, ["baz.in", "foo.in"])
def test_valid_schedule(self): config = Config() for sched in [ "every day", "every week", "every week on monday", "every week on tuesday", "every week on wednesday", "every week on thursday", "every week on friday", "every week on saturday", "every week on sunday", "every two weeks", "every two weeks on monday", "every two weeks on tuesday", "every two weeks on wednesday", "every two weeks on thursday", "every two weeks on friday", "every two weeks on saturday", "every two weeks on sunday", "every month"]: config.schedule = sched self.assertTrue(config.is_valid_schedule()) for sched in [ "every day on monday", "every month on tuesday", "some other crap", "every bla", "foo"]: config.schedule = sched self.assertFalse(config.is_valid_schedule())
def test_generate_config(self): config = {"update": "insecure"} result = Config.generate_config_file(config) self.assertEqual( result, "# autogenerated pyup.io config file \n# see https://pyup.io/docs/configura" + \ "tion/ for all available options\n\nupdate: insecure\n" ) data = yaml.safe_load(result) self.assertEqual(config, data)
def test_can_pin(self): config = Config() config.requirements = [RequirementConfig(path="foo.txt", pin=False)] self.assertEqual(config.can_pin("foo.txt"), False) config.pin = False config.requirements[0].pin = True self.assertEqual(config.can_pin("foo.txt"), True) self.assertEqual(config.can_pin("other.txt"), False)
def test_can_update_insecure(self): config = Config() config.requirements = [RequirementConfig(path="foo.txt", update=False)] self.assertEqual(config.can_update_insecure("foo.txt"), False) config.update = False config.requirements[0].update = "insecure" self.assertEqual(config.can_update_insecure("foo.txt"), True) config.requirements[0].update = "all" self.assertEqual(config.can_update_insecure("foo.txt"), True) self.assertEqual(config.can_update_insecure("other.txt"), False)
def test_defaults(self): config = Config() self.assertEqual(config.close_prs, True) self.assertEqual(config.branch, "master") self.assertEqual(config.pin, True) self.assertEqual(config.search, True) self.assertEqual(config.requirements, []) self.assertEqual(config.schedule, "") self.assertEqual(config.assignees, []) self.assertEqual(config.commit_message_template_pin, "Pin {package_name} to latest version {new_version}") self.assertEqual( config.commit_message_template_update, "Update {package_name} from {old_version} to {new_version}") self.assertEqual(config.update, "all") self.assertEqual(config.pr_prefix, "")
def test_can_update_all(self): config = Config() config.requirements = [ RequirementConfig(path="foo.txt", update="insecure") ] self.assertEqual(config.can_update_all("foo.txt"), False) config.update = "insecure" config.requirements[0].update = "all" self.assertEqual(config.can_update_all("foo.txt"), True) self.assertEqual(config.can_update_all("other.txt"), False)
def test_pin_file(self): config = Config() config.requirements = [ RequirementConfig(path="foo.txt", pin=False) ] self.assertEqual(config.pin_file("foo.txt"), False) config.pin = False config.requirements[0].pin = True self.assertEqual(config.pin_file("foo.txt"), True) self.assertEqual(config.pin_file("other.txt"), False)
def setUp(self): self.config = Config() self.req1 = Mock() self.req1.key = "foo" self.req1.latest_version_within_specs = "0.2" self.req1.needs_update = True self.req1.is_pinned = True self.req1.is_insecure = False self.req2 = Mock() self.req2.key = "bar" self.req2.latest_version_within_specs = "0.2" self.req2.needs_update = True self.req2.is_pinned = True self.req2.is_insecure = False self.req_file = Mock() self.req_file.requirements = [self.req1, self.req2] self.req_file.path = "requirements.txt" self.update = Update(requirement_files=[self.req_file], config=self.config)
def test_repr(self): config = Config() self.assertEqual(config.__repr__(), str(config.__dict__))
# consult the git log if you need to determine who owns an individual # contribution. # # This Source Code Form is subject to the terms of the Mozilla Public License, # v. 2.0. If a copy of the MPL was not distributed with this file, You can # obtain one at http://mozilla.org/MPL/2.0/. # # END HEADER from __future__ import division, print_function, absolute_import import os import sys import yaml from pyup.config import Config from hypothesistooling import ROOT PYUP_FILE = os.path.join(ROOT, '.pyup.yml') if __name__ == '__main__': with open(PYUP_FILE, 'r') as i: data = yaml.safe_load(i.read()) config = Config() config.update_config(data) if not config.is_valid_schedule(): print('Schedule %r is invalid' % (config.schedule, )) sys.exit(1)
# consult the git log if you need to determine who owns an individual # contribution. # # This Source Code Form is subject to the terms of the Mozilla Public License, # v. 2.0. If a copy of the MPL was not distributed with this file, You can # obtain one at http://mozilla.org/MPL/2.0/. # # END HEADER from __future__ import division, print_function, absolute_import import os import sys import yaml from pyup.config import Config from hypothesistooling import ROOT PYUP_FILE = os.path.join(ROOT, '.pyup.yml') if __name__ == '__main__': with open(PYUP_FILE, 'r') as i: data = yaml.safe_load(i.read()) config = Config() config.update_config(data) if not config.is_valid_schedule(): print('Schedule %r is invalid' % (config.schedule,)) sys.exit(1)