Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
persistent
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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
persistent
Commits
03725344
Commit
03725344
authored
Jun 29, 2012
by
Tres Seaver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Zap legacy tests (we have coverage in test_persistent.
parent
b42cb77a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
351 deletions
+0
-351
persistent/tests/testPersistent.py
persistent/tests/testPersistent.py
+0
-351
No files found.
persistent/tests/testPersistent.py
deleted
100644 → 0
View file @
b42cb77a
#############################################################################
#
# Copyright (c) 2003 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
import
unittest
Picklable
=
None
# avoid global import of Persistent; updated later
class
_Base
(
object
):
def
_makeOne
(
self
):
class
P
(
self
.
_getTargetClass
()):
pass
return
P
()
def
_makeJar
(
self
):
from
persistent.tests.utils
import
ResettingJar
jar
=
ResettingJar
()
jar
.
cache
=
jar
.
_cache
=
self
.
_makeCache
(
jar
)
return
jar
def
test_oid_initial_value
(
self
):
obj
=
self
.
_makeOne
()
self
.
assertEqual
(
obj
.
_p_oid
,
None
)
def
test_oid_mutable_and_deletable_when_no_jar
(
self
):
from
persistent._compat
import
_b
OID
=
_b
(
'
\
x01
'
*
8
)
obj
=
self
.
_makeOne
()
obj
.
_p_oid
=
OID
self
.
assertEqual
(
obj
.
_p_oid
,
OID
)
del
obj
.
_p_oid
self
.
assertEqual
(
obj
.
_p_oid
,
None
)
def
test_oid_immutable_when_in_jar
(
self
):
from
persistent._compat
import
_b
OID
=
_b
(
'
\
x01
'
*
8
)
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
# Can't change oid of cache object.
def
deloid
():
del
obj
.
_p_oid
self
.
assertRaises
(
ValueError
,
deloid
)
def
setoid
():
obj
.
_p_oid
=
OID
self
.
assertRaises
(
ValueError
,
setoid
)
# The value returned for _p_changed can be one of:
# 0 -- it is not changed
# 1 -- it is changed
# None -- it is a ghost
def
test_change_via_setattr
(
self
):
from
persistent
import
CHANGED
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
x
=
1
self
.
assertEqual
(
obj
.
_p_changed
,
1
)
self
.
assertEqual
(
obj
.
_p_state
,
CHANGED
)
self
.
assertTrue
(
obj
in
jar
.
registered
)
def
test_setattr_then_mark_uptodate
(
self
):
from
persistent
import
UPTODATE
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
x
=
1
obj
.
_p_changed
=
0
self
.
assertEqual
(
obj
.
_p_changed
,
0
)
self
.
assertEqual
(
obj
.
_p_state
,
UPTODATE
)
def
test_set_changed_directly
(
self
):
from
persistent
import
CHANGED
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
_p_changed
=
1
self
.
assertEqual
(
obj
.
_p_changed
,
1
)
self
.
assertEqual
(
obj
.
_p_state
,
CHANGED
)
self
.
assertTrue
(
obj
in
jar
.
registered
)
def
test_cant_ghostify_if_changed
(
self
):
from
persistent
import
CHANGED
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
# setting obj._p_changed to None ghostifies if the
# object is in the up-to-date state, but not otherwise.
obj
.
x
=
1
obj
.
_p_changed
=
None
self
.
assertEqual
(
obj
.
_p_changed
,
1
)
self
.
assertEqual
(
obj
.
_p_state
,
CHANGED
)
def
test_can_ghostify_if_uptodate
(
self
):
from
persistent
import
GHOST
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
x
=
1
obj
.
_p_changed
=
0
obj
.
_p_changed
=
None
self
.
assertEqual
(
obj
.
_p_changed
,
None
)
self
.
assertEqual
(
obj
.
_p_state
,
GHOST
)
def
test_can_ghostify_if_changed_but_del__p_changed
(
self
):
from
persistent
import
GHOST
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
# You can transition directly from modified to ghost if
# you delete the _p_changed attribute.
obj
.
x
=
1
del
obj
.
_p_changed
self
.
assertEqual
(
obj
.
_p_changed
,
None
)
self
.
assertEqual
(
obj
.
_p_state
,
GHOST
)
def
test__p_state_immutable
(
self
):
from
persistent
import
CHANGED
from
persistent
import
GHOST
from
persistent
import
STICKY
from
persistent
import
UPTODATE
# make sure we can't write to _p_state; we don't want yet
# another way to change state!
obj
=
self
.
_makeOne
()
def
setstate
(
value
):
obj
.
_p_state
=
value
self
.
assertRaises
(
Exception
,
setstate
,
GHOST
)
self
.
assertRaises
(
Exception
,
setstate
,
UPTODATE
)
self
.
assertRaises
(
Exception
,
setstate
,
CHANGED
)
self
.
assertRaises
(
Exception
,
setstate
,
STICKY
)
def
test_invalidate
(
self
):
from
persistent
import
GHOST
from
persistent
import
UPTODATE
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
_p_activate
()
self
.
assertEqual
(
obj
.
_p_changed
,
0
)
self
.
assertEqual
(
obj
.
_p_state
,
UPTODATE
)
obj
.
_p_invalidate
()
self
.
assertEqual
(
obj
.
_p_changed
,
None
)
self
.
assertEqual
(
obj
.
_p_state
,
GHOST
)
def
test_invalidate_activate_invalidate
(
self
):
from
persistent
import
GHOST
obj
=
self
.
_makeOne
()
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
_p_invalidate
()
obj
.
_p_activate
()
obj
.
x
=
1
obj
.
_p_invalidate
()
self
.
assertEqual
(
obj
.
_p_changed
,
None
)
self
.
assertEqual
(
obj
.
_p_state
,
GHOST
)
def
test_initial_serial
(
self
):
from
persistent.timestamp
import
_ZERO
obj
=
self
.
_makeOne
()
self
.
assertEqual
(
obj
.
_p_serial
,
_ZERO
)
def
test_setting_serial_w_invalid_types_raises
(
self
):
# Serial must be an 8-digit string
from
persistent._compat
import
_u
obj
=
self
.
_makeOne
()
def
set
(
val
):
obj
.
_p_serial
=
val
self
.
assertRaises
(
ValueError
,
set
,
1
)
self
.
assertRaises
(
ValueError
,
set
,
"0123"
)
self
.
assertRaises
(
ValueError
,
set
,
"012345678"
)
self
.
assertRaises
(
ValueError
,
set
,
_u
(
"01234567"
))
def
test_del_serial_returns_to_initial
(
self
):
from
persistent.timestamp
import
_ZERO
from
persistent._compat
import
_b
obj
=
self
.
_makeOne
()
obj
.
_p_serial
=
_b
(
"01234567"
)
del
obj
.
_p_serial
self
.
assertEqual
(
obj
.
_p_serial
,
_ZERO
)
def
test_initial_mtime
(
self
):
obj
=
self
.
_makeOne
()
self
.
assertEqual
(
obj
.
_p_mtime
,
None
)
def
test_setting_serial_sets_mtime_to_now
(
self
):
from
persistent.timestamp
import
TimeStamp
obj
=
self
.
_makeOne
()
ts
=
TimeStamp
(
2011
,
2
,
16
,
14
,
37
,
22.0
)
obj
.
_p_serial
=
ts
.
raw
()
self
.
assertEqual
(
obj
.
_p_mtime
,
ts
.
timeTime
())
self
.
assertTrue
(
isinstance
(
obj
.
_p_mtime
,
float
))
def
test_pickle_unpickle
(
self
):
import
pickle
from
persistent
import
Persistent
# see above: class must be at module scope to be pickled.
global
Picklable
class
Picklable
(
Persistent
):
pass
obj
=
Picklable
()
obj
.
attr
=
"test"
s
=
pickle
.
dumps
(
obj
)
obj2
=
pickle
.
loads
(
s
)
self
.
assertEqual
(
obj
.
attr
,
obj2
.
attr
)
def
test___getattr__
(
self
):
from
persistent
import
CHANGED
from
persistent
import
Persistent
class
H1
(
Persistent
):
def
__init__
(
self
):
self
.
n
=
0
def
__getattr__
(
self
,
attr
):
self
.
n
+=
1
return
self
.
n
obj
=
H1
()
self
.
assertEqual
(
obj
.
larry
,
1
)
self
.
assertEqual
(
obj
.
curly
,
2
)
self
.
assertEqual
(
obj
.
moe
,
3
)
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
_p_invalidate
()
# The simple Jar used for testing re-initializes the object.
self
.
assertEqual
(
obj
.
larry
,
1
)
# The getattr hook modified the object, so it should now be
# in the changed state.
self
.
assertEqual
(
obj
.
_p_changed
,
1
)
self
.
assertEqual
(
obj
.
_p_state
,
CHANGED
)
self
.
assertEqual
(
obj
.
curly
,
2
)
self
.
assertEqual
(
obj
.
moe
,
3
)
def
test___getattribute__
(
self
):
from
persistent
import
CHANGED
from
persistent
import
Persistent
class
H2
(
Persistent
):
def
__init__
(
self
):
self
.
n
=
0
def
__getattribute__
(
self
,
attr
):
supergetattr
=
super
(
H2
,
self
).
__getattribute__
try
:
return
supergetattr
(
attr
)
except
AttributeError
:
n
=
supergetattr
(
"n"
)
self
.
n
=
n
+
1
return
n
+
1
obj
=
H2
()
self
.
assertEqual
(
obj
.
larry
,
1
)
self
.
assertEqual
(
obj
.
curly
,
2
)
self
.
assertEqual
(
obj
.
moe
,
3
)
jar
=
self
.
_makeJar
()
jar
.
add
(
obj
)
obj
.
_p_invalidate
()
# The simple Jar used for testing re-initializes the object.
self
.
assertEqual
(
obj
.
larry
,
1
)
# The getattr hook modified the object, so it should now be
# in the changed state.
self
.
assertEqual
(
obj
.
_p_changed
,
1
)
self
.
assertEqual
(
obj
.
_p_state
,
CHANGED
)
self
.
assertEqual
(
obj
.
curly
,
2
)
self
.
assertEqual
(
obj
.
moe
,
3
)
# TODO: Need to decide how __setattr__ and __delattr__ should work,
# then write tests.
class
PythonPersistentTests
(
unittest
.
TestCase
,
_Base
):
def
_getTargetClass
(
self
):
from
persistent.persistence
import
Persistent
return
Persistent
def
_makeCache
(
self
,
jar
):
from
persistent.picklecache
import
PickleCache
return
PickleCache
(
jar
)
_add_to_suite
=
[
PythonPersistentTests
]
try
:
import
persistent.cPersistence
except
ImportError
:
pass
else
:
class
CPersistentTests
(
unittest
.
TestCase
,
_Base
):
def
_getTargetClass
(
self
):
from
persistent.cPersistence
import
Persistent
return
Persistent
def
_makeCache
(
self
,
jar
):
from
persistent.cPickleCache
import
PickleCache
return
PickleCache
(
jar
)
_add_to_suite
.
append
(
CPersistentTests
)
def
test_suite
():
return
unittest
.
TestSuite
((
[
unittest
.
makeSuite
(
x
)
for
x
in
_add_to_suite
]
))
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