@@ -3,6 +3,7 @@ package shared
33import (
44 "encoding/json"
55 "errors"
6+ "io/ioutil"
67 "os"
78 "path/filepath"
89 "testing"
@@ -12,12 +13,6 @@ import (
1213 "github.com/stretchr/testify/assert"
1314)
1415
15- func Test_dumpPath (t * testing.T ) {
16- // mostly pointless test
17- var random int64 = 1234567890
18- assert .Equal (t , dumpPath (random ), filepath .Join (os .TempDir (), "gh602d2.json" ))
19- }
20-
2116func Test_PreserveInput (t * testing.T ) {
2217 tests := []struct {
2318 name string
@@ -50,8 +45,8 @@ func Test_PreserveInput(t *testing.T) {
5045 Labels : []string {"sandwich" },
5146 },
5247 wantErrLines : []string {
53- `X operation failed. input saved to:.*\.json ` ,
54- `resubmit with: gh issue create -j@.*\.json ` ,
48+ `X operation failed. input saved to:.*testfile.* ` ,
49+ `resubmit with: gh issue create -j@.*testfile.* ` ,
5550 },
5651 err : true ,
5752 wantPreservation : true ,
@@ -63,8 +58,8 @@ func Test_PreserveInput(t *testing.T) {
6358 Labels : []string {"sandwich" },
6459 },
6560 wantErrLines : []string {
66- `X operation failed. input saved to:.*\.json ` ,
67- `resubmit with: gh issue create -j@.*\.json ` ,
61+ `X operation failed. input saved to:.*testfile.* ` ,
62+ `resubmit with: gh issue create -j@.*testfile.* ` ,
6863 },
6964 err : true ,
7065 wantPreservation : true ,
@@ -77,8 +72,8 @@ func Test_PreserveInput(t *testing.T) {
7772 Type : PRMetadata ,
7873 },
7974 wantErrLines : []string {
80- `X operation failed. input saved to:.*\.json ` ,
81- `resubmit with: gh pr create -j@.*\.json ` ,
75+ `X operation failed. input saved to:.*testfile.* ` ,
76+ `resubmit with: gh pr create -j@.*testfile.* ` ,
8277 },
8378 err : true ,
8479 wantPreservation : true ,
@@ -90,25 +85,47 @@ func Test_PreserveInput(t *testing.T) {
9085 if tt .state == nil {
9186 tt .state = & IssueMetadataState {}
9287 }
88+
9389 io , _ , _ , errOut := iostreams .Test ()
94- io .WriteOverride = []byte {}
90+
91+ tfPath , tf , tferr := tmpfile ()
92+ assert .NoError (t , tferr )
93+ defer os .Remove (tfPath )
94+
95+ io .TempFileOverride = tf
96+
9597 var err error
9698 if tt .err {
9799 err = errors .New ("error during creation" )
98100 }
99101
100102 PreserveInput (io , tt .state , & err )()
101103
104+ tf .Seek (0 , 0 )
105+
106+ data , err := ioutil .ReadAll (tf )
107+ assert .NoError (t , err )
108+
102109 if tt .wantPreservation {
103110 test .ExpectLines (t , errOut .String (), tt .wantErrLines ... )
104111 preserved := & IssueMetadataState {}
105- assert .NoError (t , json .Unmarshal (io . WriteOverride , preserved ))
112+ assert .NoError (t , json .Unmarshal (data , preserved ))
106113 preserved .dirty = tt .state .dirty
107114 assert .Equal (t , preserved , tt .state )
108115 } else {
109116 assert .Equal (t , errOut .String (), "" )
110- assert .Equal (t , string (io . WriteOverride ), "" )
117+ assert .Equal (t , string (data ), "" )
111118 }
112119 })
113120 }
114121}
122+
123+ func tmpfile () (string , * os.File , error ) {
124+ dir := os .TempDir ()
125+ tmpfile , err := ioutil .TempFile (dir , "testfile*" )
126+ if err != nil {
127+ return "" , nil , err
128+ }
129+
130+ return filepath .Join (dir , tmpfile .Name ()), tmpfile , nil
131+ }
0 commit comments