Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
d11f76f8
Commit
d11f76f8
authored
Apr 04, 2011
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Plain Diff
Issue #11761: make tests for gc.get_count() less fragile
parents
c800af41
e9b2a4cb
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
16 deletions
+27
-16
Lib/test/test_gc.py
Lib/test/test_gc.py
+27
-16
No files found.
Lib/test/test_gc.py
View file @
d11f76f8
...
...
@@ -241,32 +241,43 @@ class GCTests(unittest.TestCase):
# The following two tests are fragile:
# They precisely count the number of allocations,
# which is highly implementation-dependent.
# For example
:
#
- disposed tuples are not freed, but reused
#
- the call to assertEqual somehow avoids building its args tuple
# For example
, disposed tuples are not freed, but reused.
#
To minimize variations, though, we first store the get_count() results
#
and check them at the end.
@
refcount_test
def
test_get_count
(
self
):
# Avoid future allocation of method object
assertEqual
=
self
.
_baseAssertEqual
gc
.
collect
()
assertEqual
(
gc
.
get_count
(),
(
0
,
0
,
0
))
a
=
dict
()
# since gc.collect(), we created two objects:
# the dict, and the tuple returned by get_count()
assertEqual
(
gc
.
get_count
(),
(
2
,
0
,
0
))
a
,
b
,
c
=
gc
.
get_count
()
x
=
[]
d
,
e
,
f
=
gc
.
get_count
()
self
.
assertEqual
((
b
,
c
),
(
0
,
0
))
self
.
assertEqual
((
e
,
f
),
(
0
,
0
))
# This is less fragile than asserting that a equals 0.
self
.
assertLess
(
a
,
5
)
# Between the two calls to get_count(), at least one object was
# created (the list).
self
.
assertGreater
(
d
,
a
)
@
refcount_test
def
test_collect_generations
(
self
):
# Avoid future allocation of method object
assertEqual
=
self
.
assertEqual
gc
.
collect
()
a
=
dict
()
# This object will "trickle" into generation N + 1 after
# each call to collect(N)
x
=
[]
gc
.
collect
(
0
)
assertEqual
(
gc
.
get_count
(),
(
0
,
1
,
0
))
# x is now in gen 1
a
,
b
,
c
=
gc
.
get_count
()
gc
.
collect
(
1
)
assertEqual
(
gc
.
get_count
(),
(
0
,
0
,
1
))
# x is now in gen 2
d
,
e
,
f
=
gc
.
get_count
()
gc
.
collect
(
2
)
assertEqual
(
gc
.
get_count
(),
(
0
,
0
,
0
))
# x is now in gen 3
g
,
h
,
i
=
gc
.
get_count
()
# We don't check a, d, g since their exact values depends on
# internal implementation details of the interpreter.
self
.
assertEqual
((
b
,
c
),
(
1
,
0
))
self
.
assertEqual
((
e
,
f
),
(
0
,
1
))
self
.
assertEqual
((
h
,
i
),
(
0
,
0
))
def
test_trashcan
(
self
):
class
Ouch
:
...
...
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