@@ -22,12 +22,14 @@ import (
22
22
"net/http"
23
23
"strings"
24
24
"testing"
25
+ "time"
25
26
26
27
"github.com/arduino/arduino-cli/internal/integrationtest"
27
28
"github.com/arduino/go-paths-helper"
28
29
"github.com/stretchr/testify/require"
29
30
"go.bug.st/testifyjson/requirejson"
30
31
"gopkg.in/src-d/go-git.v4"
32
+ "gopkg.in/src-d/go-git.v4/plumbing/object"
31
33
)
32
34
33
35
func TestLibUpgradeCommand (t * testing.T ) {
@@ -1171,3 +1173,65 @@ func TestInstallZipInvalidLibrary(t *testing.T) {
1171
1173
require .Error (t , err )
1172
1174
require .Contains (t , string (stderr ), "library not valid" )
1173
1175
}
1176
+
1177
+ func TestInstallGitInvalidLibrary (t * testing.T ) {
1178
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1179
+ defer env .CleanUp ()
1180
+
1181
+ // Initialize configs to enable --zip-path flag
1182
+ envVar := cli .GetDefaultEnv ()
1183
+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1184
+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1185
+ require .NoError (t , err )
1186
+
1187
+ // Create fake library repository
1188
+ repoDir := cli .SketchbookDir ().Join ("lib-without-header" )
1189
+ repo , err := git .PlainInit (repoDir .String (), false )
1190
+ require .NoError (t , err )
1191
+ libProperties := repoDir .Join ("library.properties" )
1192
+ f , err := libProperties .Create ()
1193
+ require .NoError (t , err )
1194
+ f .Close ()
1195
+ tree , err := repo .Worktree ()
1196
+ require .NoError (t , err )
1197
+ _ , err = tree .Add ("library.properties" )
1198
+ require .NoError (t , err )
1199
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1200
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1201
+ require .NoError (t , err )
1202
+
1203
+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "lib-without-header" )
1204
+ // Verifies library is not already installed
1205
+ require .NoDirExists (t , libInstallDir .String ())
1206
+
1207
+ _ , stderr , err := cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1208
+ require .Error (t , err )
1209
+ require .Contains (t , string (stderr ), "library not valid" )
1210
+ require .NoDirExists (t , libInstallDir .String ())
1211
+
1212
+ // Create another fake library repository
1213
+ repoDir = cli .SketchbookDir ().Join ("lib-without-properties" )
1214
+ repo , err = git .PlainInit (repoDir .String (), false )
1215
+ require .NoError (t , err )
1216
+ libHeader := repoDir .Join ("src" , "lib-without-properties.h" )
1217
+ require .NoError (t , libHeader .Parent ().MkdirAll ())
1218
+ f , err = libHeader .Create ()
1219
+ require .NoError (t , err )
1220
+ f .Close ()
1221
+ tree , err = repo .Worktree ()
1222
+ require .NoError (t , err )
1223
+ _ , err = tree .Add ("src/lib-without-properties.h" )
1224
+ require .NoError (t , err )
1225
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1226
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1227
+ require .NoError (t , err )
1228
+
1229
+ libInstallDir = cli .SketchbookDir ().Join ("libraries" , "lib-without-properties" )
1230
+ // Verifies library is not already installed
1231
+ require .NoDirExists (t , libInstallDir .String ())
1232
+
1233
+ _ , stderr , err = cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1234
+ require .Error (t , err )
1235
+ require .Contains (t , string (stderr ), "library not valid" )
1236
+ require .NoDirExists (t , libInstallDir .String ())
1237
+ }
0 commit comments