You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	fix: better handle before hooks errors (#1698)
Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							713e53d560
						
					
				
				
					commit
					47e88b9bcf
				
			| @@ -37,9 +37,9 @@ func (Pipe) Run(ctx *context.Context) error { | ||||
| 		cmd := exec.Command(args[0], args[1:]...) | ||||
| 		cmd.Env = ctx.Env.Strings() | ||||
| 		out, err := cmd.CombinedOutput() | ||||
| 		log.Debug(string(out)) | ||||
| 		log.WithField("cmd", step).Debug(string(out)) | ||||
| 		if err != nil { | ||||
| 			return fmt.Errorf("hook failed: %s\n%v", step, string(out)) | ||||
| 			return fmt.Errorf("hook failed: %s: %s; output: %s", step, err.Error(), string(out)) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
|   | ||||
| @@ -34,23 +34,20 @@ func TestRunPipe(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestRunPipeInvalidCommand(t *testing.T) { | ||||
| 	for _, tc := range [][]string{ | ||||
| 		{`bash -c "echo \"unterminated command\"`}, | ||||
| 	} { | ||||
| 		ctx := context.New( | ||||
| 			config.Project{ | ||||
| 				Before: config.Before{ | ||||
| 					Hooks: tc, | ||||
| 				}, | ||||
| 	ctx := context.New( | ||||
| 		config.Project{ | ||||
| 			Before: config.Before{ | ||||
| 				Hooks: []string{`bash -c "echo \"unterminated command\"`}, | ||||
| 			}, | ||||
| 		) | ||||
| 		require.Error(t, Pipe{}.Run(ctx)) | ||||
| 	} | ||||
| 		}, | ||||
| 	) | ||||
| 	require.EqualError(t, Pipe{}.Run(ctx), "invalid command line string") | ||||
| } | ||||
|  | ||||
| func TestRunPipeFail(t *testing.T) { | ||||
| 	for _, tc := range [][]string{ | ||||
| 		{"go tool foobar"}, | ||||
| 	for err, tc := range map[string][]string{ | ||||
| 		"hook failed: go tool foobar: exit status 2; output: go tool: no such tool \"foobar\"\n": {"go tool foobar"}, | ||||
| 		"hook failed: sh ./testdata/foo.sh: exit status 1; output: lalala\n":                     {"sh ./testdata/foo.sh"}, | ||||
| 	} { | ||||
| 		ctx := context.New( | ||||
| 			config.Project{ | ||||
| @@ -59,7 +56,7 @@ func TestRunPipeFail(t *testing.T) { | ||||
| 				}, | ||||
| 			}, | ||||
| 		) | ||||
| 		require.Error(t, Pipe{}.Run(ctx)) | ||||
| 		require.EqualError(t, Pipe{}.Run(ctx), err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										3
									
								
								internal/pipe/before/testdata/foo.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								internal/pipe/before/testdata/foo.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| #!/bin/sh | ||||
| echo lalala | ||||
| exit 1 | ||||
		Reference in New Issue
	
	Block a user