@@ -159,6 +159,26 @@ def test_serialize_only_interpolation(self):
159159 rule = _make_string ([_make_string_part_interpolation ("x" )])
160160 self .assertEqual (rule .serialize (), '"${x}"' )
161161
162+ def test_serialize_strip_string_quotes (self ):
163+ rule = _make_string ([_make_string_part_chars ("hello" )])
164+ opts = SerializationOptions (strip_string_quotes = True )
165+ self .assertEqual (rule .serialize (opts ), "hello" )
166+
167+ def test_serialize_strip_string_quotes_empty (self ):
168+ rule = _make_string ([])
169+ opts = SerializationOptions (strip_string_quotes = True )
170+ self .assertEqual (rule .serialize (opts ), "" )
171+
172+ def test_serialize_strip_string_quotes_with_interpolation (self ):
173+ rule = _make_string (
174+ [
175+ _make_string_part_chars ("prefix:" ),
176+ _make_string_part_interpolation ("var.name" ),
177+ ]
178+ )
179+ opts = SerializationOptions (strip_string_quotes = True )
180+ self .assertEqual (rule .serialize (opts ), "prefix:${var.name}" )
181+
162182
163183# --- HeredocTemplateRule tests ---
164184
@@ -237,6 +257,18 @@ def test_serialize_no_preserve_invalid_raises(self):
237257 with self .assertRaises (RuntimeError ):
238258 rule .serialize (opts )
239259
260+ def test_serialize_strip_string_quotes_preserve (self ):
261+ token = HEREDOC_TEMPLATE ("<<EOF\n hello world\n EOF" )
262+ rule = HeredocTemplateRule ([token ])
263+ opts = SerializationOptions (preserve_heredocs = True , strip_string_quotes = True )
264+ self .assertEqual (rule .serialize (opts ), "<<EOF\n hello world\n EOF" )
265+
266+ def test_serialize_strip_string_quotes_no_preserve (self ):
267+ token = HEREDOC_TEMPLATE ("<<EOF\n line1\n line2\n EOF" )
268+ rule = HeredocTemplateRule ([token ])
269+ opts = SerializationOptions (preserve_heredocs = False , strip_string_quotes = True )
270+ self .assertEqual (rule .serialize (opts ), "line1\\ nline2" )
271+
240272
241273# --- HeredocTrimTemplateRule tests ---
242274
@@ -310,3 +342,15 @@ def test_serialize_no_preserve_invalid_raises(self):
310342 opts = SerializationOptions (preserve_heredocs = False )
311343 with self .assertRaises (RuntimeError ):
312344 rule .serialize (opts )
345+
346+ def test_serialize_strip_string_quotes_preserve (self ):
347+ token = HEREDOC_TRIM_TEMPLATE ("<<-EOF\n line1\n line2\n EOF" )
348+ rule = HeredocTrimTemplateRule ([token ])
349+ opts = SerializationOptions (preserve_heredocs = True , strip_string_quotes = True )
350+ self .assertEqual (rule .serialize (opts ), "<<-EOF\n line1\n line2\n EOF" )
351+
352+ def test_serialize_strip_string_quotes_no_preserve (self ):
353+ token = HEREDOC_TRIM_TEMPLATE ("<<-EOF\n line1\n line2\n EOF" )
354+ rule = HeredocTrimTemplateRule ([token ])
355+ opts = SerializationOptions (preserve_heredocs = False , strip_string_quotes = True )
356+ self .assertEqual (rule .serialize (opts ), "line1\\ nline2" )
0 commit comments