@@ -20,12 +20,14 @@ import (
20
20
"fmt"
21
21
"strings"
22
22
"testing"
23
+ "time"
23
24
24
25
"github.com/arduino/arduino-cli/internal/integrationtest"
25
26
"github.com/arduino/go-paths-helper"
26
27
"github.com/stretchr/testify/require"
27
28
"go.bug.st/testifyjson/requirejson"
28
29
"gopkg.in/src-d/go-git.v4"
30
+ "gopkg.in/src-d/go-git.v4/plumbing/object"
29
31
)
30
32
31
33
func TestLibUpgradeCommand (t * testing.T ) {
@@ -1123,3 +1125,65 @@ func TestInstallZipInvalidLibrary(t *testing.T) {
1123
1125
require .Error (t , err )
1124
1126
require .Contains (t , string (stderr ), "library not valid" )
1125
1127
}
1128
+
1129
+ func TestInstallGitInvalidLibrary (t * testing.T ) {
1130
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1131
+ defer env .CleanUp ()
1132
+
1133
+ // Initialize configs to enable --zip-path flag
1134
+ envVar := cli .GetDefaultEnv ()
1135
+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1136
+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1137
+ require .NoError (t , err )
1138
+
1139
+ // Create fake library repository
1140
+ repoDir := cli .SketchbookDir ().Join ("lib-without-header" )
1141
+ repo , err := git .PlainInit (repoDir .String (), false )
1142
+ require .NoError (t , err )
1143
+ libProperties := repoDir .Join ("library.properties" )
1144
+ f , err := libProperties .Create ()
1145
+ require .NoError (t , err )
1146
+ f .Close ()
1147
+ tree , err := repo .Worktree ()
1148
+ require .NoError (t , err )
1149
+ _ , err = tree .Add ("library.properties" )
1150
+ require .NoError (t , err )
1151
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1152
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1153
+ require .NoError (t , err )
1154
+
1155
+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "lib-without-header" )
1156
+ // Verifies library is not already installed
1157
+ require .NoDirExists (t , libInstallDir .String ())
1158
+
1159
+ _ , stderr , err := cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1160
+ require .Error (t , err )
1161
+ require .Contains (t , string (stderr ), "library not valid" )
1162
+ require .NoDirExists (t , libInstallDir .String ())
1163
+
1164
+ // Create another fake library repository
1165
+ repoDir = cli .SketchbookDir ().Join ("lib-without-properties" )
1166
+ repo , err = git .PlainInit (repoDir .String (), false )
1167
+ require .NoError (t , err )
1168
+ libHeader := repoDir .Join ("src" , "lib-without-properties.h" )
1169
+ require .NoError (t , libHeader .Parent ().MkdirAll ())
1170
+ f , err = libHeader .Create ()
1171
+ require .NoError (t , err )
1172
+ f .Close ()
1173
+ tree , err = repo .Worktree ()
1174
+ require .NoError (t , err )
1175
+ _ , err = tree .Add ("src/lib-without-properties.h" )
1176
+ require .NoError (t , err )
1177
+ _ , err = tree .Commit ("First commit" , & git.CommitOptions {
1178
+ All : false , Author : & object.Signature {Name : "a" , Email : "b" , When : time .Now ()}, Committer : nil , Parents : nil , SignKey : nil })
1179
+ require .NoError (t , err )
1180
+
1181
+ libInstallDir = cli .SketchbookDir ().Join ("libraries" , "lib-without-properties" )
1182
+ // Verifies library is not already installed
1183
+ require .NoDirExists (t , libInstallDir .String ())
1184
+
1185
+ _ , stderr , err = cli .RunWithCustomEnv (envVar , "lib" , "install" , "--git-url" , repoDir .String ())
1186
+ require .Error (t , err )
1187
+ require .Contains (t , string (stderr ), "library not valid" )
1188
+ require .NoDirExists (t , libInstallDir .String ())
1189
+ }
0 commit comments