Skip to content

Commit 7fe5657

Browse files
Migrate TestInstallGitInvalidLibrary from test_lib.py to lib_test.go
1 parent eccc723 commit 7fe5657

File tree

2 files changed

+64
-46
lines changed

2 files changed

+64
-46
lines changed

internal/integrationtest/lib/lib_test.go

+64
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ import (
2222
"net/http"
2323
"strings"
2424
"testing"
25+
"time"
2526

2627
"github.com/arduino/arduino-cli/internal/integrationtest"
2728
"github.com/arduino/go-paths-helper"
2829
"github.com/stretchr/testify/require"
2930
"go.bug.st/testifyjson/requirejson"
3031
"gopkg.in/src-d/go-git.v4"
32+
"gopkg.in/src-d/go-git.v4/plumbing/object"
3133
)
3234

3335
func TestLibUpgradeCommand(t *testing.T) {
@@ -1200,3 +1202,65 @@ func TestInstallZipInvalidLibrary(t *testing.T) {
12001202
require.Error(t, err)
12011203
require.Contains(t, string(stderr), "library not valid")
12021204
}
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+
}

test/test_lib.py

-46
Original file line numberDiff line numberDiff line change
@@ -206,52 +206,6 @@ def test_install_with_zip_path_multiple_libraries(run_command, downloads_dir, da
206206
assert ble_install_dir.exists()
207207

208208

209-
def test_install_git_invalid_library(run_command, data_dir, downloads_dir):
210-
# Initialize configs to enable --zip-path flag
211-
env = {
212-
"ARDUINO_DATA_DIR": data_dir,
213-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
214-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
215-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
216-
}
217-
assert run_command(["config", "init", "--dest-dir", "."], custom_env=env)
218-
219-
# Create fake library repository
220-
repo_dir = Path(data_dir, "lib-without-header")
221-
with Repo.init(repo_dir) as repo:
222-
lib_properties = Path(repo_dir, "library.properties")
223-
lib_properties.touch()
224-
repo.index.add([str(lib_properties)])
225-
repo.index.commit("First commit")
226-
227-
lib_install_dir = Path(data_dir, "libraries", "lib-without-header")
228-
# Verifies library is not already installed
229-
assert not lib_install_dir.exists()
230-
231-
res = run_command(["lib", "install", "--git-url", repo_dir], custom_env=env)
232-
assert res.failed
233-
assert "library not valid" in res.stderr
234-
assert not lib_install_dir.exists()
235-
236-
# Create another fake library repository
237-
repo_dir = Path(data_dir, "lib-without-properties")
238-
with Repo.init(repo_dir) as repo:
239-
lib_header = Path(repo_dir, "src", "lib-without-properties.h")
240-
lib_header.parent.mkdir(parents=True, exist_ok=True)
241-
lib_header.touch()
242-
repo.index.add([str(lib_header)])
243-
repo.index.commit("First commit")
244-
245-
lib_install_dir = Path(data_dir, "libraries", "lib-without-properties")
246-
# Verifies library is not already installed
247-
assert not lib_install_dir.exists()
248-
249-
res = run_command(["lib", "install", "--git-url", repo_dir], custom_env=env)
250-
assert res.failed
251-
assert "library not valid" in res.stderr
252-
assert not lib_install_dir.exists()
253-
254-
255209
def test_upgrade_does_not_try_to_upgrade_bundled_core_libraries_in_sketchbook(run_command, data_dir):
256210
test_platform_name = "platform_with_bundled_library"
257211
platform_install_dir = Path(data_dir, "hardware", "arduino-beta-dev", test_platform_name)

0 commit comments

Comments
 (0)