Exemple #1
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)
    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)
    def test_redirect_gerrit(self):
        query = 'c'
        generated = controller.calculate_redirect(query)

        expected = models.Redirect(
            redirect_type=models.RedirectType.GERRIT,
            redirect_url='https://chromium-review.googlesource.com/c',
        )

        self.assertEquals(generated, expected)
    def test_redirect_rietveld(self):
        query = '10000000'
        generated = controller.calculate_redirect(query)

        expected = models.Redirect(
            redirect_type=models.RedirectType.RIETVELD,
            redirect_url='https://codereview.chromium.org/%s' % query,
        )

        self.assertEquals(generated, expected)
Exemple #6
0
  def test_redirect_rietveld(self):
    query = '10000000'
    generated = controller.calculate_redirect(query)

    expected = models.Redirect(
        redirect_type=models.RedirectType.RIETVELD,
        redirect_url='https://codereview.chromium.org/%s' % query,
    )

    self.assertEquals(generated, expected)
    def test_redirect_short_git_sha(self):
        query = 'deadbeef'
        generated = controller.calculate_redirect(query)

        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_SHORT,
            redirect_url='https://chromium.googlesource.com/chromium/src/+/%s'
            % (query, ),
        )

        self.assertEquals(generated, expected)
Exemple #8
0
  def test_redirect_unknown_full_sha(self):
    query = 'deadbb0b' * 5
    generated = controller.calculate_redirect(query)

    expected = models.Redirect(
        redirect_type=models.RedirectType.GIT_SHORT,
        redirect_url='https://chromium.googlesource.com/chromium/src/+/%s' % (
          query,),
    )

    self.assertEquals(generated, expected)
    def test_redirect_unknown_full_sha(self):
        query = 'deadbb0b' * 5
        generated = controller.calculate_redirect(query)

        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_FULL,
            redirect_url='https://chromium.googlesource.com/chromium/src/+/%s'
            % (query, ),
        )

        self.assertEquals(generated, expected)
    def test_redirect_short_log(self):
        query = 'deadbeef..baddecaf'
        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)
Exemple #11
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)
    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)
Exemple #13
0
 def get(self, query, extra_paths):
     if self.request.referer:
         logging.info('referer is %s' % self.request.referer)
     redirect = controller.calculate_redirect(query)
     if redirect:
         redirect_url = str(redirect.redirect_url)
         if extra_paths:
             redirect_url = redirect_url + extra_paths
         if self.request.query_string:
             redirect_url = redirect_url + '?' + self.request.query_string
         logging.info('redirecting to %s' % redirect_url)
         self.redirect(redirect_url)
     else:
         self.abort(404)
Exemple #14
0
 def get(self, query, extra_paths):
   if self.request.referer:
     logging.info('referer is %s' % self.request.referer)
   redirect = controller.calculate_redirect(query)
   if redirect:
     redirect_url = str(redirect.redirect_url)
     if extra_paths:
       redirect_url = redirect_url + extra_paths
     if self.request.query_string:
       redirect_url = redirect_url + '?' + self.request.query_string
     logging.info('redirecting to %s' % redirect_url)
     self.redirect(redirect_url)
   else:
     self.abort(404)
    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_crazy_log(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()

        query = '%s^^!...FEEDCAFEB33F@' % my_commit.git_sha
        generated = controller.calculate_redirect(query)
        expected_url = 'https://cool.googlesource.com/cool_src/+log/%s' % query
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_LOG,
            redirect_url=expected_url,
            repo=my_commit.repo,
            repo_url='https://cool.googlesource.com/cool_src/',
        )
        self.assertEqual(generated, expected)
Exemple #17
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)
Exemple #19
0
  def test_redirect_git_sha(self):
    my_repo = model_helpers.create_repo()
    my_repo.put()
    my_commit = model_helpers.create_commit()
    my_commit.put()

    generated = controller.calculate_redirect(my_commit.git_sha)
    expected = models.Redirect(
        redirect_type=models.RedirectType.GIT_FULL,
        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(expected, generated)
    def test_redirect_git_sha(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        my_commit = model_helpers.create_commit()
        my_commit.put()

        generated = controller.calculate_redirect(my_commit.git_sha)
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_FULL,
            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(expected, generated)
    def test_redirect_full_log(self):
        my_repo = model_helpers.create_repo()
        my_repo.put()
        first_commit = model_helpers.create_commit()
        first_commit.put()
        second_commit = model_helpers.create_commit()
        second_commit.git_sha = 'baddecaf' * 5
        second_commit.put()

        query = '%s..%s' % (first_commit.git_sha, second_commit.git_sha)
        generated = controller.calculate_redirect(query)
        expected_url = 'https://cool.googlesource.com/cool_src/+log/%s' % query
        expected = models.Redirect(
            redirect_type=models.RedirectType.GIT_LOG,
            redirect_url=expected_url,
            repo=first_commit.repo,
            repo_url='https://cool.googlesource.com/cool_src/',
        )
        self.assertEqual(generated, expected)
Exemple #22
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)
    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)
Exemple #24
0
  def get_redirect(self, redirect):
    """Performs a 4-way redirect based on a query string.

    parameters:
      query:  a svn revision / git commit position, full git sha, short git sha,
              or a rietveld issue number.

    return values:
      query: the query specified.
      redirect_type:  whether this is a full git sha, short git sha, numbering,
                      or rietveld issue.
      redirect_url:  where to redirect the user.

      ---- the following only appear for full git shas and numbering redirects
      project:  the googlecode project the repository is under.
      repo:  the repository the commit it in.
      repo_url:  the url to the repo (useful for constructing range queries).
      git_sha:  the git sha of the commit.
    """
    redirect = controller.calculate_redirect(redirect.query)
    if not redirect:
      raise endpoints.NotFoundException('commit not found.')  # pragma: no cover
    return redirect
Exemple #25
0
    def get_redirect(self, redirect):
        """Performs a 4-way redirect based on a query string.

    parameters:
      query:  a svn revision / git commit position, full git sha, short git sha,
              or a rietveld issue number.

    return values:
      query: the query specified.
      redirect_type:  whether this is a full git sha, short git sha, numbering,
                      or rietveld issue.
      redirect_url:  where to redirect the user.

      ---- the following only appear for full git shas and numbering redirects
      project:  the googlecode project the repository is under.
      repo:  the repository the commit it in.
      repo_url:  the url to the repo (useful for constructing range queries).
      git_sha:  the git sha of the commit.
    """
        redirect = controller.calculate_redirect(redirect.query)
        if not redirect:
            raise endpoints.NotFoundException(
                'commit not found.')  # pragma: no cover
        return redirect
Exemple #26
0
  def test_redirect_unknown(self):
    query = 'not_a_git_commit'
    generated = controller.calculate_redirect(query)

    self.assertEquals(generated, None)
    def test_redirect_unknown(self):
        query = 'not_a_git_commit'
        generated = controller.calculate_redirect(query)

        self.assertEquals(generated, None)