@@ -11,16 +11,29 @@ 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+ if len (name ) == 0 {
17+ options = []string {"build" , "./testdata/github-release-test/" }
18+ } else {
19+ options = []string {"build" , "-o" , name [0 ], "./testdata/github-release-test/" }
20+ }
21+
22+ if err := exec .Command ("go" , options ... ).Run (); err != nil {
1623 panic (err )
1724 }
1825}
1926
20- func teardownTestBinary () {
21- bin := "github-release-test"
27+ func teardownTestBinary (name ... string ) {
28+ var bin string
29+ if len (name ) == 0 {
30+ bin = "github-release-test"
31+ } else {
32+ bin = name [0 ]
33+ }
34+
2235 if runtime .GOOS == "windows" {
23- bin = "github-release-test .exe"
36+ bin + = ".exe"
2437 }
2538 if err := os .Remove (bin ); err != nil {
2639 panic (err )
@@ -64,6 +77,41 @@ func TestUpdateCommand(t *testing.T) {
6477 }
6578}
6679
80+ func TestUpdateWithDifferentBinaryName (t * testing.T ) {
81+ setupTestBinary ("gh-release-test" )
82+ defer teardownTestBinary ("gh-release-test" )
83+ latest := semver .MustParse ("1.2.3" )
84+ prev := semver .MustParse ("1.2.2" )
85+
86+ _ , err := UpdateCommand ("gh-release-test" , prev , "rhysd-test/test-release-zip" )
87+ if err == nil {
88+ t .Fatal ("Error should occur for broken package" )
89+ }
90+ if ! strings .Contains (err .Error (), "the command is not found" ) {
91+ t .Fatal ("Unexpected error:" , err )
92+ }
93+
94+ up , err := NewUpdater (Config {BinaryName : "github-release-test" , Filters : []string {"github-release-test" }})
95+ if err != nil {
96+ t .Fatal (err )
97+ }
98+ rel , err := up .UpdateCommand ("gh-release-test" , prev , "rhysd-test/test-release-zip" )
99+ if err != nil {
100+ t .Fatal (err )
101+ }
102+ if rel .Version .NE (latest ) {
103+ t .Error ("Version is not latest" , rel .Version )
104+ }
105+ bytes , err := exec .Command (filepath .FromSlash ("./gh-release-test" )).Output ()
106+ if err != nil {
107+ t .Fatal ("Failed to run test binary after update:" , err )
108+ }
109+ out := string (bytes )
110+ if out != "v1.2.3\n " {
111+ t .Error ("Output from test binary after update is unexpected:" , out )
112+ }
113+ }
114+
67115func TestUpdateViaSymlink (t * testing.T ) {
68116 if testing .Short () {
69117 t .Skip ("skip tests in short mode." )
0 commit comments