From da5190739bf2c447ddc03e1a4bc0f3c761a3ba55 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 7 Feb 2025 14:50:09 +0100 Subject: [PATCH 1/3] Added integration test --- internal/integrationtest/lib/lib_test.go | 52 ++++++++++++++++-------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/internal/integrationtest/lib/lib_test.go b/internal/integrationtest/lib/lib_test.go index ab49a35e2a7..ff46fa20c26 100644 --- a/internal/integrationtest/lib/lib_test.go +++ b/internal/integrationtest/lib/lib_test.go @@ -659,27 +659,47 @@ func TestInstallWithGitUrlFragmentAsBranch(t *testing.T) { _, _, 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()) + t.Run("InvalidRef", func(t *testing.T) { + // Test that a bad ref fails + _, _, err = cli.Run("lib", "install", "--git-url", "https://github.com/arduino-libraries/WiFi101.git#x-ref-does-not-exist", "--config-file", "arduino-cli.yaml") + require.Error(t, err) + }) - gitUrl := "https://github.com/arduino-libraries/WiFi101.git" + t.Run("RefPointingToATag", func(t *testing.T) { + gitUrl := "https://github.com/arduino-libraries/WiFi101.git" + libInstallDir := cli.SketchbookDir().Join("libraries", "WiFi101").String() - // 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 not already installed + require.NoDirExists(t, libInstallDir) - // 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()) + // 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) - // Reinstall library at an existing ref - _, _, err = cli.Run("lib", "install", "--git-url", gitUrl+"#master", "--config-file", "arduino-cli.yaml") - require.NoError(t, err) + // Reinstall library at an existing ref + _, _, err = cli.Run("lib", "install", "--git-url", gitUrl+"#master", "--config-file", "arduino-cli.yaml") + require.NoError(t, err) - // Verifies library remains installed - require.DirExists(t, libInstallDir.String()) + // Verifies library remains installed + require.DirExists(t, libInstallDir) + }) + + t.Run("RefPointingToBranch", func(t *testing.T) { + libInstallDir := cli.SketchbookDir().Join("libraries", "ArduinoCloud") + + // Verify install with ref pointing to a branch + require.NoDirExists(t, libInstallDir.String()) + _, _, err = cli.Run("lib", "install", "--git-url", "https://github.com/arduino-libraries/ArduinoCloud.git#revert-2-typos", "--config-file", "arduino-cli.yaml") + require.NoError(t, err) + require.DirExists(t, libInstallDir.String()) + + // Verify that the correct branch is checked out + // https://github.com/arduino-libraries/ArduinoCloud/commit/d098d4647967b3aeb4520e7baf279e4225254dd2 + fileToTest, err := libInstallDir.Join("src", "ArduinoCloudThingBase.h").ReadFile() + require.NoError(t, err) + require.Contains(t, string(fileToTest), `#define LENGHT_M "meters"`) + }) } func TestUpdateIndex(t *testing.T) { From f73e3f132682aab762419ef49d1482fdf6e3021d Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 7 Feb 2025 14:51:26 +0100 Subject: [PATCH 2/3] Fixed library install from git when ref points to a branch --- .../libraries/librariesmanager/install.go | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/internal/arduino/libraries/librariesmanager/install.go b/internal/arduino/libraries/librariesmanager/install.go index de53ea3cd56..1d73849f81f 100644 --- a/internal/arduino/libraries/librariesmanager/install.go +++ b/internal/arduino/libraries/librariesmanager/install.go @@ -219,25 +219,15 @@ func (lmi *Installer) InstallGitLib(argURL string, overwrite bool) error { if ref != "" { depth = 0 } - repo, err := git.PlainClone(tmpInstallPath.String(), false, &git.CloneOptions{ - URL: gitURL, - Depth: depth, - Progress: os.Stdout, - }) - if err != nil { + if _, err := git.PlainClone(tmpInstallPath.String(), false, &git.CloneOptions{ + URL: gitURL, + Depth: depth, + Progress: os.Stdout, + ReferenceName: ref, + }); err != nil { return err } - if ref != "" { - if h, err := repo.ResolveRevision(ref); err != nil { - return err - } else if w, err := repo.Worktree(); err != nil { - return err - } else if err := w.Checkout(&git.CheckoutOptions{Hash: plumbing.NewHash(h.String())}); err != nil { - return err - } - } - // We don't want the installed library to be a git repository thus we delete this folder tmpInstallPath.Join(".git").RemoveAll() @@ -251,7 +241,7 @@ func (lmi *Installer) InstallGitLib(argURL string, overwrite bool) error { // parseGitArgURL tries to recover a library name from a git URL. // Returns an error in case the URL is not a valid git URL. -func parseGitArgURL(argURL string) (string, string, plumbing.Revision, error) { +func parseGitArgURL(argURL string) (string, string, plumbing.ReferenceName, error) { // On Windows handle paths with backslashes in the form C:\Path\to\library if path := paths.New(argURL); path != nil && path.Exist() { return path.Base(), argURL, "", nil @@ -289,7 +279,7 @@ func parseGitArgURL(argURL string) (string, string, plumbing.Revision, error) { return "", "", "", errors.New(i18n.Tr("invalid git url")) } // fragment == "1.0.3" - rev := plumbing.Revision(parsedURL.Fragment) + rev := plumbing.ReferenceName(parsedURL.Fragment) // gitURL == "https://github.com/arduino-libraries/SigFox.git" parsedURL.Fragment = "" gitURL := parsedURL.String() From ef4a5f446956dab5e3306364a15c39cc71376e3b Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 7 Feb 2025 15:07:13 +0100 Subject: [PATCH 3/3] Praise linter --- internal/integrationtest/lib/lib_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/integrationtest/lib/lib_test.go b/internal/integrationtest/lib/lib_test.go index ff46fa20c26..15371c80299 100644 --- a/internal/integrationtest/lib/lib_test.go +++ b/internal/integrationtest/lib/lib_test.go @@ -698,7 +698,7 @@ func TestInstallWithGitUrlFragmentAsBranch(t *testing.T) { // https://github.com/arduino-libraries/ArduinoCloud/commit/d098d4647967b3aeb4520e7baf279e4225254dd2 fileToTest, err := libInstallDir.Join("src", "ArduinoCloudThingBase.h").ReadFile() require.NoError(t, err) - require.Contains(t, string(fileToTest), `#define LENGHT_M "meters"`) + require.Contains(t, string(fileToTest), `#define LENGHT_M "meters"`) // nolint:misspell }) } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy