@@ -691,11 +691,23 @@ def test_43581(self):
691691 self .assertEqual (sys .__stdout__ .encoding , sys .__stderr__ .encoding )
692692
693693 def test_intern (self ):
694+ has_is_interned = (test .support .check_impl_detail (cpython = True )
695+ or hasattr (sys , '_is_interned' ))
694696 self .assertRaises (TypeError , sys .intern )
697+ self .assertRaises (TypeError , sys .intern , b'abc' )
698+ if has_is_interned :
699+ self .assertRaises (TypeError , sys ._is_interned )
700+ self .assertRaises (TypeError , sys ._is_interned , b'abc' )
695701 s = "never interned before" + str (random .randrange (0 , 10 ** 9 ))
696702 self .assertTrue (sys .intern (s ) is s )
703+ if has_is_interned :
704+ self .assertIs (sys ._is_interned (s ), True )
697705 s2 = s .swapcase ().swapcase ()
706+ if has_is_interned :
707+ self .assertIs (sys ._is_interned (s2 ), False )
698708 self .assertTrue (sys .intern (s2 ) is s )
709+ if has_is_interned :
710+ self .assertIs (sys ._is_interned (s2 ), False )
699711
700712 # Subclasses of string can't be interned, because they
701713 # provide too much opportunity for insane things to happen.
@@ -707,6 +719,8 @@ def __hash__(self):
707719 return 123
708720
709721 self .assertRaises (TypeError , sys .intern , S ("abc" ))
722+ if has_is_interned :
723+ self .assertIs (sys ._is_interned (S ("abc" )), False )
710724
711725 @requires_subinterpreters
712726 def test_subinterp_intern_dynamically_allocated (self ):
0 commit comments