1. 04 Nov, 2022 2 commits
    • MatteoPologruto's avatar
      [skip-changelog] Run integration tests concurrently (#1953) · e53d2f5c
      MatteoPologruto authored
      * Run integration tests concurrently
      
      This enhancement reduces the amount of time needed to execute integration tests, since each test package no longer has to wait for the previous ones to be completed. In order to do this, a regex is used
      to match each test file. It is also specified the path to the directory that contains the file.
      
      * Merge all test files that share a package into one
      
      Having different test files that shared the same package was inefficient, because the whole package test was run one time for each file. This enhancement avoids repeating the same tests more than once.
      e53d2f5c
    • Cristian Maglie's avatar
      Added libraries `.development` flag detection (#1962) · ec3e71ca
      Cristian Maglie authored
      * Added in_development flag in Library gRPC message
      
      * Small cosmetic fix in docs
      
      * Implemented 'in_development' flag in libraries loader
      
      * Added unit-test
      ec3e71ca
  2. 31 Oct, 2022 1 commit
    • per1234's avatar
      [skip changelog] Document filter setting capability of Library/Boards Manager links (#1958) · 4dcf0da6
      per1234 authored
      Arduino IDE allows opening searches in Library Manager and Boards Manager by clicking a link with a special format in a
      comment of the sketch.
      
      During the initial implementation in Arduino IDE 1.x, support for setting the "Type" filter via the URI in addition to
      specifying search keywords was attempted and claimed to work, but never did work. For this reason, it was not previously
      mentioned in the sketch specification.
      
      During the reimplementation of the Library/Boards Manager link feature for Arduino IDE 2.x, the "Type" filter setting
      capability was finally truly implemented, and expanded to also support setting the "Topic" filter in Library Manager via
      the same mechanism.
      
      Now that support for the filter setting capability has been released in Arduino IDE 2.0.1, it should be documented in
      the sketch specification.
      4dcf0da6
  3. 28 Oct, 2022 2 commits
  4. 25 Oct, 2022 1 commit
    • Silvano Cerza's avatar
      Add task to collect proto files and add steps to release them with tester,... · 13f22553
      Silvano Cerza authored
      Add task to collect proto files and add steps to release them with tester, nightly and stable builds (#1931)
      
      * Add task to zip all .proto files for release
      
      * Add proto files in nightly released files
      
      * Add proto files in tester released files
      
      * Add proto files in stable released files
      
      * Fix tester build workflow
      
      * Fix checksums.txt creation in tester and stable build releases
      
      * Change build job of tester build workflow to be generic
      
      * Fix Publish Tester Build job dependencies
      13f22553
  5. 24 Oct, 2022 5 commits
  6. 21 Oct, 2022 5 commits
  7. 20 Oct, 2022 1 commit
  8. 18 Oct, 2022 4 commits
  9. 17 Oct, 2022 1 commit
    • Umberto Baldi's avatar
      Add windows `.msi` installer to the CI (#1899) · ea43a9c6
      Umberto Baldi authored
      * add step to generate a windows msi installer of the Arduino CLI
      
      * remove warning:
      
      `warning : Solution properties are only available during IDE builds or when building the solution file from the command line. To turn off this warning set <DefineSolutionProperties>false</DefineSolutionProperties> in your .wixproj`
      
      * fix error caused by wix peculiar version constraints:
      
      `error CNDL0108: The Product/@Version attribute's value, '0.0.0-test', is not a valid version.  Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534.`
      
      * fix `error LGHT0103: The system cannot find the file 'arduino-cli.exe'`
      
      * final adjustments in wix config
      
      * exclude prettier from checking the installer config files, prettier does not support xml out of the box
      
      * add download links
      
      * temporarily disable s3 push and homebrew update for testing
      
      * Upload nightly artifacts for testing
      
      * add windows check certs
      
      * bump to latest windows-sdk and document better
      
      specify timestamp algorithm. Apparently this is required in the latest version of the sdk
      
      * remove useless job id not used anymore (followup of #1883)
      
      * fixed comments
      
      * It's useless to use the output from setupmsbuild
      
      * use YAML-style syntax
      
      * try to uniform the usage of version/tag across the workflow
      
      * Revert "Upload nightly artifacts for testing" && "temporarily disable s3 push and homebrew update for testing"
      
      This reverts commit 3123dfd8ea0b2fa4d2fd33aa4ccd5696f34355d2.
      This reverts commit 24fa25ca65be2d8f149729f3c169479e1848fa51.
      
      * Apply suggestions from code review
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      ea43a9c6
  10. 14 Oct, 2022 1 commit
  11. 13 Oct, 2022 2 commits
  12. 12 Oct, 2022 2 commits
  13. 11 Oct, 2022 2 commits
    • per1234's avatar
      [skip changelog] Move upload of coverage data to dedicated job in test workflow (#1915) · 08d746dd
      per1234 authored
      * Move upload of coverage data to dedicated job in test workflow
      
      The code coverage data generated by running the unit tests in the "Test Go" GitHub Actions workflow is uploaded to
      Codecov.
      
      This upload is prone to occasional transient failures. With the previous workflow configuration this caused a failure of
      the Linux test run job. Contributors would need to review the logs to understand that these failures were not caused by
      a test failing. The failure also causes the ongoing jobs that run the tests on other operating systems to be immediately
      canceled, meaning their full test results are not available. The entire test suite must be reran just to attempt the
      upload again.
      
      Moving the upload to a dedicated workflow job makes it faster and easier for contributors to interpret the cause of a
      test failure. It also allows the test suite to complete for all operating systems, making their results immediately
      available to the contributor even when the coverage data upload fails. The coverage upload job can be reran, making
      recovery from a transient failure more efficient.
      
      * Use a single step to upload coverage data in "Test Go" workflow
      
      The code coverage data generated by running the unit tests in the "Test Go" GitHub Actions workflow is uploaded to
      Codecov. Arduino CLI's unit tests are split into two collections: those covering the modernized part of the codebase,
      and those covering the "legacy" code inherited from arduino-builder. A separate code coverage data file is produced for
      each of these collections.
      
      The `codecov/codecov-action` GitHub Actions action is used to perform this upload. Previously, a separate step was used
      for the upload of each of the code coverage files. The action provides the capability to specify multiple files for
      upload in a comma-separated list. This approach will make the workflow more efficient and reliable.
      08d746dd
    • MatteoPologruto's avatar
      [skip-changelog] Migrate tests from `test_board.py` to `board_test.go` (#1847) · fb9d4a8e
      MatteoPologruto authored
      * Migrated TestBoardList from test_board.py to board_test.go
      
      * Migrated TestBoardListWithInvalidDiscovery from test_board.py to board_test.go
      
      * Migrated TestBoardListall from test_board.py to board_test.go
      
      * Migrated TestBoardListallWithManuallyInstalledPlatform from test_board.py to board_test.go
      
      * Migrated TestBoardDetails from test_board.py to board_test.go
      
      * Migrated TestBoardDetailsNoFlags from test_board.py to board_test.go
      
      * Migrated TestBoardDetailsListProgrammersWithoutFlags from test_board.py to board_test.go
      
      * Migrated TestBoardDetailsListProgrammersFlags from test_board.py to board_test.go
      
      * Migrated TestBoardSearch from test_board.py to board_test.go
      
      * Migrated TestBoardAttachWithoutSketchJson from test_board.py to board_test.go
      
      * Migrated TestBoardSearchWithOutdatedCore to board_test.go and deleted test_board.py
      fb9d4a8e
  14. 10 Oct, 2022 3 commits
    • per1234's avatar
      [skip changelog] Disable "fail fast" feature in "Test Go" workflow (#1914) · 0a9b81aa
      per1234 authored
      To ensure functionality on all platforms, the "Test Go" GitHub Actions workflow runs the tests on Windows, Linux, and
      macOS. This is done via a "job matrix", which runs the three jobs in parallel.
      
      By default GitHub Actions uses a "fail fast" behavior for job matrixes, where all in progress or pending jobs of the
      matrix are immediately canceled upon failure of any job.
      
      The benefit of this "fail fast" behavior is efficiency in the case where a failure is universal and those other jobs
      were certain to eventually fail. However, in other cases a failure is either specific to the configuration of a single
      job (e.g., a Windows-specific bug), or a spurious result of a transient network outage. In the latter case, canceling
      the other jobs is very harmful. Running the jobs for the other operating systems would highlight the nature of an
      OS-specific failure for the contributor. Canceling other jobs due to a transient failure means all those jobs must be
      reran instead of only the specific job that suffered the failure.
      
      The workflow is hereby configured to disable the "fail fast" behavior. All the matrix jobs will now run even if one of
      them has failed.
      0a9b81aa
    • Cristian Maglie's avatar
      [skip-changelog] Reuse already installed platforms to speed up integration tests (#1913) · 04cbdffa
      Cristian Maglie authored
      * Factor all compile_part_1 and 2 test setup
      
      * Made an object to simplify running of subtests
      
      * Moved all subtests in the same file
      
      Just moved functions around, no code change.
      
      * Reuse installed platform to speedup debug integration tests
      04cbdffa
    • Cristian Maglie's avatar
      [skip-changelog] Some integration test refactorings (#1911) · 063f4f86
      Cristian Maglie authored
      * Integrated 'go.bug.st/testsuite'
      
      It doesn't make much sense to keep it separate in a different library
      
      * Do not use shared download dir for 'cache clean' command tests
      
      * Added method to get cli download dir
      
      * Create infra for sharing directories between tests
      
      * Slighlty improved test output
      
      * Non-parallel testing is no longer required
      
      * Add more time to complete tests
      
      * Update internal/integrationtest/cache/cache_test.go
      Co-authored-by: default avatarMatteoPologruto <109663225+MatteoPologruto@users.noreply.github.com>
      Co-authored-by: default avatarMatteoPologruto <109663225+MatteoPologruto@users.noreply.github.com>
      063f4f86
  15. 07 Oct, 2022 2 commits
    • MatteoPologruto's avatar
      [skip-changelog] Migrate tests from `test_config.py` to `config_test.go` (#1898) · 0e0b615d
      MatteoPologruto authored
      * Migrate TestInit from test_config.py to config_test.go
      
      * Migrate TestInitWithExistingCustomConfig from test_config.py to config_test.go
      
      * Migrate TestInitOverwriteExistingCustomFile from test_config.py to config_test.go
      
      * Migrate TestInitDestAbsolutePath from test_config.py to config_test.go
      
      * Migrate TestInitDestRelativePath from test_config.py to config_test.go
      
      * Migrate TestInitDestFlagWithOverwriteFlag from test_config.py to config_test.go
      
      * Migrate TestInitDestAndConfigFileFlags from test_config.py to config_test.go
      
      * Migrate TestInitConfigFileFlagAbsolutePath from test_config.py to config_test.go
      
      * Migrate TestInitConfigFileFlagWithOverwriteFlag from test_config.py to config_test.go
      
      * Migrate TestDump from test_config.py to config_test.go
      
      * Migrate TestDumpWithConfigFileFlag from test_config.py to config_test.go
      
      * Migrate TestInitConfigFileFlagRelativePath from test_config.py to config_test.go
      
      * Migrate TestAddRemoveSetDeleteOnUnexistingKey from test_config.py to config_test.go
      
      * Migrate TestAddSingleArgument from test_config.py to config_test.go
      
      * Migrate TestAddMultipleArguments from test_config.py to config_test.go
      
      * Migrate TestAddOnUnsupportedKey from test_config.py to config_test.go
      
      * Migrate TestRemoveSingleArgument from test_config.py to config_test.go
      
      * Migrate TestRemoveMultipleArguments from test_config.py to config_test.go
      
      * Migrate TestRemoveOnUnsupportedKey from test_config.py to config_test.go
      
      * Migrate TestSetSliceWithSingleArgument from test_config.py to config_test.go
      
      * Migrate TestSetSliceWithMultipleArguments from test_config.py to config_test.go
      
      * Migrate TestSetStringWithSingleArgument from test_config.py to config_test.go
      
      * Migrate TestSetStringWithMultipleArguments from test_config.py to config_test.go
      
      * Migrate TestSetBoolWithSingleArgument from test_config.py to config_test.go
      
      * Migrate TestSetBoolWithMultipleArguments from test_config.py to config_test.go
      
      * Migrate TestDelete to config_test.go and delete config_test.py
      0e0b615d
    • MatteoPologruto's avatar
      [skip-changelog] Migrate tests from `test_compile_part_2.py` to `compile_part_2_test.go` (#1897) · 2480d93a
      MatteoPologruto authored
      * Migrate TestCompileWithOutputDirFlag from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithExportBinariesFlag from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithCustomBuildPath from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithInvalidUrl from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithExportBinariesEnvVar from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithExportBinariesConfig from test_compile_part_2.py
      to compile_part_2_test.go
      
      * Migrate TestCompileWithCustomLibraries from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithArchivesAndLongPaths from test_compile_part_2.py to compile_part_2_test.go
      
      * Migrate TestCompileWithPrecompileLibrary to compile_part_2_test.go and delete test_compile_part_2.py
      
      * Increase lapse before timeout by 5 minutes
      2480d93a
  16. 06 Oct, 2022 1 commit
  17. 05 Oct, 2022 2 commits
  18. 04 Oct, 2022 3 commits
    • Cristian Maglie's avatar
      [breaking] Removed `real_name` field from gRPC Library message and JSON responses (#1890) · bcb69d99
      Cristian Maglie authored
      * Removed real_name field from gRPC Library message
      
      * Update docs/UPGRADING.md
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      bcb69d99
    • Cristian Maglie's avatar
      Made `core search` results more similar to Arduino IDE 1.8.x search dialog (#1904) · 1021e76f
      Cristian Maglie authored
      * Factored function to get search terms
      
      * Made 'core search' logic identical to Arduino IDE 1.8.x search dialog
      
      * Drastically simplified search algorithm for libs
      
      * Fixed SearchTermsFromQueryString function
      
      * Moving SearchTermsFromQueryString into proper place
      1021e76f
    • per1234's avatar
      [skip changelog] Use appropriate name for field that stores library folder name (#1900) · ce7b0620
      per1234 authored
      Each Arduino library has a name, which is used as its sole identifier by the user in `arduino-cli lib` commands, and by
      Arduino CLI when referring to the library in messages displayed to the user.
      
      The name is defined by:
      
      - "1.5 format" libraries: `name` field in the library.properties metadata file
      - "1.0 format" (AKA "legacy") libraries: installation folder name
      
      The name is resolved when loading the library and stored in the `Name` field of the
      `github.com/arduino/arduino-cli/arduino/libraries.Library` struct.
      
      The name of the library's installation folder is used by Arduino CLI in several other ways, most notably for determining
      "folder name priority" for use in library dependency resolution. For this reason, the folder name is also stored in the
      struct when loading the library.
      
      Arduino CLI and arduino-builder have been plagued by problems caused by the inappropriate use of this folder name as the
      identifier for the library instead of the sole correct identifier (which is only the folder name in the case of
      "1.0 format" libraries. The design of the `github.com/arduino/arduino-cli/arduino/libraries.Library` struct may have
      been a contributing factor in those bugs, since at the time of their occurrence the folder name was stored in the `Name`
      field, the metadata-defined name in a `RealName`. In addition to the fact that no one field could be used as a source of
      the name in all cases, I suspect the ambiguous field names themselves caused confusion to developers.
      
      This situation was improved by providing the library identifier via a single field for all library formats. The name
      provided by this field is the "canonical" name of the library. Inexplicably, at that time the field containing the
      folder name was renamed "CanonicalName". The string contained by this field is in no way a "canonical" name for the
      library, so the field name is bound to cause more of the same bugs and confusion the redesign of the struct was intended
      to prevent.
      
      The inappropriately named `github.com/arduino/arduino-cli/arduino/libraries.Library.CanonicalName` field is hereby
      renamed to the accurate `DirName`.
      ce7b0620