From f75ecd7828f7045476aa4abfc4340417db3243f5 Mon Sep 17 00:00:00 2001 From: Andreas Mueller <t3kcit@gmail.com> Date: Tue, 13 Sep 2016 16:36:08 -0400 Subject: [PATCH] make pickle version test more stable (#7415) --- sklearn/tests/test_base.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/sklearn/tests/test_base.py b/sklearn/tests/test_base.py index 1c5c9bb744..d0df21c780 100644 --- a/sklearn/tests/test_base.py +++ b/sklearn/tests/test_base.py @@ -324,6 +324,11 @@ class TreeNoVersion(DecisionTreeClassifier): return self.__dict__ +class TreeBadVersion(DecisionTreeClassifier): + def __getstate__(self): + return dict(self.__dict__.items(), _sklearn_version="something") + + def test_pickle_version_warning(): # check that warnings are raised when unpickling in a different version @@ -335,9 +340,9 @@ def test_pickle_version_warning(): assert_no_warnings(pickle.loads, tree_pickle) # check that warning is raised on different version - tree_pickle_other = tree_pickle.replace(sklearn.__version__.encode(), - b"something") - message = ("Trying to unpickle estimator DecisionTreeClassifier from " + tree = TreeBadVersion().fit(iris.data, iris.target) + tree_pickle_other = pickle.dumps(tree) + message = ("Trying to unpickle estimator TreeBadVersion from " "version {0} when using version {1}. This might lead to " "breaking code or invalid results. " "Use at your own risk.".format("something", @@ -351,7 +356,7 @@ def test_pickle_version_warning(): tree_pickle_noversion = pickle.dumps(tree) assert_false(b"version" in tree_pickle_noversion) message = message.replace("something", "pre-0.18") - message = message.replace("DecisionTreeClassifier", "TreeNoVersion") + message = message.replace("TreeBadVersion", "TreeNoVersion") # check we got the warning about using pre-0.18 pickle assert_warns_message(UserWarning, message, pickle.loads, tree_pickle_noversion) -- GitLab