Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
django
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
django
Commits
1827aa90
Kaydet (Commit)
1827aa90
authored
Şub 18, 2015
tarafından
Preston Timmons
Kaydeden (comit)
Aymeric Augustin
Şub 24, 2015
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Cleaned up template loader tests.
üst
2be6b526
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
131 additions
and
113 deletions
+131
-113
foo.html
tests/template_tests/other_templates/priority/foo.html
+0
-0
index.html
tests/template_tests/templates/index.html
+1
-0
test_engine.py
tests/template_tests/test_engine.py
+125
-0
test_loaders.py
tests/template_tests/test_loaders.py
+0
-0
tests.py
tests/template_tests/tests.py
+4
-113
utils.py
tests/template_tests/utils.py
+1
-0
No files found.
tests/templates/priority/foo.html
→
tests/template
_tests/other_template
s/priority/foo.html
Dosyayı görüntüle @
1827aa90
File moved
tests/template_tests/templates/index.html
0 → 100644
Dosyayı görüntüle @
1827aa90
index
tests/template_tests/test_engine.py
0 → 100644
Dosyayı görüntüle @
1827aa90
import
os
from
django.template
import
Context
from
django.template.engine
import
Engine
from
django.test
import
SimpleTestCase
,
ignore_warnings
from
django.utils.deprecation
import
RemovedInDjango20Warning
from
.utils
import
ROOT
,
TEMPLATE_DIR
OTHER_DIR
=
os
.
path
.
join
(
ROOT
,
'other_templates'
)
@ignore_warnings
(
category
=
RemovedInDjango20Warning
)
class
DeprecatedRenderToStringTest
(
SimpleTestCase
):
def
setUp
(
self
):
self
.
engine
=
Engine
(
dirs
=
[
TEMPLATE_DIR
])
def
test_basic_context
(
self
):
self
.
assertEqual
(
self
.
engine
.
render_to_string
(
'test_context.html'
,
{
'obj'
:
'test'
}),
'obj:test
\n
'
,
)
def
test_existing_context_kept_clean
(
self
):
context
=
Context
({
'obj'
:
'before'
})
output
=
self
.
engine
.
render_to_string
(
'test_context.html'
,
{
'obj'
:
'after'
},
context_instance
=
context
,
)
self
.
assertEqual
(
output
,
'obj:after
\n
'
)
self
.
assertEqual
(
context
[
'obj'
],
'before'
)
def
test_no_empty_dict_pushed_to_stack
(
self
):
"""
#21741 -- An empty dict should not be pushed to the context stack when
render_to_string is called without a context argument.
"""
# The stack should have a length of 1, corresponding to the builtins
self
.
assertEqual
(
'1'
,
self
.
engine
.
render_to_string
(
'test_context_stack.html'
)
.
strip
(),
)
self
.
assertEqual
(
'1'
,
self
.
engine
.
render_to_string
(
'test_context_stack.html'
,
context_instance
=
Context
()
)
.
strip
(),
)
class
LoaderTests
(
SimpleTestCase
):
def
test_debug_nodelist_name
(
self
):
engine
=
Engine
(
dirs
=
[
TEMPLATE_DIR
],
debug
=
True
)
template_name
=
'index.html'
template
=
engine
.
get_template
(
template_name
)
name
=
template
.
nodelist
[
0
]
.
source
[
0
]
.
name
self
.
assertTrue
(
name
.
endswith
(
template_name
))
def
test_origin
(
self
):
engine
=
Engine
(
dirs
=
[
TEMPLATE_DIR
],
debug
=
True
)
template
=
engine
.
get_template
(
'index.html'
)
self
.
assertEqual
(
template
.
origin
.
loadname
,
'index.html'
)
def
test_origin_debug_false
(
self
):
engine
=
Engine
(
dirs
=
[
TEMPLATE_DIR
],
debug
=
False
)
template
=
engine
.
get_template
(
'index.html'
)
self
.
assertEqual
(
template
.
origin
,
None
)
def
test_loader_priority
(
self
):
"""
#21460 -- Check that the order of template loader works.
"""
loaders
=
[
'django.template.loaders.filesystem.Loader'
,
'django.template.loaders.app_directories.Loader'
,
]
engine
=
Engine
(
dirs
=
[
OTHER_DIR
,
TEMPLATE_DIR
],
loaders
=
loaders
)
template
=
engine
.
get_template
(
'priority/foo.html'
)
self
.
assertEqual
(
template
.
render
(
Context
()),
'priority
\n
'
)
def
test_cached_loader_priority
(
self
):
"""
Check that the order of template loader works. Refs #21460.
"""
loaders
=
[
(
'django.template.loaders.cached.Loader'
,
[
'django.template.loaders.filesystem.Loader'
,
'django.template.loaders.app_directories.Loader'
,
]),
]
engine
=
Engine
(
dirs
=
[
OTHER_DIR
,
TEMPLATE_DIR
],
loaders
=
loaders
)
template
=
engine
.
get_template
(
'priority/foo.html'
)
self
.
assertEqual
(
template
.
render
(
Context
()),
'priority
\n
'
)
template
=
engine
.
get_template
(
'priority/foo.html'
)
self
.
assertEqual
(
template
.
render
(
Context
()),
'priority
\n
'
)
@ignore_warnings
(
category
=
RemovedInDjango20Warning
)
class
TemplateDirsOverrideTests
(
SimpleTestCase
):
DIRS
=
((
OTHER_DIR
,
),
[
OTHER_DIR
])
def
setUp
(
self
):
self
.
engine
=
Engine
()
def
test_render_to_string
(
self
):
for
dirs
in
self
.
DIRS
:
self
.
assertEqual
(
self
.
engine
.
render_to_string
(
'test_dirs.html'
,
dirs
=
dirs
),
'spam eggs
\n
'
,
)
def
test_get_template
(
self
):
for
dirs
in
self
.
DIRS
:
template
=
self
.
engine
.
get_template
(
'test_dirs.html'
,
dirs
=
dirs
)
self
.
assertEqual
(
template
.
render
(
Context
()),
'spam eggs
\n
'
)
def
test_select_template
(
self
):
for
dirs
in
self
.
DIRS
:
template
=
self
.
engine
.
select_template
([
'test_dirs.html'
],
dirs
=
dirs
)
self
.
assertEqual
(
template
.
render
(
Context
()),
'spam eggs
\n
'
)
tests/template_tests/test_loaders.py
Dosyayı görüntüle @
1827aa90
This diff is collapsed.
Click to expand it.
tests/template_tests/tests.py
Dosyayı görüntüle @
1827aa90
...
...
@@ -13,7 +13,6 @@ from django.template import (
base
as
template_base
,
engines
,
loader
,
)
from
django.template.engine
import
Engine
from
django.template.loaders
import
app_directories
,
filesystem
from
django.test
import
RequestFactory
,
SimpleTestCase
from
django.test.utils
import
(
extend_sys_path
,
ignore_warnings
,
override_settings
,
...
...
@@ -21,126 +20,18 @@ from django.test.utils import (
from
django.utils._os
import
upath
from
django.utils.deprecation
import
RemovedInDjango20Warning
TESTS_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
os
.
path
.
abspath
(
upath
(
__file__
))))
TEMPLATES_DIR
=
os
.
path
.
join
(
TESTS_DIR
,
'templates'
)
class
TemplateLoaderTests
(
SimpleTestCase
):
def
test_loaders_security
(
self
):
ad_loader
=
app_directories
.
Loader
(
Engine
.
get_default
())
fs_loader
=
filesystem
.
Loader
(
Engine
.
get_default
())
def
test_template_sources
(
path
,
template_dirs
,
expected_sources
):
if
isinstance
(
expected_sources
,
list
):
# Fix expected sources so they are abspathed
expected_sources
=
[
os
.
path
.
abspath
(
s
)
for
s
in
expected_sources
]
# Test the two loaders (app_directores and filesystem).
func1
=
lambda
p
,
t
:
list
(
ad_loader
.
get_template_sources
(
p
,
t
))
func2
=
lambda
p
,
t
:
list
(
fs_loader
.
get_template_sources
(
p
,
t
))
for
func
in
(
func1
,
func2
):
if
isinstance
(
expected_sources
,
list
):
self
.
assertEqual
(
func
(
path
,
template_dirs
),
expected_sources
)
else
:
self
.
assertRaises
(
expected_sources
,
func
,
path
,
template_dirs
)
template_dirs
=
[
'/dir1'
,
'/dir2'
]
test_template_sources
(
'index.html'
,
template_dirs
,
[
'/dir1/index.html'
,
'/dir2/index.html'
])
test_template_sources
(
'/etc/passwd'
,
template_dirs
,
[])
test_template_sources
(
'etc/passwd'
,
template_dirs
,
[
'/dir1/etc/passwd'
,
'/dir2/etc/passwd'
])
test_template_sources
(
'../etc/passwd'
,
template_dirs
,
[])
test_template_sources
(
'../../../etc/passwd'
,
template_dirs
,
[])
test_template_sources
(
'/dir1/index.html'
,
template_dirs
,
[
'/dir1/index.html'
])
test_template_sources
(
'../dir2/index.html'
,
template_dirs
,
[
'/dir2/index.html'
])
test_template_sources
(
'/dir1blah'
,
template_dirs
,
[])
test_template_sources
(
'../dir1blah'
,
template_dirs
,
[])
# UTF-8 bytestrings are permitted.
test_template_sources
(
b
'
\xc3\x85
ngstr
\xc3\xb6
m'
,
template_dirs
,
[
'/dir1/Ångström'
,
'/dir2/Ångström'
])
# Unicode strings are permitted.
test_template_sources
(
'Ångström'
,
template_dirs
,
[
'/dir1/Ångström'
,
'/dir2/Ångström'
])
test_template_sources
(
'Ångström'
,
[
b
'/Stra
\xc3\x9f
e'
],
[
'/Straße/Ångström'
])
test_template_sources
(
b
'
\xc3\x85
ngstr
\xc3\xb6
m'
,
[
b
'/Stra
\xc3\x9f
e'
],
[
'/Straße/Ångström'
])
# Invalid UTF-8 encoding in bytestrings is not. Should raise a
# semi-useful error message.
test_template_sources
(
b
'
\xc3\xc3
'
,
template_dirs
,
UnicodeDecodeError
)
# Case insensitive tests (for win32). Not run unless we're on
# a case insensitive operating system.
if
os
.
path
.
normcase
(
'/TEST'
)
==
os
.
path
.
normpath
(
'/test'
):
template_dirs
=
[
'/dir1'
,
'/DIR2'
]
test_template_sources
(
'index.html'
,
template_dirs
,
[
'/dir1/index.html'
,
'/DIR2/index.html'
])
test_template_sources
(
'/DIR1/index.HTML'
,
template_dirs
,
[
'/DIR1/index.HTML'
])
TEMPLATES_DIR
=
os
.
path
.
join
(
os
.
path
.
dirname
(
upath
(
__file__
)),
'templates'
)
@override_settings
(
TEMPLATES
=
[{
'BACKEND'
:
'django.template.backends.django.DjangoTemplates'
,
'DIRS'
:
[
TEMPLATES_DIR
],
'OPTIONS'
:
{
# Turn DEBUG on, so that the origin file name will be kept with
# the compiled templates.
'debug'
:
True
,
}
}])
def
test_loader_debug_origin
(
self
):
load_name
=
'login.html'
# We rely on the fact the file system and app directories loaders both
# inherit the load_template method from the base Loader class, so we
# only need to test one of them.
template
=
loader
.
get_template
(
load_name
)
.
template
template_name
=
template
.
nodelist
[
0
]
.
source
[
0
]
.
name
self
.
assertTrue
(
template_name
.
endswith
(
load_name
),
'Template loaded by filesystem loader has incorrect name for debug page:
%
s'
%
template_name
)
@override_settings
(
TEMPLATES
=
[{
'BACKEND'
:
'django.template.backends.django.DjangoTemplates'
,
'DIRS'
:
[
TEMPLATES_DIR
],
'OPTIONS'
:
{
'debug'
:
True
,
'loaders'
:
[
(
'django.template.loaders.cached.Loader'
,
[
'django.template.loaders.filesystem.Loader'
,
]),
],
},
}])
def
test_cached_loader_debug_origin
(
self
):
load_name
=
'login.html'
# Test the cached loader separately since it overrides load_template.
template
=
loader
.
get_template
(
load_name
)
.
template
template_name
=
template
.
nodelist
[
0
]
.
source
[
0
]
.
name
self
.
assertTrue
(
template_name
.
endswith
(
load_name
),
'Template loaded through cached loader has incorrect name for debug page:
%
s'
%
template_name
)
template
=
loader
.
get_template
(
load_name
)
.
template
template_name
=
template
.
nodelist
[
0
]
.
source
[
0
]
.
name
self
.
assertTrue
(
template_name
.
endswith
(
load_name
),
'Cached template loaded through cached loader has incorrect name for debug page:
%
s'
%
template_name
)
@override_settings
(
DEBUG
=
True
)
def
test_loader_origin
(
self
):
template
=
loader
.
get_template
(
'login.html'
)
self
.
assertEqual
(
template
.
origin
.
loadname
,
'login.html'
)
class
TemplateTests
(
SimpleTestCase
):
@override_settings
(
DEBUG
=
True
)
def
test_string_origin
(
self
):
template
=
Template
(
'string template'
)
self
.
assertEqual
(
template
.
origin
.
source
,
'string template'
)
def
test_debug_false_origin
(
self
):
template
=
loader
.
get_template
(
'login.html'
)
self
.
assertEqual
(
template
.
origin
,
None
)
class
IncludeTests
(
SimpleTestCase
):
# Test the base loader class via the app loader. load_template
# from base is used by all shipped loaders excepting cached,
...
...
tests/template_tests/utils.py
Dosyayı görüntüle @
1827aa90
...
...
@@ -15,6 +15,7 @@ from django.utils.encoding import python_2_unicode_compatible
from
django.utils.safestring
import
mark_safe
ROOT
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
upath
(
__file__
)))
TEMPLATE_DIR
=
os
.
path
.
join
(
ROOT
,
'templates'
)
def
setup
(
templates
,
*
args
,
**
kwargs
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment