@@ -11,16 +11,34 @@ import (
1111 "github.com/blang/semver"
1212)
1313
14- func setupTestBinary () {
15- if err := exec .Command ("go" , "build" , "./testdata/github-release-test/" ).Run (); err != nil {
14+ func setupTestBinary (name ... string ) {
15+ var options []string
16+ var output string
17+ if len (name ) == 0 {
18+ options = []string {"build" , "./testdata/github-release-test/" }
19+ } else {
20+ output = name [0 ]
21+ if runtime .GOOS == "windows" {
22+ output += ".exe"
23+ }
24+ options = []string {"build" , "-o" , output , "./testdata/github-release-test/" }
25+ }
26+
27+ if err := exec .Command ("go" , options ... ).Run (); err != nil {
1628 panic (err )
1729 }
1830}
1931
20- func teardownTestBinary () {
21- bin := "github-release-test"
32+ func teardownTestBinary (name ... string ) {
33+ var bin string
34+ if len (name ) == 0 {
35+ bin = "github-release-test"
36+ } else {
37+ bin = name [0 ]
38+ }
39+
2240 if runtime .GOOS == "windows" {
23- bin = "github-release-test .exe"
41+ bin + = ".exe"
2442 }
2543 if err := os .Remove (bin ); err != nil {
2644 panic (err )
@@ -64,6 +82,41 @@ func TestUpdateCommand(t *testing.T) {
6482 }
6583}
6684
85+ func TestUpdateWithDifferentBinaryName (t * testing.T ) {
86+ setupTestBinary ("gh-release-test" )
87+ defer teardownTestBinary ("gh-release-test" )
88+ latest := semver .MustParse ("1.2.3" )
89+ prev := semver .MustParse ("1.2.2" )
90+
91+ _ , err := UpdateCommand ("gh-release-test" , prev , "rhysd-test/test-release-zip" )
92+ if err == nil {
93+ t .Fatal ("Error should occur for broken package" )
94+ }
95+ if ! strings .Contains (err .Error (), "the command is not found" ) {
96+ t .Fatal ("Unexpected error:" , err )
97+ }
98+
99+ up , err := NewUpdater (Config {BinaryName : "github-release-test" , Filters : []string {"github-release-test" }})
100+ if err != nil {
101+ t .Fatal (err )
102+ }
103+ rel , err := up .UpdateCommand ("gh-release-test" , prev , "rhysd-test/test-release-zip" )
104+ if err != nil {
105+ t .Fatal (err )
106+ }
107+ if rel .Version .NE (latest ) {
108+ t .Error ("Version is not latest" , rel .Version )
109+ }
110+ bytes , err := exec .Command (filepath .FromSlash ("./gh-release-test" )).Output ()
111+ if err != nil {
112+ t .Fatal ("Failed to run test binary after update:" , err )
113+ }
114+ out := string (bytes )
115+ if out != "v1.2.3\n " {
116+ t .Error ("Output from test binary after update is unexpected:" , out )
117+ }
118+ }
119+
67120func TestUpdateViaSymlink (t * testing.T ) {
68121 if testing .Short () {
69122 t .Skip ("skip tests in short mode." )
0 commit comments