The current impl of Sentinel doesn't return the singleton instance when used with copy.copy(), but it does with copy.deepcopy(). This behavior is inconsistent. This patch adds support for copy.copy() as well as a UT. Change-Id: I33225f5a6e62be9647edacd4b3bd25702e6d8141 Closes-Bug: #1613409
32 lines
1005 B
Python
32 lines
1005 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import copy
|
|
|
|
from neutron_lib import constants
|
|
|
|
from neutron_lib.tests import _base as base
|
|
|
|
|
|
class TestNeutronLib(base.BaseTestCase):
|
|
|
|
def test_sentinel_constant(self):
|
|
foo = constants.Sentinel()
|
|
bar = copy.deepcopy(foo)
|
|
self.assertEqual(id(foo), id(bar))
|
|
|
|
def test_sentinel_copy(self):
|
|
singleton = constants.Sentinel()
|
|
self.assertEqual(copy.deepcopy(singleton), copy.copy(singleton))
|