mirror of https://github.com/docker/compose.git
				
				
				
			Improved improper use of os.Exit
This commit is contained in:
		
							parent
							
								
									17ba6c7188
								
							
						
					
					
						commit
						e539d22110
					
				|  | @ -18,7 +18,6 @@ package compatibility | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"os" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/docker/compose/v2/cmd/compose" | 	"github.com/docker/compose/v2/cmd/compose" | ||||||
|  | @ -52,7 +51,7 @@ func getStringFlags() []string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Convert transforms standalone docker-compose args into CLI plugin compliant ones
 | // Convert transforms standalone docker-compose args into CLI plugin compliant ones
 | ||||||
| func Convert(args []string) []string { | func Convert(args []string) ([]string, error) { | ||||||
| 	var rootFlags []string | 	var rootFlags []string | ||||||
| 	command := []string{compose.PluginName} | 	command := []string{compose.PluginName} | ||||||
| 	l := len(args) | 	l := len(args) | ||||||
|  | @ -87,8 +86,7 @@ ARGS: | ||||||
| 			if arg == flag { | 			if arg == flag { | ||||||
| 				i++ | 				i++ | ||||||
| 				if i >= l { | 				if i >= l { | ||||||
| 					fmt.Fprintf(os.Stderr, "flag needs an argument: '%s'\n", arg) | 					return nil, fmt.Errorf("flag needs an argument: '%s'", arg) | ||||||
| 					os.Exit(1) |  | ||||||
| 				} | 				} | ||||||
| 				rootFlags = append(rootFlags, arg, args[i]) | 				rootFlags = append(rootFlags, arg, args[i]) | ||||||
| 				continue ARGS | 				continue ARGS | ||||||
|  | @ -103,7 +101,7 @@ ARGS: | ||||||
| 		} | 		} | ||||||
| 		command = append(command, arg) | 		command = append(command, arg) | ||||||
| 	} | 	} | ||||||
| 	return append(rootFlags, command...) | 	return append(rootFlags, command...), nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func contains(array []string, needle string) bool { | func contains(array []string, needle string) bool { | ||||||
|  |  | ||||||
|  | @ -17,9 +17,6 @@ | ||||||
| package compatibility | package compatibility | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"errors" |  | ||||||
| 	"os" |  | ||||||
| 	"os/exec" |  | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"gotest.tools/v3/assert" | 	"gotest.tools/v3/assert" | ||||||
|  | @ -110,21 +107,11 @@ func Test_convert(t *testing.T) { | ||||||
| 	} | 	} | ||||||
| 	for _, tt := range tests { | 	for _, tt := range tests { | ||||||
| 		t.Run(tt.name, func(t *testing.T) { | 		t.Run(tt.name, func(t *testing.T) { | ||||||
|  | 			got, err := Convert(tt.args) | ||||||
| 			if tt.wantErr { | 			if tt.wantErr { | ||||||
| 				if os.Getenv("BE_CRASHER") == "1" { | 				assert.Assert(t, err != nil) | ||||||
| 					Convert(tt.args) |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 				cmd := exec.Command(os.Args[0], "-test.run=^"+t.Name()+"$") |  | ||||||
| 				cmd.Env = append(os.Environ(), "BE_CRASHER=1") |  | ||||||
| 				err := cmd.Run() |  | ||||||
| 				var e *exec.ExitError |  | ||||||
| 				if errors.As(err, &e) && !e.Success() { |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 				t.Fatalf("process ran with err %v, want exit status 1", err) |  | ||||||
| 			} else { | 			} else { | ||||||
| 				got := Convert(tt.args) | 				assert.NilError(t, err) | ||||||
| 				assert.DeepEqual(t, tt.want, got) | 				assert.DeepEqual(t, tt.want, got) | ||||||
| 			} | 			} | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue