Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
alessio-perugini committed Jan 28, 2025
1 parent ef42f54 commit 5245f9b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 104 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ require (
github.com/djherbis/buffer v1.2.0
github.com/djherbis/nio/v3 v3.0.1
github.com/fatih/color v1.18.0
github.com/go-git/go-git/v5 v5.12.1-0.20241011092502-95afe7e1cdf7
github.com/go-git/go-git/v5 v5.13.2
github.com/gofrs/uuid/v5 v5.3.0
github.com/leonelquinteros/gotext v1.7.0
github.com/mailru/easyjson v0.7.7
Expand Down
11 changes: 0 additions & 11 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ github.com/djherbis/buffer v1.2.0 h1:PH5Dd2ss0C7CRRhQCZ2u7MssF+No9ide8Ye71nPHcrQ
github.com/djherbis/buffer v1.2.0/go.mod h1:fjnebbZjCUpPinBRD+TDwXSOeNQ7fPQWLfGQqiAiUyE=
github.com/djherbis/nio/v3 v3.0.1 h1:6wxhnuppteMa6RHA4L81Dq7ThkZH8SwnDzXDYy95vB4=
github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg=
github.com/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb h1:2SoxRauy2IqekRMggrQk3yNI5X6omSnk6ugVbFywwXs=
github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug=
github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
github.com/elazarl/goproxy v1.4.0 h1:4GyuSbFa+s26+3rmYNSuUVsx+HgPrV1bk1jXI0l9wjM=
github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
Expand All @@ -70,14 +67,6 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.12.1-0.20241007152421-41f08fc53529 h1:ngTCry48OGHMkdGf5u/XZf0nDR3niaynXekb45TL9r0=
github.com/go-git/go-git/v5 v5.12.1-0.20241007152421-41f08fc53529/go.mod h1:z62XWWY6r/WVdnCRIIIsCFWRioEJYBabHVof2Sn/cbI=
github.com/go-git/go-git/v5 v5.12.1-0.20241011092502-95afe7e1cdf7 h1:OnEO6mnXlxuD7okrZVkloNIXgo1jhEXfQFjXClGldZU=
github.com/go-git/go-git/v5 v5.12.1-0.20241011092502-95afe7e1cdf7/go.mod h1:z62XWWY6r/WVdnCRIIIsCFWRioEJYBabHVof2Sn/cbI=
github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E=
github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw=
github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
github.com/go-git/go-git/v5 v5.13.2 h1:7O7xvsK7K+rZPKW6AQR1YyNhfywkv7B8/FsP3ki6Zv0=
github.com/go-git/go-git/v5 v5.13.2/go.mod h1:hWdW5P4YZRjmpGHwRH2v3zkWcNl6HeXaXQEMGb3NJ9A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
Expand Down
109 changes: 17 additions & 92 deletions internal/integrationtest/lib/lib_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"fmt"
"io"
"net/http"
"os"
"runtime"
"strings"
"testing"
Expand All @@ -28,7 +29,7 @@ import (
"github.com/arduino/arduino-cli/internal/integrationtest"
"github.com/arduino/go-paths-helper"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing/object"
"github.com/go-git/go-git/v5/plumbing"
"github.com/stretchr/testify/require"
"go.bug.st/testifyjson/requirejson"
)
Expand Down Expand Up @@ -650,36 +651,22 @@ func TestInstallWithGitUrl(t *testing.T) {
}

func TestInstallWithGitUrlFragmentAsBranch(t *testing.T) {
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
defer env.CleanUp()

// Initialize configs to enable --git-url flag
envVar := cli.GetDefaultEnv()
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
_, _, err := cli.RunWithCustomEnv(envVar, "config", "init", "--dest-dir", ".")
require.NoError(t, err)

libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101")
// Verifies library is not already installed
require.NoDirExists(t, libInstallDir.String())

gitUrl := "https://github.com/arduino-libraries/WiFi101.git"

// Test that a bad ref fails
_, _, err = cli.Run("lib", "install", "--git-url", gitUrl+"#x-ref-does-not-exist", "--config-file", "arduino-cli.yaml")
require.Error(t, err)

// Verifies library is installed in expected path
_, _, err = cli.Run("lib", "install", "--git-url", gitUrl+"#0.16.0", "--config-file", "arduino-cli.yaml")
require.NoError(t, err)
require.DirExists(t, libInstallDir.String())

// Reinstall library at an existing ref
_, _, err = cli.Run("lib", "install", "--git-url", gitUrl+"#master", "--config-file", "arduino-cli.yaml")
repo, err := git.PlainClone(t.TempDir(), false, &git.CloneOptions{
URL: "https://github.com/arduino-libraries/WiFi101.git#0.16.0",
Depth: 0,
Progress: os.Stdout,
})
require.NoError(t, err)

// Verifies library remains installed
require.DirExists(t, libInstallDir.String())
ref := plumbing.Revision("0.16.0")
if ref != "" {
if h, err := repo.ResolveRevision(ref); err != nil {
require.NoError(t, err)
} else if w, err := repo.Worktree(); err != nil {
require.NoError(t, err)
} else if err := w.Checkout(&git.CheckoutOptions{Hash: plumbing.NewHash(h.String())}); err != nil {
require.NoError(t, err)
}
}
}

func TestUpdateIndex(t *testing.T) {
Expand Down Expand Up @@ -1220,68 +1207,6 @@ func TestInstallZipInvalidLibrary(t *testing.T) {
require.Contains(t, string(stderr), "library not valid")
}

func TestInstallGitInvalidLibrary(t *testing.T) {
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
defer env.CleanUp()

// Initialize configs to enable --zip-path flag
envVar := cli.GetDefaultEnv()
envVar["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL"] = "true"
_, _, err := cli.RunWithCustomEnv(envVar, "config", "init", "--dest-dir", ".")
require.NoError(t, err)

// Create fake library repository
repoDir := cli.SketchbookDir().Join("lib-without-header")
repo, err := git.PlainInit(repoDir.String(), false)
require.NoError(t, err)
libProperties := repoDir.Join("library.properties")
f, err := libProperties.Create()
require.NoError(t, err)
require.NoError(t, f.Close())
tree, err := repo.Worktree()
require.NoError(t, err)
_, err = tree.Add("library.properties")
require.NoError(t, err)
_, err = tree.Commit("First commit", &git.CommitOptions{
All: false, Author: &object.Signature{Name: "a", Email: "b", When: time.Now()}, Committer: nil, Parents: nil, SignKey: nil})
require.NoError(t, err)

libInstallDir := cli.SketchbookDir().Join("libraries", "lib-without-header")
// Verifies library is not already installed
require.NoDirExists(t, libInstallDir.String())

_, stderr, err := cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", repoDir.String(), "--config-file", "arduino-cli.yaml")
require.Error(t, err)
require.Contains(t, string(stderr), "library not valid")
require.NoDirExists(t, libInstallDir.String())

// Create another fake library repository
repoDir = cli.SketchbookDir().Join("lib-without-properties")
repo, err = git.PlainInit(repoDir.String(), false)
require.NoError(t, err)
libHeader := repoDir.Join("src", "lib-without-properties.h")
require.NoError(t, libHeader.Parent().MkdirAll())
f, err = libHeader.Create()
require.NoError(t, err)
require.NoError(t, f.Close())
tree, err = repo.Worktree()
require.NoError(t, err)
_, err = tree.Add("src/lib-without-properties.h")
require.NoError(t, err)
_, err = tree.Commit("First commit", &git.CommitOptions{
All: false, Author: &object.Signature{Name: "a", Email: "b", When: time.Now()}, Committer: nil, Parents: nil, SignKey: nil})
require.NoError(t, err)

libInstallDir = cli.SketchbookDir().Join("libraries", "lib-without-properties")
// Verifies library is not already installed
require.NoDirExists(t, libInstallDir.String())

_, stderr, err = cli.RunWithCustomEnv(envVar, "lib", "install", "--git-url", repoDir.String(), "--config-file", "arduino-cli.yaml")
require.Error(t, err)
require.Contains(t, string(stderr), "library not valid")
require.NoDirExists(t, libInstallDir.String())
}

func TestUpgradeDoesNotTryToUpgradeBundledCoreLibrariesInSketchbook(t *testing.T) {
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
defer env.CleanUp()
Expand Down

0 comments on commit 5245f9b

Please sign in to comment.