@@ -6,6 +6,11 @@ import (
6
6
"os"
7
7
"path/filepath"
8
8
"testing"
9
+
10
+ "github.com/ava-labs/avalanche-cli/pkg/constants"
11
+ "github.com/ava-labs/avalanchego/utils/logging"
12
+
13
+ "github.com/stretchr/testify/require"
9
14
)
10
15
11
16
func TestExpandHome (t * testing.T ) {
@@ -45,29 +50,26 @@ func TestExpandHome(t *testing.T) {
45
50
}
46
51
}
47
52
48
- // createTempGoMod creates a temporary go.mod file with the provided content.
49
- func createTempGoMod (t * testing.T , content string ) string {
53
+ // createTemp creates a temporary file with the provided name prefix and content.
54
+ func createTemp (t * testing.T , namePrefix string , content string ) string {
50
55
t .Helper ()
51
- file , err := os .CreateTemp ("" , "go.mod" )
56
+ file , err := os .CreateTemp ("" , namePrefix )
52
57
if err != nil {
53
58
t .Fatal (err )
54
59
}
55
-
56
60
if _ , err := file .Write ([]byte (content )); err != nil {
57
61
t .Fatal (err )
58
62
}
59
-
60
63
if err := file .Close (); err != nil {
61
64
t .Fatal (err )
62
65
}
63
-
64
66
return file .Name ()
65
67
}
66
68
67
69
// TestReadGoVersion tests all scenarios in one function using sub-tests.
68
70
func TestReadGoVersion (t * testing.T ) {
69
71
t .Run ("Success" , func (t * testing.T ) {
70
- tempFile := createTempGoMod ( t , "module example.com/test\n \n go 1.23\n " )
72
+ tempFile := createTemp ( t , "go.mod" , "module example.com/test\n \n go 1.23\n " )
71
73
defer os .Remove (tempFile ) // Clean up the temp file
72
74
73
75
version , err := ReadGoVersion (tempFile )
@@ -82,7 +84,7 @@ func TestReadGoVersion(t *testing.T) {
82
84
})
83
85
84
86
t .Run ("NoVersion" , func (t * testing.T ) {
85
- tempFile := createTempGoMod ( t , "module example.com/test\n " )
87
+ tempFile := createTemp ( t , "go.mod" , "module example.com/test\n " )
86
88
defer os .Remove (tempFile )
87
89
88
90
_ , err := ReadGoVersion (tempFile )
@@ -98,3 +100,67 @@ func TestReadGoVersion(t *testing.T) {
98
100
}
99
101
})
100
102
}
103
+
104
+ func TestSetupExecFile (t * testing.T ) {
105
+ srcContent := "src content"
106
+ destContent := "dest content"
107
+ t .Run ("Src does not exists" , func (t * testing.T ) {
108
+ src := createTemp (t , "testexecfile" , srcContent )
109
+ dest := createTemp (t , "testexecfile" , destContent )
110
+ err := os .Remove (src )
111
+ require .NoError (t , err )
112
+ require .Equal (t , false , FileExists (src ))
113
+ require .Equal (t , true , FileExists (dest ))
114
+ require .Equal (t , false , IsExecutable (dest ))
115
+ err = SetupExecFile (logging.NoLog {}, src , dest )
116
+ require .Error (t , err )
117
+ content , err := os .ReadFile (dest )
118
+ require .NoError (t , err )
119
+ require .Equal (t , true , FileExists (dest ))
120
+ require .Equal (t , false , IsExecutable (dest ))
121
+ require .Equal (t , destContent , string (content ))
122
+ })
123
+ t .Run ("Dest does not exists" , func (t * testing.T ) {
124
+ src := createTemp (t , "testexecfile" , srcContent )
125
+ dest := createTemp (t , "testexecfile" , destContent )
126
+ err := os .Remove (dest )
127
+ require .NoError (t , err )
128
+ require .Equal (t , false , FileExists (dest ))
129
+ require .Equal (t , false , IsExecutable (dest ))
130
+ err = SetupExecFile (logging.NoLog {}, src , dest )
131
+ require .NoError (t , err )
132
+ content , err := os .ReadFile (dest )
133
+ require .NoError (t , err )
134
+ require .Equal (t , true , FileExists (dest ))
135
+ require .Equal (t , true , IsExecutable (dest ))
136
+ require .Equal (t , srcContent , string (content ))
137
+ })
138
+ t .Run ("Dest is not executable" , func (t * testing.T ) {
139
+ src := createTemp (t , "testexecfile" , srcContent )
140
+ dest := createTemp (t , "testexecfile" , destContent )
141
+ require .Equal (t , true , FileExists (dest ))
142
+ require .Equal (t , false , IsExecutable (dest ))
143
+ err := SetupExecFile (logging.NoLog {}, src , dest )
144
+ require .NoError (t , err )
145
+ content , err := os .ReadFile (dest )
146
+ require .NoError (t , err )
147
+ require .Equal (t , true , FileExists (dest ))
148
+ require .Equal (t , true , IsExecutable (dest ))
149
+ require .Equal (t , srcContent , string (content ))
150
+ })
151
+ t .Run ("Dest is already executable" , func (t * testing.T ) {
152
+ src := createTemp (t , "testexecfile" , srcContent )
153
+ dest := createTemp (t , "testexecfile" , destContent )
154
+ err := os .Chmod (dest , constants .DefaultPerms755 )
155
+ require .NoError (t , err )
156
+ require .Equal (t , true , FileExists (dest ))
157
+ require .Equal (t , true , IsExecutable (dest ))
158
+ err = SetupExecFile (logging.NoLog {}, src , dest )
159
+ require .NoError (t , err )
160
+ content , err := os .ReadFile (dest )
161
+ require .NoError (t , err )
162
+ require .Equal (t , true , FileExists (dest ))
163
+ require .Equal (t , true , IsExecutable (dest ))
164
+ require .Equal (t , destContent , string (content ))
165
+ })
166
+ }
0 commit comments