Skip to content

Commit 8a7798f

Browse files
Migrate TestInstallGitUrlAndZipPathFlagsVisibility from test_lib.py to lib_test.go
1 parent 180e409 commit 8a7798f

File tree

2 files changed

+62
-47
lines changed

2 files changed

+62
-47
lines changed

Diff for: internal/integrationtest/lib/lib_test.go

+62
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ package lib_test
1818
import (
1919
"encoding/json"
2020
"fmt"
21+
"io"
22+
"net/http"
2123
"strings"
2224
"testing"
2325
"time"
@@ -1255,3 +1257,63 @@ func TestUpgradeDoesNotTryToUpgradeBundledCoreLibraries(t *testing.T) {
12551257
// Empty output means nothing has been updated as expected
12561258
require.Empty(t, stdout)
12571259
}
1260+
1261+
func downloadLib(t *testing.T, url string, zipPath *paths.Path) {
1262+
response, err := http.Get(url)
1263+
require.NoError(t, err)
1264+
require.Equal(t, response.StatusCode, 200)
1265+
zip, err := zipPath.Create()
1266+
require.NoError(t, err)
1267+
_, err = io.Copy(zip, response.Body)
1268+
require.NoError(t, err)
1269+
require.NoError(t, response.Body.Close())
1270+
require.NoError(t, zip.Close())
1271+
}
1272+
1273+
func TestInstallGitUrlAndZipPathFlagsVisibility(t *testing.T) {
1274+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
1275+
defer env.CleanUp()
1276+
1277+
// Verifies installation fail because flags are not found
1278+
gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
1279+
_, stderr, err := cli.Run("lib", "install", "--git-url", gitUrl)
1280+
require.Error(t, err)
1281+
require.Contains(t, string(stderr), "--git-url and --zip-path are disabled by default, for more information see:")
1282+
1283+
// Download library
1284+
url := "https://github.com/arduino-libraries/AudioZero/archive/refs/tags/1.1.1.zip"
1285+
zipPath := cli.DownloadDir().Join("libraries", "AudioZero.zip")
1286+
require.NoError(t, zipPath.Parent().MkdirAll())
1287+
downloadLib(t, url, zipPath)
1288+
1289+
_, stderr, err = cli.Run("lib", "install", "--zip-path", zipPath.String())
1290+
require.Error(t, err)
1291+
require.Contains(t, string(stderr), "--git-url and --zip-path are disabled by default, for more information see:")
1292+
1293+
envVar := cli.GetDefaultEnv()
1294+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
1295+
// Verifies installation is successful when flags are enabled with env var
1296+
stdout, _, err := cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", gitUrl)
1297+
require.NoError(t, err)
1298+
require.Contains(t, string(stdout), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk.")
1299+
1300+
stdout, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--zip-path", zipPath.String())
1301+
require.NoError(t, err)
1302+
require.Contains(t, string(stdout), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk.")
1303+
1304+
// Uninstall libraries to install them again
1305+
_, _, err = cli.Run("lib", "uninstall", "WiFi101", "AudioZero")
1306+
require.NoError(t, err)
1307+
1308+
// Verifies installation is successful when flags are enabled with settings file
1309+
_, _, err = cli.RunWithCustomEnv(envVar, "config", "init", "--dest-dir", ".")
1310+
require.NoError(t, err)
1311+
1312+
stdout, _, err = cli.Run("lib", "install", "--git-url", gitUrl)
1313+
require.NoError(t, err)
1314+
require.Contains(t, string(stdout), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk.")
1315+
1316+
stdout, _, err = cli.Run("lib", "install", "--zip-path", zipPath.String())
1317+
require.NoError(t, err)
1318+
require.Contains(t, string(stdout), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk.")
1319+
}

Diff for: test/test_lib.py

-47
Original file line numberDiff line numberDiff line change
@@ -49,53 +49,6 @@ def download_lib(url, download_dir):
4949
z.close()
5050

5151

52-
def test_install_git_url_and_zip_path_flags_visibility(run_command, data_dir, downloads_dir):
53-
# Verifies installation fail because flags are not found
54-
git_url = "https://github.com/arduino-libraries/WiFi101.git"
55-
res = run_command(["lib", "install", "--git-url", git_url])
56-
assert res.failed
57-
assert "--git-url and --zip-path are disabled by default, for more information see:" in res.stderr
58-
59-
# Download library
60-
url = "https://github.com/arduino-libraries/AudioZero/archive/refs/tags/1.1.1.zip"
61-
zip_path = Path(downloads_dir, "libraries", "AudioZero.zip")
62-
zip_path.parent.mkdir(parents=True, exist_ok=True)
63-
download_lib(url, zip_path)
64-
65-
res = run_command(["lib", "install", "--zip-path", zip_path])
66-
assert res.failed
67-
assert "--git-url and --zip-path are disabled by default, for more information see:" in res.stderr
68-
69-
env = {
70-
"ARDUINO_DATA_DIR": data_dir,
71-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
72-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
73-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
74-
}
75-
# Verifies installation is successful when flags are enabled with env var
76-
res = run_command(["lib", "install", "--git-url", git_url], custom_env=env)
77-
assert res.ok
78-
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
79-
80-
res = run_command(["lib", "install", "--zip-path", zip_path], custom_env=env)
81-
assert res.ok
82-
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
83-
84-
# Uninstall libraries to install them again
85-
assert run_command(["lib", "uninstall", "WiFi101", "AudioZero"])
86-
87-
# Verifies installation is successful when flags are enabled with settings file
88-
assert run_command(["config", "init", "--dest-dir", "."], custom_env=env)
89-
90-
res = run_command(["lib", "install", "--git-url", git_url])
91-
assert res.ok
92-
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
93-
94-
res = run_command(["lib", "install", "--zip-path", zip_path])
95-
assert res.ok
96-
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
97-
98-
9952
def test_install_with_zip_path(run_command, data_dir, downloads_dir):
10053
# Initialize configs to enable --zip-path flag
10154
env = {

0 commit comments

Comments
 (0)