@@ -109,6 +109,12 @@ fn parse_plugin_param(value: &TomlItem) -> Option<ByteBuf> {
109
109
pub fn parse_profile_toml ( toml : & [ u8 ] ) -> ParseTomlProfileResult < ParsedTomlProfile > {
110
110
let toml = String :: from_utf8_lossy ( toml) ;
111
111
let doc = toml_edit:: ImDocument :: parse ( & * toml) ?;
112
+ doc. get ( "version" )
113
+ . ok_or_else ( || ParseTomlProfileError :: MissingInfo ( "version" . into ( ) ) ) ?
114
+ . as_integer ( )
115
+ . filter ( |v| * v == 1 )
116
+ . ok_or_else ( || ParseTomlProfileError :: InvalidValue ( "version" . into ( ) ) ) ?;
117
+
112
118
let profile_table = doc
113
119
. as_table ( )
114
120
. get ( "profile" )
@@ -240,7 +246,8 @@ mod tests {
240
246
241
247
#[ test]
242
248
fn test_parse_profile_toml ( ) {
243
- let toml = br#"[profile]
249
+ let toml = br#"version = 1
250
+ [profile]
244
251
name = "test"
245
252
permanent_id = "fadd694dacc3d1c0ea7cce8077927dc5"
246
253
locale = "en-US"
@@ -509,7 +516,8 @@ updated_at = 2024-04-27T09:43:17.191
509
516
510
517
#[ test]
511
518
fn test_parse_profile_toml_minimal_profile ( ) {
512
- let toml = br#"[profile]
519
+ let toml = br#"version = 1
520
+ [profile]
513
521
entry_plugins = []
514
522
"# ;
515
523
let parsed = parse_profile_toml ( toml) . unwrap ( ) ;
@@ -522,41 +530,50 @@ entry_plugins = []
522
530
523
531
#[ test]
524
532
fn test_parse_profile_toml_invalid_toml ( ) {
525
- let toml = br#"[profile"# ;
533
+ let toml = br#"version = 1
534
+ [profile"# ;
526
535
let err = parse_profile_toml ( toml) . unwrap_err ( ) ;
527
536
assert ! ( matches!( err, ParseTomlProfileError :: TomlError ( _) ) ) ;
528
537
}
529
538
530
539
#[ test]
531
540
fn test_parse_profile_toml_missing_info ( ) {
532
- let cases: [ ( & [ u8 ] , & str ) ; 5 ] = [
533
- ( b"" , "profile" ) ,
534
- ( br#"[profile]"# , "entry_plugins" ) ,
541
+ let cases: [ ( & [ u8 ] , & str ) ; 6 ] = [
542
+ ( b"" , "version" ) ,
543
+ ( b"version = 1" , "profile" ) ,
544
+ (
545
+ br#"version = 1
546
+ [profile]"# ,
547
+ "entry_plugins" ,
548
+ ) ,
535
549
(
536
550
br#"
537
- [profile]
538
- entry_plugins = []
539
- [plugins.null]
540
- "# ,
551
+ version = 1
552
+ [profile]
553
+ entry_plugins = []
554
+ [plugins.null]
555
+ "# ,
541
556
"plugins.null.plugin" ,
542
557
) ,
543
558
(
544
559
br#"
545
- [profile]
546
- entry_plugins = []
547
- [plugins.null]
548
- plugin = "null"
549
- "# ,
560
+ version = 1
561
+ [profile]
562
+ entry_plugins = []
563
+ [plugins.null]
564
+ plugin = "null"
565
+ "# ,
550
566
"plugins.null.plugin_version" ,
551
567
) ,
552
568
(
553
569
br#"
554
- [profile]
555
- entry_plugins = []
556
- [plugins.null]
557
- plugin = "null"
558
- plugin_version = 0
559
- "# ,
570
+ version = 1
571
+ [profile]
572
+ entry_plugins = []
573
+ [plugins.null]
574
+ plugin = "null"
575
+ plugin_version = 0
576
+ "# ,
560
577
"plugins.null.param" ,
561
578
) ,
562
579
] ;
@@ -572,6 +589,7 @@ entry_plugins = []
572
589
#[ test]
573
590
fn test_parse_profile_toml_invalid_entry_point ( ) {
574
591
let toml = br#"
592
+ version = 1
575
593
[profile]
576
594
name = "test"
577
595
permanent_id = "fadd694dacc3d1c0ea7cce8077927dc5"
@@ -590,49 +608,61 @@ entry_plugins = []
590
608
591
609
#[ test]
592
610
fn test_parse_profile_toml_invalid_value ( ) {
593
- let cases: [ ( & [ u8 ] , & str ) ; 10 ] = [
594
- ( b"profile = 1" , "profile " ) ,
611
+ let cases: [ ( & [ u8 ] , & str ) ; 11 ] = [
612
+ ( br#"version = "aa""# , "version " ) ,
595
613
(
596
- br#"[profile]
614
+ b"version = 1
615
+ profile = 1" ,
616
+ "profile" ,
617
+ ) ,
618
+ (
619
+ br#"version = 1
620
+ [profile]
597
621
permanent_id = 1
598
622
"# ,
599
623
"permanent_id" ,
600
624
) ,
601
625
(
602
- br#"[profile]
626
+ br#"version = 1
627
+ [profile]
603
628
permanent_id = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
604
629
"# ,
605
630
"permanent_id" ,
606
631
) ,
607
632
(
608
- br#"[profile]
633
+ br#"version = 1
634
+ [profile]
609
635
entry_plugins = 1
610
636
"# ,
611
637
"entry_plugins" ,
612
638
) ,
613
639
(
614
- br#"[profile]
640
+ br#"version = 1
641
+ [profile]
615
642
entry_plugins = [1]
616
643
"# ,
617
644
"entry_plugins" ,
618
645
) ,
619
646
(
620
- br#"plugins = 1
647
+ br#"version = 1
648
+ plugins = 1
621
649
[profile]
622
650
entry_plugins = []
623
651
"# ,
624
652
"plugins" ,
625
653
) ,
626
654
(
627
- br#"[profile]
655
+ br#"version = 1
656
+ [profile]
628
657
entry_plugins = []
629
658
[plugins.null]
630
659
plugin = 1
631
660
"# ,
632
661
"plugins.null.plugin" ,
633
662
) ,
634
663
(
635
- br#"[profile]
664
+ br#"version = 1
665
+ [profile]
636
666
entry_plugins = []
637
667
[plugins.null]
638
668
plugin = "null"
@@ -641,7 +671,8 @@ entry_plugins = []
641
671
"plugins.null.plugin_version" ,
642
672
) ,
643
673
(
644
- br#"[profile]
674
+ br#"version = 1
675
+ [profile]
645
676
entry_plugins = []
646
677
[plugins.null]
647
678
plugin = "null"
@@ -651,7 +682,8 @@ entry_plugins = []
651
682
"plugins.null.param" ,
652
683
) ,
653
684
(
654
- br#"[profile]
685
+ br#"version = 1
686
+ [profile]
655
687
entry_plugins = []
656
688
[plugins.null]
657
689
plugin = "null"
0 commit comments