@@ -349,20 +349,6 @@ one_section_title_and_one_prop_test_() ->
349
349
" [title] \n "
350
350
" key1= value1 \n "
351
351
)),
352
- % % nested properties: https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html
353
- ? _assertEqual ({ok , [
354
- {title , [{key1 ,[{key11 ,<<" value11" >>},{key12 ,<<" value12" >>},{key13 ,<<" value13" >>},{key14 ,<<" value14" >>}]},{key2 ,<<" value2" >>}]}
355
- ]},
356
- parse (
357
- " [title]\n "
358
- " key1 =\n "
359
- " key11=value11\n "
360
- " key12 =value12\n "
361
- " key13= value13\n "
362
- " key14 = value14\n "
363
- " key2=value2\n "
364
- )),
365
-
366
352
% % value has characters which can not used in titles or keys
367
353
? _assertEqual ({ok , [
368
354
{title , [{key1 , <<" value1$% '" " #!+*=@/:+" >>}]}
@@ -461,6 +447,84 @@ binary_two_section_test_() ->
461
447
))
462
448
]}.
463
449
450
+ nested_properties_test_ () ->
451
+ % % https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html
452
+ {setup ,
453
+ fun setup /0 ,
454
+ fun teardown / 1 ,
455
+ [
456
+ ? _assertEqual ({ok , [
457
+ {title ,
458
+ [{key1 , [{key11 , <<" value11" >>},
459
+ {key12 , <<" value12" >>}]}]}
460
+ ]},
461
+ parse (
462
+ " [title]\n "
463
+ " key1=\n "
464
+ " key11=value11\n "
465
+ " key12 =value12\n "
466
+ )),
467
+ ? _assertEqual ({ok , [
468
+ {title ,
469
+ [{key1 , [{key11 , <<" value11" >>},
470
+ {key12 , <<" value12" >>},
471
+ {key13 , <<" value13" >>},
472
+ {key14 , <<" value14" >>}]},
473
+ {key2 , <<" value2" >>}]}
474
+ ]},
475
+ parse (
476
+ " [title]\n "
477
+ " key1 =\n "
478
+ " key11=value11\n "
479
+ " key12 =value12\n "
480
+ " key13= value13\n "
481
+ " key14 = value14\n "
482
+ " key2=value2\n "
483
+ )),
484
+ ? _assertEqual ({ok , [
485
+ {title ,
486
+ [{key1 , [{key11 , <<" value11" >>}]},
487
+ {key2 , <<" value2" >>}]}
488
+ ]},
489
+ parse (
490
+ " [title]\n "
491
+ " key1= \n "
492
+ " key11=value11\n "
493
+ " key2=value2\n "
494
+ )),
495
+ % % with comments in/between nested properties
496
+ ? _assertEqual ({ok , [
497
+ {title ,
498
+ [{key1 , [{key11 , <<" value11" >>},
499
+ {key12 , <<" value12" >>}]},
500
+ {key2 , <<" value2" >>}]}
501
+ ]},
502
+ parse (
503
+ " [title]\n "
504
+ " key1= \n "
505
+ " ; comment in nested properties\n "
506
+ " key11 = value11\n "
507
+ " ; comment between nested properties\n "
508
+ " key12 = value12\n "
509
+ " key2=value2\n "
510
+ ))% ,
511
+ % % with comments at end of nested properties (TODO Fix this case)
512
+ % ?_assertEqual({ok, [
513
+ % {title,
514
+ % [{key1, [{key11, <<"value11">>},
515
+ % {key12, <<"value12">>}]},
516
+ % {key2, <<"value2">>}]}
517
+ % ]},
518
+ % parse(
519
+ % "[title]\n"
520
+ % "key1= \n"
521
+ % " key11 = value11\n"
522
+ % " key12 = value12\n"
523
+ % "; comment after nested properties\n"
524
+ % "key2=value2\n"
525
+ % ))
526
+ ]}.
527
+
464
528
lex_error_title_test_ () ->
465
529
{setup ,
466
530
fun setup /0 ,
@@ -534,6 +598,26 @@ syntax_error_property_test_() ->
534
598
" key;comment=value\n " ))
535
599
]}.
536
600
601
+ syntax_error_nested_property_test_ () ->
602
+ {setup ,
603
+ fun setup /0 ,
604
+ fun teardown /1 ,
605
+ [
606
+ % % no nested properties after open
607
+ ? _assertMatch ({error , {syntax_error , 2 , [" syntax error before: " , _ ]}},
608
+ parse (
609
+ " [title]\n "
610
+ " key1 =\n "
611
+ )),
612
+ % % no nested properties after open (with following key)
613
+ ? _assertMatch ({error , {syntax_error , 3 , [" syntax error before: " , _ ]}},
614
+ parse (
615
+ " [title]\n "
616
+ " key1=\n "
617
+ " key2=value2\n "
618
+ ))
619
+ ]}.
620
+
537
621
dup_title_test_ () ->
538
622
{setup ,
539
623
fun setup /0 ,
0 commit comments