From 7ce1d819a65c30ae6f77801b6ba2de04a9368c85 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Thu, 28 Jan 2021 17:29:57 +0100 Subject: [PATCH] Fix lib install --zip-path not preserving folders structure --- arduino/libraries/librariesmanager/install.go | 12 ++---------- test/test_lib.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/arduino/libraries/librariesmanager/install.go b/arduino/libraries/librariesmanager/install.go index 4e69eb9323f..9132d68099f 100644 --- a/arduino/libraries/librariesmanager/install.go +++ b/arduino/libraries/librariesmanager/install.go @@ -144,16 +144,8 @@ func (lm *LibrariesManager) InstallZipLib(ctx context.Context, archivePath strin WithField("zip file", archivePath). Trace("Installing library") - files, err := tmpDir.Join(libraryName).ReadDirRecursive() - files.FilterOutDirs() - for _, f := range files { - finalPath := installPath.Join(f.Base()) - if err := finalPath.Parent().MkdirAll(); err != nil { - return fmt.Errorf("creating directory: %w", err) - } - if err := f.CopyTo(finalPath); err != nil { - return fmt.Errorf("copying library: %w", err) - } + if err := tmpDir.Join(libraryName).CopyDirTo(installPath); err != nil { + return fmt.Errorf("copying library: %w", err) } return nil diff --git a/test/test_lib.py b/test/test_lib.py index 77e03cd13c5..f5660efec7f 100644 --- a/test/test_lib.py +++ b/test/test_lib.py @@ -297,12 +297,26 @@ def test_install_with_zip_path(run_command, data_dir, downloads_dir): # Verifies library is installed in expected path assert lib_install_dir.exists() + files = list(lib_install_dir.glob("**/*")) + assert lib_install_dir / "examples" / "SimpleAudioPlayerZero" / "SimpleAudioPlayerZero.ino" in files + assert lib_install_dir / "src" / "AudioZero.h" in files + assert lib_install_dir / "src" / "AudioZero.cpp" in files + assert lib_install_dir / "keywords.txt" in files + assert lib_install_dir / "library.properties" in files + assert lib_install_dir / "README.adoc" in files # Reinstall library assert run_command(f"lib install --zip-path {zip_path}") # Verifies library remains installed assert lib_install_dir.exists() + files = list(lib_install_dir.glob("**/*")) + assert lib_install_dir / "examples" / "SimpleAudioPlayerZero" / "SimpleAudioPlayerZero.ino" in files + assert lib_install_dir / "src" / "AudioZero.h" in files + assert lib_install_dir / "src" / "AudioZero.cpp" in files + assert lib_install_dir / "keywords.txt" in files + assert lib_install_dir / "library.properties" in files + assert lib_install_dir / "README.adoc" in files def test_update_index(run_command):