def test_redirect_numeric_log_fallback(self):
        # If we don't know about one of the numbers, assume they're short hashes.
        my_repo = model_helpers.create_repo()
        my_repo.project = 'chromium'
        my_repo.repo = 'chromium/src'
        my_repo.put()
        first_commit = model_helpers.create_commit()
        first_commit.git_sha = 'deadbeef' * 5
        first_commit.project = my_repo.project
        first_commit.repo = my_repo.repo
        first_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[1].git_sha = 'deadbeef' * 5
        my_numberings[1].project = my_repo.project
        my_numberings[1].repo = my_repo.repo

        for numbering in my_numberings:
            numbering.put()

        query = '100..123456'
        generated = controller.calculate_redirect(query)
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_LOG,
            redirect_url=(
                'https://chromium.googlesource.com/chromium/src/+log/%s' %
                query),
        )
        self.assertEquals(generated, expected)
Beispiel #2
0
  def test_redirect_git_numbering(self):
    my_repo = model_helpers.create_repo()
    my_repo.project = 'chromium'
    my_repo.repo = 'chromium/src'
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.project = my_repo.project
    my_commit.repo = my_repo.repo
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[1].project = my_repo.project
    my_numberings[1].repo = my_repo.repo

    for numbering in my_numberings:
      numbering.put()

    generated = controller.calculate_redirect('100')
    expected = models.Redirect(
        redirect_type=models.RedirectType.GIT_FROM_NUMBER,
        redirect_url=my_commit.redirect_url,
        repo=my_commit.repo,
        project=my_commit.project,
        git_sha=my_commit.git_sha,
        repo_url='https://chromium.googlesource.com/chromium/src/',
    )

    self.assertEqual(generated, expected)
    def test_redirect_git_numbering(self):
        my_repo = model_helpers.create_repo()
        my_repo.project = 'chromium'
        my_repo.repo = 'chromium/src'
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.project = my_repo.project
        my_commit.repo = my_repo.repo
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[1].project = my_repo.project
        my_numberings[1].repo = my_repo.repo

        for numbering in my_numberings:
            numbering.put()

        generated = controller.calculate_redirect('100')
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_FROM_NUMBER,
            redirect_url=my_commit.redirect_url,
            repo=my_commit.repo,
            project=my_commit.project,
            git_sha=my_commit.git_sha,
            repo_url='https://chromium.googlesource.com/chromium/src/',
        )

        self.assertEqual(generated, expected)
Beispiel #4
0
  def test_get_numberings(self):
    """Test getting a COMMIT_POSITION  or SVN numbering."""
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()

    for numbering in my_numberings:
      numbering.put()

    svn_numbering = my_numberings[0]
    git_numbering = my_numberings[1]

    response = self._make_api_call('get_numbering', params={
      'number': git_numbering.number,
      'numbering_type': 'COMMIT_POSITION',
      'project': git_numbering.project,
      'repo': git_numbering.repo,
      'numbering_identifier': git_numbering.numbering_identifier})

    expected = git_numbering.ToMessage()
    resp = model_helpers.convert_json_to_model_proto(
        models.NumberingMap, response.json)
    self.assertEqual(expected, resp)

    response = self._make_api_call('get_numbering', params={
      'number': svn_numbering.number,
      'numbering_type': 'SVN',
      'numbering_identifier': svn_numbering.numbering_identifier})

    expected = svn_numbering.ToMessage()
    resp = model_helpers.convert_json_to_model_proto(
        models.NumberingMap, response.json)
    self.assertEqual(expected, resp)
Beispiel #5
0
  def test_numbering_put_hooks(self):
    """Test that they key is set automatically when you put()."""
    my_numberings = model_helpers.create_numberings()
    for numbering in my_numberings:
      expected = models.NumberingMap.get_key_by_id(
          numbering.number, numbering.numbering_type, repo=numbering.repo,
          project=numbering.project, ref=numbering.numbering_identifier)
      generated = numbering.put()

      self.assertEquals(generated, expected)
