Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
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
cpython
Commits
cb2ad801
Kaydet (Commit)
cb2ad801
authored
May 02, 2014
tarafından
Zachary Ware
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Closes #18604: Merge with 3.4
üst
6b7786ba
ceced6bf
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
73 deletions
+64
-73
__init__.py
Lib/test/support/__init__.py
+55
-12
test_idle.py
Lib/test/test_idle.py
+1
-13
test_tk.py
Lib/test/test_tk.py
+1
-2
test_ttk_guionly.py
Lib/test/test_ttk_guionly.py
+1
-2
support.py
Lib/tkinter/test/support.py
+2
-44
NEWS
Misc/NEWS
+4
-0
No files found.
Lib/test/support/__init__.py
Dosyayı görüntüle @
cb2ad801
...
@@ -378,12 +378,16 @@ def forget(modname):
...
@@ -378,12 +378,16 @@ def forget(modname):
unlink
(
importlib
.
util
.
cache_from_source
(
source
,
debug_override
=
True
))
unlink
(
importlib
.
util
.
cache_from_source
(
source
,
debug_override
=
True
))
unlink
(
importlib
.
util
.
cache_from_source
(
source
,
debug_override
=
False
))
unlink
(
importlib
.
util
.
cache_from_source
(
source
,
debug_override
=
False
))
# On some platforms, should not run gui test even if it is allowed
# Check whether a gui is actually available
# in `use_resources'.
def
_is_gui_available
():
if
sys
.
platform
.
startswith
(
'win'
):
if
hasattr
(
_is_gui_available
,
'result'
):
import
ctypes
return
_is_gui_available
.
result
import
ctypes.wintypes
reason
=
None
def
_is_gui_available
():
if
sys
.
platform
.
startswith
(
'win'
):
# if Python is running as a service (such as the buildbot service),
# gui interaction may be disallowed
import
ctypes
import
ctypes.wintypes
UOI_FLAGS
=
1
UOI_FLAGS
=
1
WSF_VISIBLE
=
0x0001
WSF_VISIBLE
=
0x0001
class
USEROBJECTFLAGS
(
ctypes
.
Structure
):
class
USEROBJECTFLAGS
(
ctypes
.
Structure
):
...
@@ -403,10 +407,49 @@ if sys.platform.startswith('win'):
...
@@ -403,10 +407,49 @@ if sys.platform.startswith('win'):
ctypes
.
byref
(
needed
))
ctypes
.
byref
(
needed
))
if
not
res
:
if
not
res
:
raise
ctypes
.
WinError
()
raise
ctypes
.
WinError
()
return
bool
(
uof
.
dwFlags
&
WSF_VISIBLE
)
if
not
bool
(
uof
.
dwFlags
&
WSF_VISIBLE
):
else
:
reason
=
"gui not available (WSF_VISIBLE flag not set)"
def
_is_gui_available
():
elif
sys
.
platform
==
'darwin'
:
return
True
# The Aqua Tk implementations on OS X can abort the process if
# being called in an environment where a window server connection
# cannot be made, for instance when invoked by a buildbot or ssh
# process not running under the same user id as the current console
# user. To avoid that, raise an exception if the window manager
# connection is not available.
from
ctypes
import
cdll
,
c_int
,
pointer
,
Structure
from
ctypes.util
import
find_library
app_services
=
cdll
.
LoadLibrary
(
find_library
(
"ApplicationServices"
))
if
app_services
.
CGMainDisplayID
()
==
0
:
reason
=
"gui tests cannot run without OS X window manager"
else
:
class
ProcessSerialNumber
(
Structure
):
_fields_
=
[(
"highLongOfPSN"
,
c_int
),
(
"lowLongOfPSN"
,
c_int
)]
psn
=
ProcessSerialNumber
()
psn_p
=
pointer
(
psn
)
if
(
(
app_services
.
GetCurrentProcess
(
psn_p
)
<
0
)
or
(
app_services
.
SetFrontProcess
(
psn_p
)
<
0
)
):
reason
=
"cannot run without OS X gui process"
# check on every platform whether tkinter can actually do anything
if
not
reason
:
try
:
from
tkinter
import
Tk
root
=
Tk
()
root
.
destroy
()
except
Exception
as
e
:
err_string
=
str
(
e
)
if
len
(
err_string
)
>
50
:
err_string
=
err_string
[:
50
]
+
' [...]'
reason
=
'Tk unavailable due to {}: {}'
.
format
(
type
(
e
)
.
__name__
,
err_string
)
_is_gui_available
.
reason
=
reason
_is_gui_available
.
result
=
not
reason
return
_is_gui_available
.
result
def
is_resource_enabled
(
resource
):
def
is_resource_enabled
(
resource
):
"""Test whether a resource is enabled. Known resources are set by
"""Test whether a resource is enabled. Known resources are set by
...
@@ -421,7 +464,7 @@ def requires(resource, msg=None):
...
@@ -421,7 +464,7 @@ def requires(resource, msg=None):
executing.
executing.
"""
"""
if
resource
==
'gui'
and
not
_is_gui_available
():
if
resource
==
'gui'
and
not
_is_gui_available
():
raise
unittest
.
SkipTest
(
"Cannot use the 'gui' resource"
)
raise
ResourceDenied
(
_is_gui_available
.
reason
)
# see if the caller's module is __main__ - if so, treat as if
# see if the caller's module is __main__ - if so, treat as if
# the resource was set
# the resource was set
if
sys
.
_getframe
(
1
)
.
f_globals
.
get
(
"__name__"
)
==
"__main__"
:
if
sys
.
_getframe
(
1
)
.
f_globals
.
get
(
"__name__"
)
==
"__main__"
:
...
@@ -1589,7 +1632,7 @@ def _id(obj):
...
@@ -1589,7 +1632,7 @@ def _id(obj):
def
requires_resource
(
resource
):
def
requires_resource
(
resource
):
if
resource
==
'gui'
and
not
_is_gui_available
():
if
resource
==
'gui'
and
not
_is_gui_available
():
return
unittest
.
skip
(
"resource 'gui' is not available"
)
return
unittest
.
skip
(
_is_gui_available
.
reason
)
if
is_resource_enabled
(
resource
):
if
is_resource_enabled
(
resource
):
return
_id
return
_id
else
:
else
:
...
...
Lib/test/test_idle.py
Dosyayı görüntüle @
cb2ad801
import
unittest
import
unittest
from
test
import
support
from
test
import
support
from
test.support
import
import_module
,
use_resources
from
test.support
import
import_module
# Skip test if _thread or _tkinter wasn't built or idlelib was deleted.
# Skip test if _thread or _tkinter wasn't built or idlelib was deleted.
import_module
(
'threading'
)
# imported by PyShell, imports _thread
import_module
(
'threading'
)
# imported by PyShell, imports _thread
tk
=
import_module
(
'tkinter'
)
# imports _tkinter
tk
=
import_module
(
'tkinter'
)
# imports _tkinter
idletest
=
import_module
(
'idlelib.idle_test'
)
idletest
=
import_module
(
'idlelib.idle_test'
)
# If buildbot improperly sets gui resource (#18365, #18441), remove it
# so requires('gui') tests are skipped while non-gui tests still run.
# If there is a problem with Macs, see #18441, msg 193805
if
use_resources
and
'gui'
in
use_resources
:
try
:
root
=
tk
.
Tk
()
root
.
destroy
()
del
root
except
tk
.
TclError
:
while
'gui'
in
use_resources
:
use_resources
.
remove
(
'gui'
)
# Without test_main present, regrtest.runtest_inner (line1219) calls
# Without test_main present, regrtest.runtest_inner (line1219) calls
# unittest.TestLoader().loadTestsFromModule(this_module) which calls
# unittest.TestLoader().loadTestsFromModule(this_module) which calls
# load_tests() if it finds it. (Unittest.main does the same.)
# load_tests() if it finds it. (Unittest.main does the same.)
...
...
Lib/test/test_tk.py
Dosyayı görüntüle @
cb2ad801
...
@@ -6,8 +6,7 @@ support.import_module('_tkinter')
...
@@ -6,8 +6,7 @@ support.import_module('_tkinter')
support
.
import_fresh_module
(
'tkinter'
)
support
.
import_fresh_module
(
'tkinter'
)
# Skip test if tk cannot be initialized.
# Skip test if tk cannot be initialized.
from
tkinter.test.support
import
check_tk_availability
support
.
requires
(
'gui'
)
check_tk_availability
()
from
tkinter.test
import
runtktests
from
tkinter.test
import
runtktests
...
...
Lib/test/test_ttk_guionly.py
Dosyayı görüntüle @
cb2ad801
...
@@ -9,8 +9,7 @@ support.import_module('_tkinter')
...
@@ -9,8 +9,7 @@ support.import_module('_tkinter')
support
.
import_fresh_module
(
'tkinter'
)
support
.
import_fresh_module
(
'tkinter'
)
# Skip test if tk cannot be initialized.
# Skip test if tk cannot be initialized.
from
tkinter.test.support
import
check_tk_availability
support
.
requires
(
'gui'
)
check_tk_availability
()
from
_tkinter
import
TclError
from
_tkinter
import
TclError
from
tkinter
import
ttk
from
tkinter
import
ttk
...
...
Lib/tkinter/test/support.py
Dosyayı görüntüle @
cb2ad801
import
sys
import
sys
import
tkinter
import
tkinter
import
unittest
import
unittest
from
test.support
import
requires
_tk_unavailable
=
None
def
check_tk_availability
():
"""Check that Tk is installed and available."""
global
_tk_unavailable
if
_tk_unavailable
is
None
:
_tk_unavailable
=
False
if
sys
.
platform
==
'darwin'
:
# The Aqua Tk implementations on OS X can abort the process if
# being called in an environment where a window server connection
# cannot be made, for instance when invoked by a buildbot or ssh
# process not running under the same user id as the current console
# user. To avoid that, raise an exception if the window manager
# connection is not available.
from
ctypes
import
cdll
,
c_int
,
pointer
,
Structure
from
ctypes.util
import
find_library
app_services
=
cdll
.
LoadLibrary
(
find_library
(
"ApplicationServices"
))
if
app_services
.
CGMainDisplayID
()
==
0
:
_tk_unavailable
=
"cannot run without OS X window manager"
else
:
class
ProcessSerialNumber
(
Structure
):
_fields_
=
[(
"highLongOfPSN"
,
c_int
),
(
"lowLongOfPSN"
,
c_int
)]
psn
=
ProcessSerialNumber
()
psn_p
=
pointer
(
psn
)
if
(
(
app_services
.
GetCurrentProcess
(
psn_p
)
<
0
)
or
(
app_services
.
SetFrontProcess
(
psn_p
)
<
0
)
):
_tk_unavailable
=
"cannot run without OS X gui process"
else
:
# not OS X
import
tkinter
try
:
tkinter
.
Button
()
except
tkinter
.
TclError
as
msg
:
# assuming tk is not available
_tk_unavailable
=
"tk not available:
%
s"
%
msg
if
_tk_unavailable
:
raise
unittest
.
SkipTest
(
_tk_unavailable
)
return
def
get_tk_root
():
def
get_tk_root
():
check_tk_availability
()
# raise exception if tk unavailable
requires
(
'gui'
)
# raise exception if tk unavailable
try
:
try
:
root
=
tkinter
.
_default_root
root
=
tkinter
.
_default_root
except
AttributeError
:
except
AttributeError
:
...
...
Misc/NEWS
Dosyayı görüntüle @
cb2ad801
...
@@ -383,6 +383,10 @@ Documentation
...
@@ -383,6 +383,10 @@ Documentation
Tests
Tests
-----
-----
-
Issue
#
18604
:
Consolidated
checks
for
GUI
availability
.
All
platforms
now
at
least
check
whether
Tk
can
be
instantiated
when
the
GUI
resource
is
requested
.
-
Issue
#
21275
:
Fix
a
socket
test
on
KFreeBSD
.
-
Issue
#
21275
:
Fix
a
socket
test
on
KFreeBSD
.
-
Issue
#
21223
:
Pass
test_site
/
test_startup_imports
when
some
of
the
extensions
-
Issue
#
21223
:
Pass
test_site
/
test_startup_imports
when
some
of
the
extensions
...
...
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