@@ -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 ) {
@@ -1200,3 +1202,65 @@ func TestInstallZipInvalidLibrary(t *testing.T) {
1200
1202
require .Error (t , err )
1201
1203
require .Contains (t , string (stderr ), "library not valid" )
1202
1204
}
1205
+
1206
+ func TestInstallGitInvalidLibrary (t * testing.T ) {
1207
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1208
+ defer env .CleanUp ()
1209
+
1210
+ // Initialize configs to enable --zip-path flag
1211
+ envVar := cli .GetDefaultEnv ()
1212
+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1213
+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1214
+ require .NoError (t , err )
1215
+
1216
+ // Create fake library repository
1217
+ repoDir := cli .SketchbookDir ().Join ("lib-without-header" )
1218
+ repo , err := git .PlainInit (repoDir .String (), false )
1219
+ require .NoError (t , err )
1220
+ libProperties := repoDir .Join ("library.properties" )
1221
+ f , err := libProperties .Create ()
1222
+ require .NoError (t , err )
1223
+ f .Close ()
1224
+ tree , err := repo .Worktree ()
1225
+ require .NoError (t , err )
1226
+ _ , err = tree .Add ("library.properties" )
1227
+ require .NoError (t , err )
1228
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1229
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1230
+ require .NoError (t , err )
1231
+
1232
+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "lib-without-header" )
1233
+ // Verifies library is not already installed
1234
+ require .NoDirExists (t , libInstallDir .String ())
1235
+
1236
+ _ , stderr , err := cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1237
+ require .Error (t , err )
1238
+ require .Contains (t , string (stderr ), "library not valid" )
1239
+ require .NoDirExists (t , libInstallDir .String ())
1240
+
1241
+ // Create another fake library repository
1242
+ repoDir = cli .SketchbookDir ().Join ("lib-without-properties" )
1243
+ repo , err = git .PlainInit (repoDir .String (), false )
1244
+ require .NoError (t , err )
1245
+ libHeader := repoDir .Join ("src" , "lib-without-properties.h" )
1246
+ require .NoError (t , libHeader .Parent ().MkdirAll ())
1247
+ f , err = libHeader .Create ()
1248
+ require .NoError (t , err )
1249
+ f .Close ()
1250
+ tree , err = repo .Worktree ()
1251
+ require .NoError (t , err )
1252
+ _ , err = tree .Add ("src/lib-without-properties.h" )
1253
+ require .NoError (t , err )
1254
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1255
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1256
+ require .NoError (t , err )
1257
+
1258
+ libInstallDir = cli .SketchbookDir ().Join ("libraries" , "lib-without-properties" )
1259
+ // Verifies library is not already installed
1260
+ require .NoDirExists (t , libInstallDir .String ())
1261
+
1262
+ _ , stderr , err = cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1263
+ require .Error (t , err )
1264
+ require .Contains (t , string (stderr ), "library not valid" )
1265
+ require .NoDirExists (t , libInstallDir .String ())
1266
+ }
0 commit comments