Beispiel #6
0
    def test_redirect_git_sha(self):
        """Test that a stored git_sha redirects properly."""
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'
        for numbering in my_numberings:
            numbering.put()

        response = self.test_app.get('/%s' % ('b0b1beef' * 5, ), status=302)
        self.assertEqual(response.location, my_commit.redirect_url)
    def test_redirect_svn_numbering_not_found(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

        for numbering in my_numberings:
            numbering.put()

        generated = controller.calculate_redirect('101')
        self.assertEqual(generated, None)
Beispiel #8
0
  def test_redirect_svn_numbering_not_found(self):
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

    for numbering in my_numberings:
      numbering.put()

    generated = controller.calculate_redirect('101')
    self.assertEqual(generated, None)
Beispiel #9
0
  def test_redirect_git_sha(self):
    """Test that a stored git_sha redirects properly."""
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'
    for numbering in my_numberings:
      numbering.put()

    response = self.test_app.get('/%s' % ('b0b1beef' * 5,), status=302)
    self.assertEqual(
        response.location,
        my_commit.redirect_url)
    def test_redirect_over_breakpoint(self):
        """Test that requesting a number above the SVN->git switch goes to git."""
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'
        my_numberings[0].number = 291562

        for numbering in my_numberings:
            numbering.put()

        generated = controller.calculate_redirect('291562')

        self.assertEqual(generated, None)
Beispiel #11
0
  def test_redirect_over_breakpoint(self):
    """Test that requesting a number above the SVN->git switch goes to git."""
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'
    my_numberings[0].number = 291562

    for numbering in my_numberings:
      numbering.put()

    generated = controller.calculate_redirect('291562')

    self.assertEqual(generated, None)
    def test_redirect_numeric_log(self):
        # It's necessary to overwrite the model_helpers defaults with chromium/src
        # so that the numbering (which only works in chromium/src) can look up
        # the fake commits we create.
        my_repo = model_helpers.create_repo()
        my_repo.project = 'chromium'
        my_repo.repo = 'chromium/src'
        my_repo.put()
        first_commit = model_helpers.create_commit()
        first_commit.git_sha = 'deadbeef' * 5
        first_commit.project = my_repo.project
        first_commit.repo = my_repo.repo
        first_commit.put()
        second_commit = model_helpers.create_commit()
        second_commit.git_sha = 'baddecaf' * 5
        second_commit.project = my_repo.project
        second_commit.repo = my_repo.repo
        second_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[1].git_sha = 'deadbeef' * 5
        my_numberings[1].project = my_repo.project
        my_numberings[1].repo = my_repo.repo
        my_numberings.append(
            models.NumberingMap(
                numbering_type=models.NumberingType.COMMIT_POSITION,
                numbering_identifier='refs/heads/master',
                number=123456,
                project='chromium',
                repo='chromium/src',
                git_sha=second_commit.git_sha,
                redirect_url='https://crrev.com/%s' % second_commit.git_sha))

        for numbering in my_numberings:
            numbering.put()

        generated = controller.calculate_redirect('100..123456')
        expected_url = ('https://chromium.googlesource.com/chromium/src/+log/'
                        'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef..'
                        'baddecafbaddecafbaddecafbaddecafbaddecaf')
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_LOG,
            redirect_url=expected_url,
            repo=first_commit.repo,
            repo_url='https://chromium.googlesource.com/chromium/src/',
        )

        self.assertEqual(generated, expected)
Beispiel #13
0
    def test_redirect_numbering(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

        for numbering in my_numberings:
            numbering.put()

        response = self._make_api_call('get_redirect', params={'query': '100'})
        expected = {
            u'git_sha': unicode(my_commit.git_sha),
            u'repo': unicode(my_commit.repo),
            u'project': unicode(my_commit.project),
            u'redirect_url': unicode(my_commit.redirect_url),
            u'redirect_type': u'GIT_FROM_NUMBER',
            u'repo_url': u'https://cool.googlesource.com/cool_src/',
        }
        self.assertEqual(expected, response.json)
    def test_redirect_svn_numbering(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()
        my_numberings = model_helpers.create_numberings()
        my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

        for numbering in my_numberings:
            numbering.put()

        generated = controller.calculate_redirect('100')
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_FROM_NUMBER,
            redirect_url=my_commit.redirect_url,
            repo=my_commit.repo,
            project=my_commit.project,
            git_sha=my_commit.git_sha,
            repo_url='https://cool.googlesource.com/cool_src/',
        )

        self.assertEqual(generated, expected)
Beispiel #15
0
  def test_redirect_svn_numbering(self):
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

    for numbering in my_numberings:
      numbering.put()

    generated = controller.calculate_redirect('100')
    expected = models.Redirect(
        redirect_type=models.RedirectType.GIT_FROM_NUMBER,
        redirect_url=my_commit.redirect_url,
        repo=my_commit.repo,
        project=my_commit.project,
        git_sha=my_commit.git_sha,
        repo_url='https://cool.googlesource.com/cool_src/',
    )

    self.assertEqual(generated, expected)
Beispiel #16
0
  def test_redirect_numbering(self):
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()
    my_numberings = model_helpers.create_numberings()
    my_numberings[0].numbering_identifier = 'svn://svn.chromium.org/chrome'

    for numbering in my_numberings:
      numbering.put()

    response = self._make_api_call('get_redirect', params={
      'query': '100'})
    expected = {
      u'git_sha': unicode(my_commit.git_sha),
      u'repo': unicode(my_commit.repo),
      u'project': unicode(my_commit.project),
      u'redirect_url': unicode(my_commit.redirect_url),
      u'redirect_type': u'GIT_FROM_NUMBER',
      u'repo_url': u'https://cool.googlesource.com/cool_src/',
    }
    self.assertEqual(expected, response.json)