github.com/undoio/delve@v1.9.0/service/dap/config_test.go (about) 1 package dap 2 3 import ( 4 "testing" 5 ) 6 7 func TestListConfig(t *testing.T) { 8 type args struct { 9 args *launchAttachArgs 10 } 11 tests := []struct { 12 name string 13 args args 14 want string 15 }{ 16 { 17 name: "empty", 18 args: args{ 19 args: &launchAttachArgs{}, 20 }, 21 want: formatConfig(0, false, false, "", false, [][2]string{}), 22 }, 23 { 24 name: "default values", 25 args: args{ 26 args: &defaultArgs, 27 }, 28 want: formatConfig(50, false, false, "", false, [][2]string{}), 29 }, 30 { 31 name: "custom values", 32 args: args{ 33 args: &launchAttachArgs{ 34 StackTraceDepth: 35, 35 ShowGlobalVariables: true, 36 substitutePathClientToServer: [][2]string{{"hello", "world"}}, 37 substitutePathServerToClient: [][2]string{{"world", "hello"}}, 38 }, 39 }, 40 want: formatConfig(35, true, false, "", false, [][2]string{{"hello", "world"}}), 41 }, 42 } 43 for _, tt := range tests { 44 t.Run(tt.name, func(t *testing.T) { 45 if got := listConfig(tt.args.args); got != tt.want { 46 t.Errorf("listConfig() = %v, want %v", got, tt.want) 47 } 48 }) 49 } 50 } 51 52 func TestConfigureSetSubstitutePath(t *testing.T) { 53 type args struct { 54 args *launchAttachArgs 55 rest string 56 } 57 tests := []struct { 58 name string 59 args args 60 wantRules [][2]string 61 wantErr bool 62 }{ 63 // Test add rule. 64 { 65 name: "add rule", 66 args: args{ 67 args: &launchAttachArgs{ 68 substitutePathClientToServer: [][2]string{}, 69 substitutePathServerToClient: [][2]string{}, 70 }, 71 rest: "/path/to/client/dir /path/to/server/dir", 72 }, 73 wantRules: [][2]string{{"/path/to/client/dir", "/path/to/server/dir"}}, 74 wantErr: false, 75 }, 76 { 77 name: "add rule (multiple)", 78 args: args{ 79 args: &launchAttachArgs{ 80 substitutePathClientToServer: [][2]string{ 81 {"/path/to/client/dir/a", "/path/to/server/dir/a"}, 82 {"/path/to/client/dir/b", "/path/to/server/dir/b"}, 83 }, 84 substitutePathServerToClient: [][2]string{ 85 {"/path/to/server/dir/a", "/path/to/client/dir/a"}, 86 {"/path/to/server/dir/b", "/path/to/client/dir/b"}, 87 }, 88 }, 89 rest: "/path/to/client/dir/c /path/to/server/dir/b", 90 }, 91 wantRules: [][2]string{ 92 {"/path/to/client/dir/a", "/path/to/server/dir/a"}, 93 {"/path/to/client/dir/b", "/path/to/server/dir/b"}, 94 {"/path/to/client/dir/c", "/path/to/server/dir/b"}, 95 }, 96 wantErr: false, 97 }, 98 // Test modify rule. 99 { 100 name: "modify rule", 101 args: args{ 102 args: &launchAttachArgs{ 103 substitutePathClientToServer: [][2]string{{"/path/to/client/dir", "/path/to/server/dir"}}, 104 substitutePathServerToClient: [][2]string{{"/path/to/server/dir", "/path/to/client/dir"}}, 105 }, 106 rest: "/path/to/client/dir /new/path/to/server/dir", 107 }, 108 wantRules: [][2]string{{"/path/to/client/dir", "/new/path/to/server/dir"}}, 109 wantErr: false, 110 }, 111 { 112 name: "modify rule (multiple)", 113 args: args{ 114 args: &launchAttachArgs{ 115 substitutePathClientToServer: [][2]string{ 116 {"/path/to/client/dir/a", "/path/to/server/dir/a"}, 117 {"/path/to/client/dir/b", "/path/to/server/dir/b"}, 118 {"/path/to/client/dir/c", "/path/to/server/dir/b"}, 119 }, 120 substitutePathServerToClient: [][2]string{ 121 {"/path/to/server/dir/a", "/path/to/client/dir/a"}, 122 {"/path/to/server/dir/b", "/path/to/client/dir/b"}, 123 {"/path/to/server/dir/b", "/path/to/client/dir/c"}, 124 }, 125 }, 126 rest: "/path/to/client/dir/b /new/path", 127 }, 128 wantRules: [][2]string{ 129 {"/path/to/client/dir/a", "/path/to/server/dir/a"}, 130 {"/path/to/client/dir/b", "/new/path"}, 131 {"/path/to/client/dir/c", "/path/to/server/dir/b"}, 132 }, 133 wantErr: false, 134 }, 135 // Test delete rule. 136 { 137 name: "delete rule", 138 args: args{ 139 args: &launchAttachArgs{ 140 substitutePathClientToServer: [][2]string{{"/path/to/client/dir", "/path/to/server/dir"}}, 141 substitutePathServerToClient: [][2]string{{"/path/to/server/dir", "/path/to/client/dir"}}, 142 }, 143 rest: "/path/to/client/dir", 144 }, 145 wantRules: [][2]string{}, 146 wantErr: false, 147 }, 148 // Test invalid input. 149 { 150 name: "error on empty args", 151 args: args{ 152 args: &launchAttachArgs{ 153 substitutePathClientToServer: [][2]string{}, 154 substitutePathServerToClient: [][2]string{}, 155 }, 156 rest: " \n\r ", 157 }, 158 wantErr: true, 159 }, 160 { 161 name: "error on delete nonexistent rule", 162 args: args{ 163 args: &launchAttachArgs{ 164 substitutePathClientToServer: [][2]string{{"/path/to/client/dir", "/path/to/server/dir"}}, 165 substitutePathServerToClient: [][2]string{{"/path/to/server/dir", "/path/to/client/dir"}}, 166 }, 167 rest: "/path/to/server/dir", 168 }, 169 wantRules: [][2]string{{"/path/to/client/dir", "/path/to/server/dir"}}, 170 wantErr: true, 171 }, 172 } 173 for _, tt := range tests { 174 t.Run(tt.name, func(t *testing.T) { 175 err := configureSetSubstitutePath(tt.args.args, tt.args.rest) 176 if (err != nil) != tt.wantErr { 177 t.Errorf("configureSetSubstitutePath() error = %v, wantErr %v", err, tt.wantErr) 178 return 179 } 180 if len(tt.args.args.substitutePathClientToServer) != len(tt.wantRules) { 181 t.Errorf("configureSetSubstitutePath() got substitutePathClientToServer=%v, want %d rules", tt.args.args.substitutePathClientToServer, len(tt.wantRules)) 182 return 183 } 184 gotClient2Server := tt.args.args.substitutePathClientToServer 185 gotServer2Client := tt.args.args.substitutePathServerToClient 186 for i, rule := range tt.wantRules { 187 if gotClient2Server[i][0] != rule[0] || gotClient2Server[i][1] != rule[1] { 188 t.Errorf("configureSetSubstitutePath() got substitutePathClientToServer[%d]=%#v,\n want %#v rules", i, gotClient2Server[i], rule) 189 } 190 if gotServer2Client[i][1] != rule[0] || gotServer2Client[i][0] != rule[1] { 191 reverseRule := [2]string{rule[1], rule[0]} 192 t.Errorf("configureSetSubstitutePath() got substitutePathServerToClient[%d]=%#v,\n want %#v rules", i, gotClient2Server[i], reverseRule) 193 } 194 } 195 }) 196 } 197 }