Skip to content

Commit 53a2768

Browse files
authoredDec 12, 2022
[skip-changelog] Migrate lib_test.py to test_lib.go part two (#1999)
* Migrate TestUninstallSpaces from test_lib.py to lib_test.go * Migrate TestLibOpsCaseInsensitive from test_lib.py to lib_test.go * Migrate TestSearch from test_lib.py to lib_test.go * Migrate TestSearchParagraph from test_lib.py to lib_test.go * Migrate TestLibListWithUpdatableFlag from test_lib.py to lib_test.go * Migrate TestInstallWithGitUrlFromCurrentDirectory from test_lib.py to lib_test.go * Migrate TestInstallWithGitLocalUrl from test_lib.py to lib_test.go * Migrate TestInstallWithGitUrlRelativePath from test_lib.py to lib_test.go * Migrate TestInstallWithGitUrlDoesNotCreateGitRepo from test_lib.py to lib_test.go * Migrate TestInstallWithGitUrlMultipleLibraries from test_lib.py to lib_test.go * Migrate TestLibExamples from test_lib.py to lib_test.go * Migrate TestLibExamplesWithPdeFile from test_lib.py to lib_test.go
1 parent f79974b commit 53a2768

File tree

2 files changed

+348
-300
lines changed

2 files changed

+348
-300
lines changed
 

‎internal/integrationtest/lib/lib_test.go

+348
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package lib_test
1717

1818
import (
1919
"encoding/json"
20+
"fmt"
2021
"io"
2122
"net/http"
2223
"strings"
@@ -26,6 +27,7 @@ import (
2627
"github.com/arduino/go-paths-helper"
2728
"github.com/stretchr/testify/require"
2829
"go.bug.st/testifyjson/requirejson"
30+
"gopkg.in/src-d/go-git.v4"
2931
)
3032

3133
func TestLibUpgradeCommand(t *testing.T) {
@@ -676,3 +678,349 @@ func TestUninstall(t *testing.T) {
676678
_, _, err = cli.Run("lib", "uninstall", libs[0], libs[1])
677679
require.NoError(t, err)
678680
}
681+
682+
func TestUninstallSpaces(t *testing.T) {
683+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
684+
defer env.CleanUp()
685+
686+
key := "LiquidCrystal I2C"
687+
_, _, err := cli.Run("lib", "install", key)
688+
require.NoError(t, err)
689+
_, _, err = cli.Run("lib", "uninstall", key)
690+
require.NoError(t, err)
691+
stdout, _, err := cli.Run("lib", "list", "--format", "json")
692+
require.NoError(t, err)
693+
requirejson.Len(t, stdout, 0)
694+
}
695+
696+
func TestLibOpsCaseInsensitive(t *testing.T) {
697+
/*This test is supposed to (un)install the following library,
698+
As you can see the name is all caps:
699+
700+
Name: "PCM"
701+
Author: David Mellis <d.mellis@bcmi-labs.cc>, Michael Smith <michael@hurts.ca>
702+
Maintainer: David Mellis <d.mellis@bcmi-labs.cc>
703+
Sentence: Playback of short audio samples.
704+
Paragraph: These samples are encoded directly in the Arduino sketch as an array of numbers.
705+
Website: http://highlowtech.org/?p=1963
706+
Category: Signal Input/Output
707+
Architecture: avr
708+
Types: Contributed
709+
Versions: [1.0.0]*/
710+
711+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
712+
defer env.CleanUp()
713+
714+
key := "pcm"
715+
_, _, err := cli.Run("lib", "install", key)
716+
require.NoError(t, err)
717+
_, _, err = cli.Run("lib", "uninstall", key)
718+
require.NoError(t, err)
719+
stdout, _, err := cli.Run("lib", "list", "--format", "json")
720+
require.NoError(t, err)
721+
requirejson.Len(t, stdout, 0)
722+
}
723+
724+
func TestSearch(t *testing.T) {
725+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
726+
defer env.CleanUp()
727+
728+
stdout, _, err := cli.Run("lib", "search", "--names")
729+
require.NoError(t, err)
730+
lines := strings.Split(strings.TrimSpace(string(stdout)), "\n")
731+
var libs []string
732+
for i, v := range lines {
733+
lines[i] = strings.TrimSpace(v)
734+
if strings.Contains(v, "Name:") {
735+
libs = append(libs, strings.Trim(strings.SplitN(v, " ", 2)[1], "\""))
736+
}
737+
}
738+
739+
expected := []string{"WiFi101", "WiFi101OTA", "Firebase Arduino based on WiFi101", "WiFi101_Generic"}
740+
require.Subset(t, libs, expected)
741+
742+
stdout, _, err = cli.Run("lib", "search", "--names", "--format", "json")
743+
require.NoError(t, err)
744+
requirejson.Query(t, stdout, ".libraries | length", fmt.Sprint(len(libs)))
745+
746+
runSearch := func(args string, expectedLibs []string) {
747+
stdout, _, err = cli.Run("lib", "search", "--names", "--format", "json", args)
748+
require.NoError(t, err)
749+
libraries := requirejson.Parse(t, stdout).Query("[ .libraries | .[] | .name ]").String()
750+
for _, l := range expectedLibs {
751+
require.Contains(t, libraries, l)
752+
}
753+
}
754+
runSearch("Arduino_MKRIoTCarrier", []string{"Arduino_MKRIoTCarrier"})
755+
runSearch("Arduino mkr iot carrier", []string{"Arduino_MKRIoTCarrier"})
756+
runSearch("mkr iot carrier", []string{"Arduino_MKRIoTCarrier"})
757+
runSearch("mkriotcarrier", []string{"Arduino_MKRIoTCarrier"})
758+
runSearch("dht", []string{"DHT sensor library", "DHT sensor library for ESPx", "DHT12", "SimpleDHT", "TinyDHT sensor library", "SDHT"})
759+
runSearch("dht11", []string{"DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"})
760+
runSearch("dht12", []string{"DHT12", "DHT12 sensor library", "SDHT"})
761+
runSearch("dht22", []string{"DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"})
762+
runSearch("dht sensor", []string{"DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"})
763+
runSearch("sensor dht", []string{})
764+
runSearch("arduino json", []string{"ArduinoJson", "Arduino_JSON"})
765+
runSearch("arduinojson", []string{"ArduinoJson"})
766+
runSearch("json", []string{"ArduinoJson", "Arduino_JSON"})
767+
}
768+
769+
func TestSearchParagraph(t *testing.T) {
770+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
771+
defer env.CleanUp()
772+
773+
// Search for a string that's only present in the `paragraph` field
774+
// within the index file.
775+
_, _, err := cli.Run("lib", "update-index")
776+
require.NoError(t, err)
777+
stdout, _, err := cli.Run("lib", "search", "A simple and efficient JSON library", "--names", "--format", "json")
778+
require.NoError(t, err)
779+
requirejson.Contains(t, stdout, `{
780+
"libraries": [
781+
{
782+
"name": "ArduinoJson"
783+
}
784+
]
785+
}`)
786+
}
787+
788+
func TestLibListWithUpdatableFlag(t *testing.T) {
789+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
790+
defer env.CleanUp()
791+
792+
// Init the environment explicitly
793+
_, _, err := cli.Run("lib", "update-index")
794+
require.NoError(t, err)
795+
796+
// No libraries to update
797+
stdout, stderr, err := cli.Run("lib", "list", "--updatable")
798+
require.NoError(t, err)
799+
require.Empty(t, stderr)
800+
require.Contains(t, string(stdout), "No libraries update is available.")
801+
// No library to update in json
802+
stdout, stderr, err = cli.Run("lib", "list", "--updatable", "--format", "json")
803+
require.NoError(t, err)
804+
require.Empty(t, stderr)
805+
requirejson.Empty(t, stdout)
806+
807+
// Install outdated library
808+
_, _, err = cli.Run("lib", "install", "ArduinoJson@6.11.0")
809+
require.NoError(t, err)
810+
// Install latest version of library
811+
_, _, err = cli.Run("lib", "install", "WiFi101")
812+
require.NoError(t, err)
813+
814+
stdout, stderr, err = cli.Run("lib", "list", "--updatable")
815+
require.NoError(t, err)
816+
require.Empty(t, stderr)
817+
var lines [][]string
818+
for _, v := range strings.Split(strings.TrimSpace(string(stdout)), "\n") {
819+
v = strings.Join(strings.Fields(v), " ")
820+
lines = append(lines, strings.SplitN(v, " ", 5))
821+
}
822+
require.Len(t, lines, 2)
823+
require.Subset(t, lines[0], []string{"Name", "Installed", "Available", "Location", "Description"})
824+
require.Equal(t, "ArduinoJson", lines[1][0])
825+
require.Equal(t, "6.11.0", lines[1][1])
826+
// Verifies available version is not equal to installed one and not empty
827+
require.NotEqual(t, "6.11.0", lines[1][2])
828+
require.NotEmpty(t, lines[1][2])
829+
require.Equal(t, "An efficient and elegant JSON library...", lines[1][4])
830+
831+
// Look at the JSON output
832+
stdout, stderr, err = cli.Run("lib", "list", "--updatable", "--format", "json")
833+
require.NoError(t, err)
834+
require.Empty(t, stderr)
835+
requirejson.Len(t, stdout, 1)
836+
// be sure data contains the available version
837+
requirejson.Query(t, stdout, `.[0] | .library | .version`, `"6.11.0"`)
838+
requirejson.Query(t, stdout, `.[0] | .release | .version != "6.11.0"`, `true`)
839+
requirejson.Query(t, stdout, `.[0] | .release | .version != ""`, `true`)
840+
}
841+
842+
func TestInstallWithGitUrlFromCurrentDirectory(t *testing.T) {
843+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
844+
defer env.CleanUp()
845+
846+
_, _, err := cli.Run("update")
847+
require.NoError(t, err)
848+
849+
envVar := cli.GetDefaultEnv()
850+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
851+
852+
libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
853+
// Verifies library is not installed
854+
require.NoDirExists(t, libInstallDir.String())
855+
856+
// Clone repository locally
857+
gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
858+
repoDir := cli.SketchbookDir().Join("WiFi101")
859+
_, err = git.PlainClone(repoDir.String(), false, &git.CloneOptions{
860+
URL: gitUrl,
861+
})
862+
require.NoError(t, err)
863+
864+
cli.SetWorkingDir(repoDir)
865+
_, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", ".")
866+
require.NoError(t, err)
867+
868+
// Verifies library is installed to correct folder
869+
require.DirExists(t, libInstallDir.String())
870+
}
871+
872+
func TestInstallWithGitLocalUrl(t *testing.T) {
873+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
874+
defer env.CleanUp()
875+
876+
_, _, err := cli.Run("update")
877+
require.NoError(t, err)
878+
879+
envVar := cli.GetDefaultEnv()
880+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
881+
882+
libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
883+
// Verifies library is not installed
884+
require.NoDirExists(t, libInstallDir.String())
885+
886+
// Clone repository locally
887+
gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
888+
repoDir := cli.SketchbookDir().Join("WiFi101")
889+
_, err = git.PlainClone(repoDir.String(), false, &git.CloneOptions{
890+
URL: gitUrl,
891+
})
892+
require.NoError(t, err)
893+
894+
_, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", repoDir.String())
895+
require.NoError(t, err)
896+
897+
// Verifies library is installed
898+
require.DirExists(t, libInstallDir.String())
899+
}
900+
901+
func TestInstallWithGitUrlRelativePath(t *testing.T) {
902+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
903+
defer env.CleanUp()
904+
905+
_, _, err := cli.Run("update")
906+
require.NoError(t, err)
907+
908+
envVar := cli.GetDefaultEnv()
909+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
910+
911+
libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
912+
// Verifies library is not installed
913+
require.NoDirExists(t, libInstallDir.String())
914+
915+
// Clone repository locally
916+
gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
917+
repoDir := cli.SketchbookDir().Join("WiFi101")
918+
_, err = git.PlainClone(repoDir.String(), false, &git.CloneOptions{
919+
URL: gitUrl,
920+
})
921+
require.NoError(t, err)
922+
923+
cli.SetWorkingDir(cli.SketchbookDir())
924+
_, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", "./WiFi101")
925+
require.NoError(t, err)
926+
927+
// Verifies library is installed
928+
require.DirExists(t, libInstallDir.String())
929+
}
930+
931+
func TestInstallWithGitUrlDoesNotCreateGitRepo(t *testing.T) {
932+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
933+
defer env.CleanUp()
934+
935+
_, _, err := cli.Run("update")
936+
require.NoError(t, err)
937+
938+
envVar := cli.GetDefaultEnv()
939+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
940+
941+
libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
942+
// Verifies library is not installed
943+
require.NoDirExists(t, libInstallDir.String())
944+
945+
// Clone repository locally
946+
gitUrl := "https://github.com/arduino-libraries/WiFi101.git"
947+
repoDir := cli.SketchbookDir().Join("WiFi101")
948+
_, err = git.PlainClone(repoDir.String(), false, &git.CloneOptions{
949+
URL: gitUrl,
950+
})
951+
require.NoError(t, err)
952+
953+
_, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", repoDir.String())
954+
require.NoError(t, err)
955+
956+
// Verifies installed library is not a git repository
957+
require.NoDirExists(t, libInstallDir.Join(".git").String())
958+
}
959+
960+
func TestInstallWithGitUrlMultipleLibraries(t *testing.T) {
961+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
962+
defer env.CleanUp()
963+
964+
_, _, err := cli.Run("update")
965+
require.NoError(t, err)
966+
967+
envVar := cli.GetDefaultEnv()
968+
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
969+
970+
wifiInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
971+
bleInstallDir := cli.SketchbookDir().Join("libraries", "ArduinoBLE")
972+
// Verifies library are not installed
973+
require.NoDirExists(t, wifiInstallDir.String())
974+
require.NoDirExists(t, bleInstallDir.String())
975+
976+
wifiUrl := "https://github.com/arduino-libraries/WiFi101.git"
977+
bleUrl := "https://github.com/arduino-libraries/ArduinoBLE.git"
978+
979+
_, _, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", wifiUrl, bleUrl)
980+
require.NoError(t, err)
981+
982+
// Verifies library are installed
983+
require.DirExists(t, wifiInstallDir.String())
984+
require.DirExists(t, bleInstallDir.String())
985+
}
986+
987+
func TestLibExamples(t *testing.T) {
988+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
989+
defer env.CleanUp()
990+
991+
_, _, err := cli.Run("update")
992+
require.NoError(t, err)
993+
994+
_, _, err = cli.Run("lib", "install", "Arduino_JSON@0.1.0")
995+
require.NoError(t, err)
996+
997+
stdout, _, err := cli.Run("lib", "examples", "Arduino_JSON", "--format", "json")
998+
require.NoError(t, err)
999+
requirejson.Len(t, stdout, 1)
1000+
examples := requirejson.Parse(t, stdout).Query(".[0] | .examples").String()
1001+
examples = strings.ReplaceAll(examples, "\\\\", "\\")
1002+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Arduino_JSON", "examples", "JSONArray").String())
1003+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Arduino_JSON", "examples", "JSONKitchenSink").String())
1004+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Arduino_JSON", "examples", "JSONObject").String())
1005+
}
1006+
1007+
func TestLibExamplesWithPdeFile(t *testing.T) {
1008+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
1009+
defer env.CleanUp()
1010+
1011+
_, _, err := cli.Run("update")
1012+
require.NoError(t, err)
1013+
1014+
_, _, err = cli.Run("lib", "install", "Encoder@1.4.1")
1015+
require.NoError(t, err)
1016+
1017+
stdout, _, err := cli.Run("lib", "examples", "Encoder", "--format", "json")
1018+
require.NoError(t, err)
1019+
requirejson.Len(t, stdout, 1)
1020+
examples := requirejson.Parse(t, stdout).Query(".[0] | .examples").String()
1021+
examples = strings.ReplaceAll(examples, "\\\\", "\\")
1022+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Encoder", "examples", "Basic").String())
1023+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Encoder", "examples", "NoInterrupts").String())
1024+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Encoder", "examples", "SpeedTest").String())
1025+
require.Contains(t, examples, cli.SketchbookDir().Join("libraries", "Encoder", "examples", "TwoKnobs").String())
1026+
}

‎test/test_lib.py

-300
Original file line numberDiff line numberDiff line change
@@ -146,172 +146,6 @@ def test_install_with_zip_path(run_command, data_dir, downloads_dir):
146146
assert lib_install_dir / "README.adoc" in files
147147

148148

149-
def test_uninstall_spaces(run_command):
150-
key = "LiquidCrystal I2C"
151-
assert run_command(["lib", "install", key])
152-
assert run_command(["lib", "uninstall", key])
153-
result = run_command(["lib", "list", "--format", "json"])
154-
assert result.ok
155-
assert len(json.loads(result.stdout)) == 0
156-
157-
158-
def test_lib_ops_caseinsensitive(run_command):
159-
"""
160-
This test is supposed to (un)install the following library,
161-
As you can see the name is all caps:
162-
163-
Name: "PCM"
164-
Author: David Mellis <d.mellis@bcmi-labs.cc>, Michael Smith <michael@hurts.ca>
165-
Maintainer: David Mellis <d.mellis@bcmi-labs.cc>
166-
Sentence: Playback of short audio samples.
167-
Paragraph: These samples are encoded directly in the Arduino sketch as an array of numbers.
168-
Website: http://highlowtech.org/?p=1963
169-
Category: Signal Input/Output
170-
Architecture: avr
171-
Types: Contributed
172-
Versions: [1.0.0]
173-
"""
174-
key = "pcm"
175-
assert run_command(["lib", "install", key])
176-
assert run_command(["lib", "uninstall", key])
177-
result = run_command(["lib", "list", "--format", "json"])
178-
assert result.ok
179-
assert len(json.loads(result.stdout)) == 0
180-
181-
182-
def test_search(run_command):
183-
assert run_command(["update"])
184-
185-
result = run_command(["lib", "search", "--names"])
186-
assert result.ok
187-
lines = [l.strip() for l in result.stdout.strip().splitlines()]
188-
assert "Downloading index: library_index.tar.bz2 downloaded" in lines
189-
libs = [l[6:].strip('"') for l in lines if "Name:" in l]
190-
191-
expected = {"WiFi101", "WiFi101OTA", "Firebase Arduino based on WiFi101", "WiFi101_Generic"}
192-
assert expected == {lib for lib in libs if "WiFi101" in lib}
193-
194-
result = run_command(["lib", "search", "--names", "--format", "json"])
195-
assert result.ok
196-
libs_json = json.loads(result.stdout)
197-
assert len(libs) == len(libs_json.get("libraries"))
198-
199-
result = run_command(["lib", "search", "--names"])
200-
assert result.ok
201-
202-
def run_search(search_args, expected_libraries):
203-
res = run_command(["lib", "search", "--names", "--format", "json"] + search_args.split(" "))
204-
assert res.ok
205-
data = json.loads(res.stdout)
206-
libraries = [l["name"] for l in data["libraries"]]
207-
for l in expected_libraries:
208-
assert l in libraries
209-
210-
run_search("Arduino_MKRIoTCarrier", ["Arduino_MKRIoTCarrier"])
211-
run_search("Arduino mkr iot carrier", ["Arduino_MKRIoTCarrier"])
212-
run_search("mkr iot carrier", ["Arduino_MKRIoTCarrier"])
213-
run_search("mkriotcarrier", ["Arduino_MKRIoTCarrier"])
214-
215-
run_search(
216-
"dht",
217-
["DHT sensor library", "DHT sensor library for ESPx", "DHT12", "SimpleDHT", "TinyDHT sensor library", "SDHT"],
218-
)
219-
run_search("dht11", ["DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"])
220-
run_search("dht12", ["DHT12", "DHT12 sensor library", "SDHT"])
221-
run_search("dht22", ["DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"])
222-
run_search("dht sensor", ["DHT sensor library", "DHT sensor library for ESPx", "SimpleDHT", "SDHT"])
223-
run_search("sensor dht", [])
224-
225-
run_search("arduino json", ["ArduinoJson", "Arduino_JSON"])
226-
run_search("arduinojson", ["ArduinoJson"])
227-
run_search("json", ["ArduinoJson", "Arduino_JSON"])
228-
229-
230-
def test_search_paragraph(run_command):
231-
"""
232-
Search for a string that's only present in the `paragraph` field
233-
within the index file.
234-
"""
235-
assert run_command(["lib", "update-index"])
236-
result = run_command(["lib", "search", "A simple and efficient JSON library", "--names", "--format", "json"])
237-
assert result.ok
238-
data = json.loads(result.stdout)
239-
libraries = [l["name"] for l in data["libraries"]]
240-
assert "ArduinoJson" in libraries
241-
242-
243-
def test_lib_list_with_updatable_flag(run_command):
244-
# Init the environment explicitly
245-
run_command(["lib", "update-index"])
246-
247-
# No libraries to update
248-
result = run_command(["lib", "list", "--updatable"])
249-
assert result.ok
250-
assert "" == result.stderr
251-
assert "No libraries update is available." in result.stdout.strip()
252-
# No library to update in json
253-
result = run_command(["lib", "list", "--updatable", "--format", "json"])
254-
assert result.ok
255-
assert "" == result.stderr
256-
assert 0 == len(json.loads(result.stdout))
257-
258-
# Install outdated library
259-
assert run_command(["lib", "install", "ArduinoJson@6.11.0"])
260-
# Install latest version of library
261-
assert run_command(["lib", "install", "WiFi101"])
262-
263-
res = run_command(["lib", "list", "--updatable"])
264-
assert res.ok
265-
assert "" == res.stderr
266-
# lines = res.stdout.strip().splitlines()
267-
lines = [l.strip().split(maxsplit=4) for l in res.stdout.strip().splitlines()]
268-
assert 2 == len(lines)
269-
assert ["Name", "Installed", "Available", "Location", "Description"] in lines
270-
line = lines[1]
271-
assert "ArduinoJson" == line[0]
272-
assert "6.11.0" == line[1]
273-
# Verifies available version is not equal to installed one and not empty
274-
assert "6.11.0" != line[2]
275-
assert "" != line[2]
276-
assert "An efficient and elegant JSON library..." == line[4]
277-
278-
# Look at the JSON output
279-
res = run_command(["lib", "list", "--updatable", "--format", "json"], hide=True)
280-
assert res.ok
281-
assert "" == res.stderr
282-
data = json.loads(res.stdout)
283-
assert 1 == len(data)
284-
# be sure data contains the available version
285-
assert "6.11.0" == data[0]["library"]["version"]
286-
assert "6.11.0" != data[0]["release"]["version"]
287-
assert "" != data[0]["release"]["version"]
288-
289-
290-
def test_install_with_git_url_from_current_directory(run_command, downloads_dir, data_dir):
291-
assert run_command(["update"])
292-
293-
env = {
294-
"ARDUINO_DATA_DIR": data_dir,
295-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
296-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
297-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
298-
}
299-
300-
lib_install_dir = Path(data_dir, "libraries", "WiFi101")
301-
# Verifies library is not installed
302-
assert not lib_install_dir.exists()
303-
304-
# Clone repository locally
305-
git_url = "https://github.com/arduino-libraries/WiFi101.git"
306-
repo_dir = Path(data_dir, "WiFi101")
307-
assert Repo.clone_from(git_url, repo_dir)
308-
309-
assert run_command(["lib", "install", "--git-url", "."], custom_working_dir=repo_dir, custom_env=env)
310-
311-
# Verifies library is installed to correct folder
312-
assert lib_install_dir.exists()
313-
314-
315149
@pytest.mark.skipif(
316150
platform.system() == "Windows",
317151
reason="Using a file uri as git url doesn't work on Windows, "
@@ -342,107 +176,6 @@ def test_install_with_git_url_local_file_uri(run_command, downloads_dir, data_di
342176
assert lib_install_dir.exists()
343177

344178

345-
def test_install_with_git_local_url(run_command, downloads_dir, data_dir):
346-
assert run_command(["update"])
347-
348-
env = {
349-
"ARDUINO_DATA_DIR": data_dir,
350-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
351-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
352-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
353-
}
354-
355-
lib_install_dir = Path(data_dir, "libraries", "WiFi101")
356-
# Verifies library is not installed
357-
assert not lib_install_dir.exists()
358-
359-
# Clone repository locally
360-
git_url = "https://github.com/arduino-libraries/WiFi101.git"
361-
repo_dir = Path(data_dir, "WiFi101")
362-
assert Repo.clone_from(git_url, repo_dir)
363-
364-
assert run_command(["lib", "install", "--git-url", repo_dir], custom_env=env)
365-
366-
# Verifies library is installed
367-
assert lib_install_dir.exists()
368-
369-
370-
def test_install_with_git_url_relative_path(run_command, downloads_dir, data_dir):
371-
assert run_command(["update"])
372-
373-
env = {
374-
"ARDUINO_DATA_DIR": data_dir,
375-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
376-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
377-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
378-
}
379-
380-
lib_install_dir = Path(data_dir, "libraries", "WiFi101")
381-
# Verifies library is not installed
382-
assert not lib_install_dir.exists()
383-
384-
# Clone repository locally
385-
git_url = "https://github.com/arduino-libraries/WiFi101.git"
386-
repo_dir = Path(data_dir, "WiFi101")
387-
assert Repo.clone_from(git_url, repo_dir)
388-
389-
assert run_command(["lib", "install", "--git-url", "./WiFi101"], custom_working_dir=data_dir, custom_env=env)
390-
391-
# Verifies library is installed
392-
assert lib_install_dir.exists()
393-
394-
395-
def test_install_with_git_url_does_not_create_git_repo(run_command, downloads_dir, data_dir):
396-
assert run_command(["update"])
397-
398-
env = {
399-
"ARDUINO_DATA_DIR": data_dir,
400-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
401-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
402-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
403-
}
404-
405-
lib_install_dir = Path(data_dir, "libraries", "WiFi101")
406-
# Verifies library is not installed
407-
assert not lib_install_dir.exists()
408-
409-
# Clone repository locally
410-
git_url = "https://github.com/arduino-libraries/WiFi101.git"
411-
repo_dir = Path(data_dir, "WiFi101")
412-
assert Repo.clone_from(git_url, repo_dir)
413-
414-
assert run_command(["lib", "install", "--git-url", repo_dir], custom_env=env)
415-
416-
# Verifies installed library is not a git repository
417-
assert not Path(lib_install_dir, ".git").exists()
418-
419-
420-
def test_install_with_git_url_multiple_libraries(run_command, downloads_dir, data_dir):
421-
assert run_command(["update"])
422-
423-
env = {
424-
"ARDUINO_DATA_DIR": data_dir,
425-
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
426-
"ARDUINO_SKETCHBOOK_DIR": data_dir,
427-
"ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL": "true",
428-
}
429-
430-
wifi_install_dir = Path(data_dir, "libraries", "WiFi101")
431-
ble_install_dir = Path(data_dir, "libraries", "ArduinoBLE")
432-
# Verifies libraries are not installed
433-
assert not wifi_install_dir.exists()
434-
assert not ble_install_dir.exists()
435-
436-
wifi_url = "https://github.com/arduino-libraries/WiFi101.git"
437-
ble_url = "https://github.com/arduino-libraries/ArduinoBLE.git"
438-
439-
assert run_command(["lib", "install", "--git-url", wifi_url, ble_url], custom_env=env)
440-
441-
# Verifies library are installed
442-
assert wifi_install_dir.exists()
443-
assert ble_install_dir.exists()
444-
445-
446179
def test_install_with_zip_path_multiple_libraries(run_command, downloads_dir, data_dir):
447180
assert run_command(["update"])
448181

@@ -473,39 +206,6 @@ def test_install_with_zip_path_multiple_libraries(run_command, downloads_dir, da
473206
assert ble_install_dir.exists()
474207

475208

476-
def test_lib_examples(run_command, data_dir):
477-
assert run_command(["update"])
478-
479-
assert run_command(["lib", "install", "Arduino_JSON@0.1.0"])
480-
481-
res = run_command(["lib", "examples", "Arduino_JSON", "--format", "json"])
482-
assert res.ok
483-
data = json.loads(res.stdout)
484-
assert len(data) == 1
485-
examples = data[0]["examples"]
486-
487-
assert str(Path(data_dir, "libraries", "Arduino_JSON", "examples", "JSONArray")) in examples
488-
assert str(Path(data_dir, "libraries", "Arduino_JSON", "examples", "JSONKitchenSink")) in examples
489-
assert str(Path(data_dir, "libraries", "Arduino_JSON", "examples", "JSONObject")) in examples
490-
491-
492-
def test_lib_examples_with_pde_file(run_command, data_dir):
493-
assert run_command(["update"])
494-
495-
assert run_command(["lib", "install", "Encoder@1.4.1"])
496-
497-
res = run_command(["lib", "examples", "Encoder", "--format", "json"])
498-
assert res.ok
499-
data = json.loads(res.stdout)
500-
assert len(data) == 1
501-
examples = data[0]["examples"]
502-
503-
assert str(Path(data_dir, "libraries", "Encoder", "examples", "Basic")) in examples
504-
assert str(Path(data_dir, "libraries", "Encoder", "examples", "NoInterrupts")) in examples
505-
assert str(Path(data_dir, "libraries", "Encoder", "examples", "SpeedTest")) in examples
506-
assert str(Path(data_dir, "libraries", "Encoder", "examples", "TwoKnobs")) in examples
507-
508-
509209
def test_lib_examples_with_case_mismatch(run_command, data_dir):
510210
assert run_command(["update"])
511211

0 commit comments

Comments
 (0)
Please sign in to comment.