Fixes Paginator.validate_number not raising a PageNotAnInteger exception when passed a non-int-castable type.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16026 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Beaven 2011-04-13 11:28:42 +00:00
parent 3b6c5e5eb2
commit 13bb06984c
2 changed files with 11 additions and 2 deletions

View File

@ -22,7 +22,7 @@ class Paginator(object):
"Validates the given 1-based page number." "Validates the given 1-based page number."
try: try:
number = int(number) number = int(number)
except ValueError: except (TypeError, ValueError):
raise PageNotAnInteger('That page number is not an integer') raise PageNotAnInteger('That page number is not an integer')
if number < 1: if number < 1:
raise EmptyPage('That page number is less than 1') raise EmptyPage('That page number is less than 1')

View File

@ -1,4 +1,4 @@
from django.core.paginator import Paginator, EmptyPage from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils.unittest import TestCase from django.utils.unittest import TestCase
class PaginatorTests(TestCase): class PaginatorTests(TestCase):
@ -27,6 +27,15 @@ class PaginatorTests(TestCase):
"For '%s', expected %s but got %s. Paginator parameters were: %s" "For '%s', expected %s but got %s. Paginator parameters were: %s"
% (name, expected, got, params)) % (name, expected, got, params))
def test_invalid_page_number(self):
"""
Tests that invalid page numbers result in the correct exception being
raised.
"""
paginator = Paginator([1, 2, 3], 2)
self.assertRaises(PageNotAnInteger, paginator.validate_number, None)
self.assertRaises(PageNotAnInteger, paginator.validate_number, 'x')
def test_paginator(self): def test_paginator(self):
""" """
Tests the paginator attributes using varying inputs. Tests the paginator attributes using varying inputs.