@@ -979,6 +979,186 @@ func Test_stats(t *testing.T) {
979
979
}
980
980
}
981
981
982
+ func TestFlagsWithEmptySymbols (t * testing.T ) {
983
+ tests := []struct {
984
+ name string
985
+ styles styles
986
+ symbols symbols
987
+ st * gitstatus.Status
988
+ want string
989
+ }{
990
+ {
991
+ name : "empty stashed symbol hides stash count" ,
992
+ styles : styles {
993
+ Clear : "StyleClear" ,
994
+ Modified : "StyleMod" ,
995
+ Stashed : "StyleStash" ,
996
+ },
997
+ symbols : symbols {
998
+ Modified : "SymbolMod" ,
999
+ Stashed : "" , // empty symbol should hide this flag
1000
+ },
1001
+ st : & gitstatus.Status {
1002
+ NumStashed : 5 ,
1003
+ Porcelain : gitstatus.Porcelain {
1004
+ NumModified : 2 ,
1005
+ },
1006
+ },
1007
+ want : "StyleClear" + "StyleModSymbolMod2" ,
1008
+ },
1009
+ {
1010
+ name : "empty modified symbol hides modified count" ,
1011
+ styles : styles {
1012
+ Clear : "StyleClear" ,
1013
+ Modified : "StyleMod" ,
1014
+ Stashed : "StyleStash" ,
1015
+ },
1016
+ symbols : symbols {
1017
+ Modified : "" , // empty symbol should hide this flag
1018
+ Stashed : "SymbolStash" ,
1019
+ },
1020
+ st : & gitstatus.Status {
1021
+ NumStashed : 1 ,
1022
+ Porcelain : gitstatus.Porcelain {
1023
+ NumModified : 2 ,
1024
+ },
1025
+ },
1026
+ want : "StyleClear" + "StyleStashSymbolStash1" ,
1027
+ },
1028
+ {
1029
+ name : "empty staged symbol hides staged count" ,
1030
+ styles : styles {
1031
+ Clear : "StyleClear" ,
1032
+ Staged : "StyleStaged" ,
1033
+ Stashed : "StyleStash" ,
1034
+ },
1035
+ symbols : symbols {
1036
+ Staged : "" , // empty symbol should hide this flag
1037
+ Stashed : "SymbolStash" ,
1038
+ },
1039
+ st : & gitstatus.Status {
1040
+ NumStashed : 1 ,
1041
+ Porcelain : gitstatus.Porcelain {
1042
+ NumStaged : 3 ,
1043
+ },
1044
+ },
1045
+ want : "StyleClear" + "StyleStashSymbolStash1" ,
1046
+ },
1047
+ {
1048
+ name : "empty untracked symbol hides untracked count" ,
1049
+ styles : styles {
1050
+ Clear : "StyleClear" ,
1051
+ Untracked : "StyleUntracked" ,
1052
+ Stashed : "StyleStash" ,
1053
+ },
1054
+ symbols : symbols {
1055
+ Untracked : "" , // empty symbol should hide this flag
1056
+ Stashed : "SymbolStash" ,
1057
+ },
1058
+ st : & gitstatus.Status {
1059
+ NumStashed : 1 ,
1060
+ Porcelain : gitstatus.Porcelain {
1061
+ NumUntracked : 7 ,
1062
+ },
1063
+ },
1064
+ want : "StyleClear" + "StyleStashSymbolStash1" ,
1065
+ },
1066
+ {
1067
+ name : "empty conflict symbol hides conflict count" ,
1068
+ styles : styles {
1069
+ Clear : "StyleClear" ,
1070
+ Conflict : "StyleConflict" ,
1071
+ Stashed : "StyleStash" ,
1072
+ },
1073
+ symbols : symbols {
1074
+ Conflict : "" , // empty symbol should hide this flag
1075
+ Stashed : "SymbolStash" ,
1076
+ },
1077
+ st : & gitstatus.Status {
1078
+ NumStashed : 1 ,
1079
+ Porcelain : gitstatus.Porcelain {
1080
+ NumConflicts : 3 ,
1081
+ },
1082
+ },
1083
+ want : "StyleClear" + "StyleStashSymbolStash1" ,
1084
+ },
1085
+ {
1086
+ name : "empty clean symbol hides clean flag" ,
1087
+ styles : styles {
1088
+ Clear : "StyleClear" ,
1089
+ Clean : "StyleClean" ,
1090
+ Stashed : "StyleStash" ,
1091
+ },
1092
+ symbols : symbols {
1093
+ Clean : "" , // empty symbol should hide this flag
1094
+ Stashed : "SymbolStash" ,
1095
+ },
1096
+ st : & gitstatus.Status {
1097
+ IsClean : true ,
1098
+ NumStashed : 1 ,
1099
+ },
1100
+ want : "StyleClear" + "StyleStashSymbolStash1" ,
1101
+ },
1102
+ {
1103
+ name : "empty stashed symbol in clean state hides stash count" ,
1104
+ styles : styles {
1105
+ Clear : "StyleClear" ,
1106
+ Clean : "StyleClean" ,
1107
+ },
1108
+ symbols : symbols {
1109
+ Clean : "SymbolClean" ,
1110
+ Stashed : "" , // empty symbol should hide this flag
1111
+ },
1112
+ st : & gitstatus.Status {
1113
+ IsClean : true ,
1114
+ NumStashed : 1 ,
1115
+ },
1116
+ want : "StyleClear" + "StyleCleanSymbolClean" ,
1117
+ },
1118
+ {
1119
+ name : "all symbols empty shows nothing" ,
1120
+ styles : styles {
1121
+ Clear : "StyleClear" ,
1122
+ Clean : "StyleClean" ,
1123
+ Staged : "StyleStaged" ,
1124
+ Modified : "StyleMod" ,
1125
+ Conflict : "StyleConflict" ,
1126
+ Untracked : "StyleUntracked" ,
1127
+ Stashed : "StyleStash" ,
1128
+ },
1129
+ symbols : symbols {
1130
+ Clean : "" ,
1131
+ Staged : "" ,
1132
+ Modified : "" ,
1133
+ Conflict : "" ,
1134
+ Untracked : "" ,
1135
+ Stashed : "" ,
1136
+ },
1137
+ st : & gitstatus.Status {
1138
+ IsClean : false ,
1139
+ NumStashed : 1 ,
1140
+ Porcelain : gitstatus.Porcelain {
1141
+ NumStaged : 3 ,
1142
+ NumModified : 2 ,
1143
+ NumConflicts : 1 ,
1144
+ NumUntracked : 4 ,
1145
+ },
1146
+ },
1147
+ want : "" ,
1148
+ },
1149
+ }
1150
+ for _ , tt := range tests {
1151
+ t .Run (tt .name , func (t * testing.T ) {
1152
+ f := & Formater {
1153
+ Config : Config {Styles : tt .styles , Symbols : tt .symbols },
1154
+ st : tt .st ,
1155
+ }
1156
+
1157
+ compareStrings (t , tt .want , f .flags ())
1158
+ })
1159
+ }
1160
+ }
1161
+
982
1162
func compareStrings (t * testing.T , want , got string ) {
983
1163
if got != want {
984
1164
t .Errorf (`
0 commit comments