@@ -801,75 +801,86 @@ Outputs {
801
801
}
802
802
}
803
803
804
- func TestAmbiguousScalarOn (t * testing.T ) {
805
- input := `
806
- Resources:
807
- MyResource:
808
- Type: AWS::RDS::DBClusterParameterGroup
809
- Properties:
810
- Parameters:
811
- require_secure_transport: "ON"
812
- `
813
- // We expect the ambiguous value "ON" to remain quoted in the output.
814
- expected := `Resources:
815
- MyResource:
816
- Type: AWS::RDS::DBClusterParameterGroup
817
- Properties:
818
- Parameters:
819
- require_secure_transport: "ON"
820
- `
821
- template , err := parse .String (input )
822
- if err != nil {
823
- t .Fatal (err )
824
- }
804
+ func TestAmbiguousScalars_StrictBooleans_On (t * testing.T ) {
805
+ // Save the original style
806
+ originalStyle := format .NodeStyle
807
+ // Restore after test completes
808
+ defer func () {
809
+ format .NodeStyle = originalStyle
810
+ }()
825
811
826
- actual := format .String (template , format.Options {Unsorted : true })
827
- if d := cmp .Diff (strings .TrimSpace (expected ), strings .TrimSpace (actual )); d != "" {
828
- t .Fatalf ("Diff: %s" , d )
829
- }
830
- }
812
+ // Override for this test only
813
+ format .NodeStyle = "strict-booleans"
831
814
832
- func TestAmbiguousScalarsInParameters (t * testing.T ) {
833
815
input := `
834
- Parameters:
835
- Param1:
836
- Default: "ON"
837
- Param2:
838
- Default: "OFF"
839
- Param3:
840
- Default: "Yes"
841
- Param4:
842
- Default: "No"
843
- Param5:
844
- Default: "True"
845
- Param6:
846
- Default: "False"
847
- Param7:
848
- Default: "Maybe"
816
+ Param1:
817
+ Default: "ON"
818
+ Param2:
819
+ Default: "OFF"
820
+ Param3:
821
+ Default: "Yes"
822
+ Param4:
823
+ Default: "No"
824
+ Param5:
825
+ Default: "True"
826
+ Param6:
827
+ Default: "False"
828
+ Param7:
829
+ Default: Maybe
830
+ Param8:
831
+ Default: ON
832
+ Param9:
833
+ Default: OFF
834
+ Param10:
835
+ Default: Yes
836
+ Param11:
837
+ Default: No
838
+ Param12:
839
+ Default: True
840
+ Param13:
841
+ Default: False
849
842
`
850
843
// The ambiguous values (Param1 through Param6) should be rendered with quotes,
851
844
// while a non-ambiguous value (Param7) may be unquoted.
852
- expected := `Parameters:
853
- Param1:
854
- Default: "ON"
845
+ expected := `
846
+ Param1:
847
+ Default: "ON"
848
+
849
+ Param2:
850
+ Default: "OFF"
851
+
852
+ Param3:
853
+ Default: "Yes"
854
+
855
+ Param4:
856
+ Default: "No"
857
+
858
+ Param5:
859
+ Default: "True"
855
860
856
- Param2 :
857
- Default: "OFF "
861
+ Param6 :
862
+ Default: "False "
858
863
859
- Param3 :
860
- Default: "Yes"
864
+ Param7 :
865
+ Default: Maybe
861
866
862
- Param4 :
863
- Default: "No "
867
+ Param8 :
868
+ Default: "ON "
864
869
865
- Param5 :
866
- Default: "True "
870
+ Param9 :
871
+ Default: "OFF "
867
872
868
- Param6 :
869
- Default: "False "
873
+ Param10 :
874
+ Default: "Yes "
870
875
871
- Param7:
872
- Default: Maybe
876
+ Param11:
877
+ Default: "No"
878
+
879
+ Param12:
880
+ Default: True
881
+
882
+ Param13:
883
+ Default: False
873
884
`
874
885
template , err := parse .String (input )
875
886
if err != nil {
@@ -882,18 +893,76 @@ Parameters:
882
893
}
883
894
}
884
895
885
- func TestNonAmbiguousScalar (t * testing.T ) {
896
+ func TestAmbiguousScalars_StrictBooleans_Off (t * testing.T ) {
886
897
input := `
887
- Resources:
888
- MyResource:
889
- Properties:
890
- example_value: "OnX"
898
+ Param1:
899
+ Default: "ON"
900
+ Param2:
901
+ Default: "OFF"
902
+ Param3:
903
+ Default: "Yes"
904
+ Param4:
905
+ Default: "No"
906
+ Param5:
907
+ Default: "True"
908
+ Param6:
909
+ Default: "False"
910
+ Param7:
911
+ Default: Maybe
912
+ Param8:
913
+ Default: ON
914
+ Param9:
915
+ Default: OFF
916
+ Param10:
917
+ Default: Yes
918
+ Param11:
919
+ Default: No
920
+ Param12:
921
+ Default: True
922
+ Param13:
923
+ Default: False
891
924
`
892
- // Since "OnX" is not an ambiguous token, it can be rendered without quotes.
893
- expected := `Resources:
894
- MyResource:
895
- Properties:
896
- example_value: OnX
925
+ // The ambiguous values (Param1 through Param6) should be rendered with quotes,
926
+ // while a non-ambiguous value (Param7) may be unquoted.
927
+ expected := `
928
+ Param1:
929
+ Default: ON
930
+
931
+ Param2:
932
+ Default: OFF
933
+
934
+ Param3:
935
+ Default: Yes
936
+
937
+ Param4:
938
+ Default: No
939
+
940
+ Param5:
941
+ Default: "True"
942
+
943
+ Param6:
944
+ Default: "False"
945
+
946
+ Param7:
947
+ Default: Maybe
948
+
949
+ Param8:
950
+ Default: ON
951
+
952
+ Param9:
953
+ Default: OFF
954
+
955
+ Param10:
956
+ Default: Yes
957
+
958
+ Param11:
959
+ Default: No
960
+
961
+ Param12:
962
+ Default: True
963
+
964
+ Param13:
965
+ Default: False
897
966
`
898
967
template , err := parse .String (input )
899
968
if err != nil {
0 commit comments