@@ -1089,3 +1089,98 @@ func TestAllBranchesLogCmdMigrations(t *testing.T) {
10891089 })
10901090 }
10911091}
1092+
1093+ func TestPagerMigration (t * testing.T ) {
1094+ scenarios := []struct {
1095+ name string
1096+ input string
1097+ expected string
1098+ expectedDidChange bool
1099+ expectedChanges []string
1100+ }{
1101+ {
1102+ name : "Incomplete Configuration Passes uneventfully" ,
1103+ input : "git:" ,
1104+ expectedDidChange : false ,
1105+ expectedChanges : []string {},
1106+ },
1107+ {
1108+ name : "No paging section" ,
1109+ input : `git:
1110+ autoFetch: true
1111+ ` ,
1112+ expected : `git:
1113+ autoFetch: true
1114+ ` ,
1115+ expectedDidChange : false ,
1116+ expectedChanges : []string {},
1117+ },
1118+ {
1119+ name : "Both paging and pagers exist" ,
1120+ input : `git:
1121+ paging:
1122+ pager: delta --dark --paging=never
1123+ pagers:
1124+ - diff: diff-so-fancy
1125+ ` ,
1126+ expected : `git:
1127+ paging:
1128+ pager: delta --dark --paging=never
1129+ pagers:
1130+ - diff: diff-so-fancy
1131+ ` ,
1132+ expectedDidChange : false ,
1133+ expectedChanges : []string {},
1134+ },
1135+ {
1136+ name : "paging is not an object" ,
1137+ input : `git:
1138+ paging: 5
1139+ ` ,
1140+ expected : `git:
1141+ paging: 5
1142+ ` ,
1143+ expectedDidChange : false ,
1144+ expectedChanges : []string {},
1145+ },
1146+ {
1147+ name : "paging is moved to pagers array (keeping the order)" ,
1148+ input : `git:
1149+ paging:
1150+ pager: delta --dark --paging=never
1151+ autoFetch: true
1152+ ` ,
1153+ expected : `git:
1154+ pagers:
1155+ - pager: delta --dark --paging=never
1156+ autoFetch: true
1157+ ` ,
1158+ expectedDidChange : true ,
1159+ expectedChanges : []string {"Moved git.paging object to git.pagers array" },
1160+ },
1161+ {
1162+ name : "paging is moved to pagers array even if empty" ,
1163+ input : `git:
1164+ paging: {}
1165+ ` ,
1166+ expected : `git:
1167+ pagers: [{}]
1168+ ` ,
1169+ expectedDidChange : true ,
1170+ expectedChanges : []string {"Moved git.paging object to git.pagers array" },
1171+ },
1172+ }
1173+
1174+ for _ , s := range scenarios {
1175+ t .Run (s .name , func (t * testing.T ) {
1176+ changes := NewChangesSet ()
1177+ actual , didChange , err := computeMigratedConfig ("path doesn't matter" , []byte (s .input ), changes )
1178+ assert .NoError (t , err )
1179+ assert .Equal (t , s .expectedDidChange , didChange )
1180+ if didChange {
1181+ assert .Equal (t , s .expected , string (actual ))
1182+ }
1183+ assert .Equal (t , s .expectedChanges , changes .ToSliceFromOldest ())
1184+ })
1185+ }
1186+ }
0 commit comments