data: PostingMeta.detached() can be chain-called.
This commit is contained in:
parent
f7883ac314
commit
2b23eba549
2 changed files with 21 additions and 1 deletions
|
@ -567,7 +567,7 @@ class PostingMeta(Metadata):
|
|||
that may want to "split" and manipulate the metadata multiple times.
|
||||
"""
|
||||
retval = type(self)(self.txn, self.index, self.post)
|
||||
retval.meta = retval.meta.new_child()
|
||||
retval.meta = self.meta.new_child()
|
||||
return retval
|
||||
|
||||
|
||||
|
|
|
@ -144,6 +144,26 @@ def test_mutable_copy():
|
|||
assert all(post.meta is None for post in txn.postings)
|
||||
assert meta.date == txn.date
|
||||
|
||||
def test_double_detached():
|
||||
txn = testutil.Transaction(filename='f', lineno=140, postings=[
|
||||
('Income:Donations', -19),
|
||||
])
|
||||
meta1 = data.PostingMeta(txn, 0).detached()
|
||||
meta1['metakey'] = 'meta'
|
||||
meta1['layerkey'] = 'one'
|
||||
meta2 = meta1.detached()
|
||||
meta2['layerkey'] = 'two'
|
||||
expected = {
|
||||
'filename': 'f',
|
||||
'lineno': 140,
|
||||
'metakey': 'meta',
|
||||
'layerkey': 'two',
|
||||
}
|
||||
assert dict(meta2) == expected
|
||||
expected['layerkey'] = 'one'
|
||||
assert dict(meta1) == expected
|
||||
assert not any(post.meta for post in txn.postings)
|
||||
|
||||
# The .get() tests are arguably testing the stdlib, but they're short and
|
||||
# they confirm that we're using the stdlib as we intend.
|
||||
def test_get_with_meta_value(simple_txn):
|
||||
|
|
Loading…
Reference in a new issue