def watch_pr(): """ Automatically create/update sandboxes for PRs opened by members of the watched organization on the watched repository """ team_username_list = get_username_list_from_team(settings.WATCH_ORGANIZATION) for username in team_username_list: for pr in get_pr_list_from_username(username, settings.WATCH_FORK): pr_sub_domain = 'pr{number}.sandbox'.format(number=pr.number) instance, created = OpenEdXInstance.objects.get_or_create( sub_domain=pr_sub_domain, fork_name=pr.fork_name, branch_name=pr.branch_name, ) truncated_title = truncatewords(pr.title, 4) instance.name = 'PR#{pr.number}: {truncated_title} ({pr.username}) - {i.reference_name}'\ .format(pr=pr, i=instance, truncated_title=truncated_title) instance.github_pr_number = pr.number instance.ansible_extra_settings = pr.extra_settings instance.save() if created: logger.info('New PR found, creating sandbox: %s', pr) provision_instance(instance.pk)
def watch_pr(): """ Automatically create/update sandboxes for PRs opened by members of the watched organization on the watched repository """ team_username_list = get_username_list_from_team(settings.WATCH_ORGANIZATION) for username in team_username_list: for pr in get_pr_list_from_username(username, settings.WATCH_FORK): sub_domain = 'pr{number}.sandbox'.format(number=pr.number) instance, created = SingleVMOpenEdXInstance.objects.update_or_create_from_pr(pr, sub_domain) if created: logger.info('New PR found, creating sandbox: %s', pr) provision_instance(instance.pk)
def watch_pr(): """ Automatically create/update sandboxes for PRs opened by members of the watched organization on the watched repository """ team_username_list = get_username_list_from_team( settings.WATCH_ORGANIZATION) for username in team_username_list: for pr in get_pr_list_from_username(username, settings.WATCH_FORK): sub_domain = 'pr{number}.sandbox'.format(number=pr.number) instance, created = OpenEdXInstance.objects.update_or_create_from_pr( pr, sub_domain) if created: logger.info('New PR found, creating sandbox: %s', pr) provision_instance(instance.pk)
def test_get_pr_list_from_username(self, mock_get_pr_by_number): """ Get list of open PR for user """ responses.add( responses.GET, 'https://api.github.com/search/issues?sort=created' '&q=is:open is:pr author:itsjeyd repo:edx/edx-platform', match_querystring=True, body=get_raw_fixture('github/api_search_open_prs_user.json'), content_type='application/json; charset=utf8', status=200) mock_get_pr_by_number.side_effect = lambda fork_name, pr_number: [fork_name, pr_number] self.assertEqual( github.get_pr_list_from_username('itsjeyd', 'edx/edx-platform'), [['edx/edx-platform', 9147], ['edx/edx-platform', 9146]] )
def test_get_pr_list_from_username(self, mock_get_pr_by_number): """ Get list of open PR for user """ responses.add( responses.GET, 'https://api.github.com/search/issues?sort=created' '&q=is:open is:pr author:itsjeyd repo:edx/edx-platform', match_querystring=True, body=get_raw_fixture('github/api_search_open_prs_user.json'), content_type='application/json; charset=utf8', status=200) mock_get_pr_by_number.side_effect = lambda fork_name, pr_number: [ fork_name, pr_number ] self.assertEqual( github.get_pr_list_from_username('itsjeyd', 'edx/edx-platform'), [['edx/edx-platform', 9147], ['edx/edx-platform', 9146]])