@@ -20,6 +20,7 @@ import (
2020 "fmt"
2121 "io"
2222 "net/http"
23+ "runtime"
2324 "strings"
2425 "testing"
2526 "time"
@@ -28,6 +29,7 @@ import (
2829 "github.com/arduino/go-paths-helper"
2930 "github.com/stretchr/testify/require"
3031 "go.bug.st/testifyjson/requirejson"
32+ "go.lsp.dev/uri"
3133 "gopkg.in/src-d/go-git.v4"
3234 "gopkg.in/src-d/go-git.v4/plumbing/object"
3335)
@@ -1400,3 +1402,34 @@ func TestInstallWithZipPathMultipleLibraries(t *testing.T) {
14001402 require .DirExists (t , wifiInstallDir .String ())
14011403 require .DirExists (t , bleInstallDir .String ())
14021404}
1405+
1406+ func TestInstallWithGitUrlLocalFileUri (t * testing.T ) {
1407+ if runtime .GOOS == "windows" {
1408+ t .Skip ("Using a file uri as git url doesn't work on Windows, " +
1409+ "this must be removed when this issue is fixed: https://github.com/go-git/go-git/issues/247" )
1410+ }
1411+
1412+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1413+ defer env .CleanUp ()
1414+
1415+ envVar := cli .GetDefaultEnv ()
1416+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1417+
1418+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "WiFi101" )
1419+ // Verifies library is not installed
1420+ require .NoDirExists (t , libInstallDir .String ())
1421+
1422+ // Clone repository locally
1423+ gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
1424+ repoDir := cli .SketchbookDir ().Join ("WiFi101" )
1425+ _ , err := git .PlainClone (repoDir .String (), false , & git.CloneOptions {
1426+ URL : gitUrl ,
1427+ })
1428+ require .NoError (t , err )
1429+
1430+ _ , _ , err = cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , uri .New (repoDir .String ()).Filename ())
1431+ require .NoError (t , err )
1432+
1433+ // Verifies library is installed
1434+ require .DirExists (t , libInstallDir .String ())
1435+ }
0 commit comments