@@ -973,6 +973,231 @@ func TestCheck(t *testing.T) {
973973 conflicts : true ,
974974 err : nil ,
975975 },
976+ {
977+ // NOTE(gbrlsnchs): Bug caught on my own dotfiles.
978+ name : "bug expand" ,
979+ drv : fstest.InMemoryDriver {
980+ CurrentDir : "home/dotfiles" ,
981+ Files : map [string ]fstest.File {
982+ "home" : {
983+ Linkname : "" ,
984+ Perm : os .ModePerm ,
985+ Data : nil ,
986+ Children : map [string ]fstest.File {
987+ "dotfiles" : {
988+ Linkname : "" ,
989+ Perm : os .ModePerm ,
990+ Data : nil ,
991+ Children : map [string ]fstest.File {
992+ "root" : {
993+ Linkname : "" ,
994+ Perm : os .ModePerm ,
995+ Data : nil ,
996+ Children : map [string ]fstest.File {
997+ "dir" : {
998+ Linkname : "" ,
999+ Perm : os .ModePerm ,
1000+ Data : nil ,
1001+ Children : map [string ]fstest.File {
1002+ "subdir" : {
1003+ Linkname : "" ,
1004+ Perm : os .ModePerm ,
1005+ Data : nil ,
1006+ Children : map [string ]fstest.File {
1007+ "target_1" : {
1008+ Linkname : "" ,
1009+ Perm : os .ModePerm ,
1010+ Data : nil ,
1011+ Children : map [string ]fstest.File {
1012+ "foo" : {Data : []byte ("foo" )},
1013+ "bar" : {Data : []byte ("bar" )},
1014+ },
1015+ },
1016+ "target_2" : {
1017+ Linkname : "" ,
1018+ Perm : os .ModePerm ,
1019+ Data : nil ,
1020+ Children : map [string ]fstest.File {
1021+ "baz" : {Data : []byte ("baz" )},
1022+ },
1023+ },
1024+ },
1025+ },
1026+ },
1027+ },
1028+ },
1029+ },
1030+ "bug_expand.yml" : {
1031+ Linkname : "" ,
1032+ Perm : os .ModePerm ,
1033+ Data : yamlData (config.Config {
1034+ Targets : []string {"root" },
1035+ Options : map [string ]* config.Config {
1036+ "root" : {
1037+ BaseDir : fstest .AbsPath ("etc" ),
1038+ Targets : []string {"dir" },
1039+ Options : map [string ]* config.Config {
1040+ "dir" : {
1041+ Targets : []string {"subdir" },
1042+ Flatten : true ,
1043+ },
1044+ },
1045+ Flatten : true ,
1046+ },
1047+ },
1048+ }),
1049+ Children : nil ,
1050+ },
1051+ },
1052+ },
1053+ },
1054+ },
1055+ "etc" : {
1056+ Linkname : "" ,
1057+ Perm : os .ModePerm ,
1058+ Data : nil ,
1059+ Children : map [string ]fstest.File {
1060+ "subdir" : {
1061+ Linkname : "" ,
1062+ Perm : os .ModePerm ,
1063+ Data : nil ,
1064+ Children : map [string ]fstest.File {
1065+ "target_1" : {
1066+ Linkname : "" ,
1067+ Perm : os .ModePerm ,
1068+ Data : nil ,
1069+ Children : map [string ]fstest.File {
1070+ "foo" : {Data : []byte ("foo" )},
1071+ "bar" : {Data : []byte ("bar" )},
1072+ },
1073+ },
1074+ "target_2" : {
1075+ Linkname : "" ,
1076+ Perm : os .ModePerm ,
1077+ Data : nil ,
1078+ Children : map [string ]fstest.File {
1079+ "qux" : {Data : []byte ("qux" )},
1080+ },
1081+ },
1082+ },
1083+ },
1084+ },
1085+ },
1086+ },
1087+ },
1088+ cmd : checkCmd {},
1089+ want : fstest.InMemoryDriver {
1090+ CurrentDir : "home/dotfiles" ,
1091+ Files : map [string ]fstest.File {
1092+ "home" : {
1093+ Linkname : "" ,
1094+ Perm : os .ModePerm ,
1095+ Data : nil ,
1096+ Children : map [string ]fstest.File {
1097+ "dotfiles" : {
1098+ Linkname : "" ,
1099+ Perm : os .ModePerm ,
1100+ Data : nil ,
1101+ Children : map [string ]fstest.File {
1102+ "root" : {
1103+ Linkname : "" ,
1104+ Perm : os .ModePerm ,
1105+ Data : nil ,
1106+ Children : map [string ]fstest.File {
1107+ "dir" : {
1108+ Linkname : "" ,
1109+ Perm : os .ModePerm ,
1110+ Data : nil ,
1111+ Children : map [string ]fstest.File {
1112+ "subdir" : {
1113+ Linkname : "" ,
1114+ Perm : os .ModePerm ,
1115+ Data : nil ,
1116+ Children : map [string ]fstest.File {
1117+ "target_1" : {
1118+ Linkname : "" ,
1119+ Perm : os .ModePerm ,
1120+ Data : nil ,
1121+ Children : map [string ]fstest.File {
1122+ "foo" : {Data : []byte ("foo" )},
1123+ "bar" : {Data : []byte ("bar" )},
1124+ },
1125+ },
1126+ "target_2" : {
1127+ Linkname : "" ,
1128+ Perm : os .ModePerm ,
1129+ Data : nil ,
1130+ Children : map [string ]fstest.File {
1131+ "baz" : {Data : []byte ("baz" )},
1132+ },
1133+ },
1134+ },
1135+ },
1136+ },
1137+ },
1138+ },
1139+ },
1140+ "bug_expand.yml" : {
1141+ Linkname : "" ,
1142+ Perm : os .ModePerm ,
1143+ Data : yamlData (config.Config {
1144+ Targets : []string {"root" },
1145+ Options : map [string ]* config.Config {
1146+ "root" : {
1147+ BaseDir : fstest .AbsPath ("etc" ),
1148+ Targets : []string {"dir" },
1149+ Options : map [string ]* config.Config {
1150+ "dir" : {
1151+ Targets : []string {"subdir" },
1152+ Flatten : true ,
1153+ },
1154+ },
1155+ Flatten : true ,
1156+ },
1157+ },
1158+ }),
1159+ Children : nil ,
1160+ },
1161+ },
1162+ },
1163+ },
1164+ },
1165+ "etc" : {
1166+ Linkname : "" ,
1167+ Perm : os .ModePerm ,
1168+ Data : nil ,
1169+ Children : map [string ]fstest.File {
1170+ "subdir" : {
1171+ Linkname : "" ,
1172+ Perm : os .ModePerm ,
1173+ Data : nil ,
1174+ Children : map [string ]fstest.File {
1175+ "target_1" : {
1176+ Linkname : "" ,
1177+ Perm : os .ModePerm ,
1178+ Data : nil ,
1179+ Children : map [string ]fstest.File {
1180+ "foo" : {Data : []byte ("foo" )},
1181+ "bar" : {Data : []byte ("bar" )},
1182+ },
1183+ },
1184+ "target_2" : {
1185+ Linkname : "" ,
1186+ Perm : os .ModePerm ,
1187+ Data : nil ,
1188+ Children : map [string ]fstest.File {
1189+ "qux" : {Data : []byte ("qux" )},
1190+ },
1191+ },
1192+ },
1193+ },
1194+ },
1195+ },
1196+ },
1197+ },
1198+ conflicts : false ,
1199+ err : nil ,
1200+ },
9761201 }
9771202 for _ , tc := range testCases {
9781203 t .Run (tc .name , func (t * testing.T ) {
0 commit comments