summaryrefslogtreecommitdiff
path: root/bs4/tests/test_soup.py
diff options
context:
space:
mode:
authorLeonard Richardson <leonardr@segfault.org>2021-12-17 12:54:14 -0500
committerLeonard Richardson <leonardr@segfault.org>2021-12-17 12:54:14 -0500
commit854fd52ad616d8e9c0860bba2eb4ddd93eb2dc79 (patch)
tree419c15e1c024ea09fc71efbc6d56014ae099fe52 /bs4/tests/test_soup.py
parentad52722cc6b55ce414d395e9a0860cee57c0ab2d (diff)
Fix a crash when pickling a BeautifulSoup object that has no
tree builder. [bug=1934003]
Diffstat (limited to 'bs4/tests/test_soup.py')
-rw-r--r--bs4/tests/test_soup.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/bs4/tests/test_soup.py b/bs4/tests/test_soup.py
index 67845cc..2f53a30 100644
--- a/bs4/tests/test_soup.py
+++ b/bs4/tests/test_soup.py
@@ -4,6 +4,7 @@
from pdb import set_trace
import logging
import os
+import pickle
import pytest
import sys
import tempfile
@@ -384,6 +385,24 @@ class TestNewString(SoupTest):
assert isinstance(s, Comment)
+class TestPickle(SoupTest):
+ # Test our ability to pickle the BeautifulSoup object itself.
+
+ def test_normal_pickle(self):
+ soup = self.soup("<a>some markup</a>")
+ pickled = pickle.dumps(soup)
+ unpickled = pickle.loads(pickled)
+ assert "some markup" == unpickled.a.string
+
+ def test_pickle_with_no_builder(self):
+ # We had a bug that prevented pickling from working if
+ # the builder wasn't set.
+ soup = self.soup("some markup")
+ soup.builder = None
+ pickled = pickle.dumps(soup)
+ unpickled = pickle.loads(pickled)
+ assert "some markup" == unpickled.string
+
class TestEncodingConversion(SoupTest):
# Test Beautiful Soup's ability to decode and encode from various
# encodings.