From ccecc402ba90b6c03af79ca4f964b74e0f54e750 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 9 Aug 2022 15:04:28 +0200 Subject: [PATCH 1/4] testsuite: added functions to setup arduino-cli integration tests --- internal/integrationtest/arduino-cli.go | 25 +++++++++++++++++++ .../integrationtest/core/core_list_test.go | 9 +------ internal/integrationtest/core/core_test.go | 8 +----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/internal/integrationtest/arduino-cli.go b/internal/integrationtest/arduino-cli.go index e1ad8f29487..157d2f25a49 100644 --- a/internal/integrationtest/arduino-cli.go +++ b/internal/integrationtest/arduino-cli.go @@ -23,6 +23,7 @@ import ( "os" "strings" "sync" + "testing" "time" "github.com/arduino/arduino-cli/executils" @@ -34,6 +35,30 @@ import ( "google.golang.org/grpc" ) +// FindRepositoryRootPath returns the repository root path +func FindRepositoryRootPath(t *testing.T) *paths.Path { + repoRootPath := paths.New(".") + require.NoError(t, repoRootPath.ToAbs()) + for !repoRootPath.Join(".git").Exist() { + require.Contains(t, repoRootPath.String(), "arduino-cli", "Error searching for repository root path") + repoRootPath = repoRootPath.Parent() + } + return repoRootPath +} + +// CreateArduinoCLIWithEnvironment performs the minimum amount of actions +// to build the default test environment. +func CreateArduinoCLIWithEnvironment(t *testing.T) (*testsuite.Environment, *ArduinoCLI) { + env := testsuite.NewEnvironment(t) + + cli := NewArduinoCliWithinEnvironment(env, &ArduinoCLIConfig{ + ArduinoCLIPath: FindRepositoryRootPath(t).Join("arduino-cli"), + UseSharedStagingFolder: true, + }) + + return env, cli +} + // ArduinoCLI is an Arduino CLI client. type ArduinoCLI struct { path *paths.Path diff --git a/internal/integrationtest/core/core_list_test.go b/internal/integrationtest/core/core_list_test.go index ac767d22011..eed392aaef4 100644 --- a/internal/integrationtest/core/core_list_test.go +++ b/internal/integrationtest/core/core_list_test.go @@ -21,21 +21,14 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "go.bug.st/testsuite" "go.bug.st/testsuite/requirejson" ) func TestCorrectHandlingOfPlatformVersionProperty(t *testing.T) { // See: https://github.com/arduino/arduino-cli/issues/1823 - - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // Copy test platform testPlatform := paths.New("testdata", "issue_1823", "DxCore-dev") require.NoError(t, testPlatform.CopyDirTo(cli.SketchbookDir().Join("hardware", "DxCore-dev"))) diff --git a/internal/integrationtest/core/core_test.go b/internal/integrationtest/core/core_test.go index 090793b7bdd..e85b120be96 100644 --- a/internal/integrationtest/core/core_test.go +++ b/internal/integrationtest/core/core_test.go @@ -23,19 +23,13 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "go.bug.st/testsuite" "go.bug.st/testsuite/requirejson" ) func TestCoreSearch(t *testing.T) { - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // Set up an http server to serve our custom index file test_index := paths.New("..", "testdata", "test_index.json") url := env.HTTPServeFile(8000, test_index) From e379334273fd4bda39a52b52923412a2af84273b Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 9 Aug 2022 21:12:09 +0200 Subject: [PATCH 2/4] Moved 'requiredjson' library in his own package --- arduino/discovery/discovery_client/go.sum | 3 ++- client_example/go.sum | 3 ++- docsgen/go.sum | 3 ++- go.mod | 5 ++++- go.sum | 6 ++++-- internal/integrationtest/core/core_list_test.go | 2 +- internal/integrationtest/core/core_test.go | 2 +- 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/arduino/discovery/discovery_client/go.sum b/arduino/discovery/discovery_client/go.sum index 9368868ab9a..52b9cb5ea4f 100644 --- a/arduino/discovery/discovery_client/go.sum +++ b/arduino/discovery/discovery_client/go.sum @@ -314,7 +314,8 @@ go.bug.st/downloader/v2 v2.1.1/go.mod h1:VZW2V1iGKV8rJL2ZEGIDzzBeKowYv34AedJz13R go.bug.st/relaxed-semver v0.9.0/go.mod h1:ug0/W/RPYUjliE70Ghxg77RDHmPxqpo7SHV16ijss7Q= go.bug.st/serial v1.3.2/go.mod h1:jDkjqASf/qSjmaOxHSHljwUQ6eHo/ZX/bxJLQqSlvZg= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45/go.mod h1:dRSl/CVCTf56CkXgJMDOdSwNfo2g1orOGE/gBGdvjZw= -go.bug.st/testsuite v0.0.1/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= +go.bug.st/testifyjson v1.0.0/go.mod h1:nZyy2icFbv3OE3zW3mGVOnC/GhWgb93LRu+29n2tJlI= +go.bug.st/testsuite v0.1.0/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= diff --git a/client_example/go.sum b/client_example/go.sum index eb7d580b185..49f5b716440 100644 --- a/client_example/go.sum +++ b/client_example/go.sum @@ -296,7 +296,8 @@ go.bug.st/downloader/v2 v2.1.1/go.mod h1:VZW2V1iGKV8rJL2ZEGIDzzBeKowYv34AedJz13R go.bug.st/relaxed-semver v0.9.0/go.mod h1:ug0/W/RPYUjliE70Ghxg77RDHmPxqpo7SHV16ijss7Q= go.bug.st/serial v1.3.2/go.mod h1:jDkjqASf/qSjmaOxHSHljwUQ6eHo/ZX/bxJLQqSlvZg= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45/go.mod h1:dRSl/CVCTf56CkXgJMDOdSwNfo2g1orOGE/gBGdvjZw= -go.bug.st/testsuite v0.0.1/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= +go.bug.st/testifyjson v1.0.0/go.mod h1:nZyy2icFbv3OE3zW3mGVOnC/GhWgb93LRu+29n2tJlI= +go.bug.st/testsuite v0.1.0/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= diff --git a/docsgen/go.sum b/docsgen/go.sum index 5a115fd1b8c..de8994f09ca 100644 --- a/docsgen/go.sum +++ b/docsgen/go.sum @@ -372,7 +372,8 @@ go.bug.st/serial v1.3.2 h1:6BFZZd/wngoL5PPYYTrFUounF54SIkykHpT98eq6zvk= go.bug.st/serial v1.3.2/go.mod h1:jDkjqASf/qSjmaOxHSHljwUQ6eHo/ZX/bxJLQqSlvZg= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45 h1:mACY1anK6HNCZtm/DK2Rf2ZPHggVqeB0+7rY9Gl6wyI= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45/go.mod h1:dRSl/CVCTf56CkXgJMDOdSwNfo2g1orOGE/gBGdvjZw= -go.bug.st/testsuite v0.0.1/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= +go.bug.st/testifyjson v1.0.0/go.mod h1:nZyy2icFbv3OE3zW3mGVOnC/GhWgb93LRu+29n2tJlI= +go.bug.st/testsuite v0.1.0/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= diff --git a/go.mod b/go.mod index 305d9f33131..65dcfdac366 100644 --- a/go.mod +++ b/go.mod @@ -57,7 +57,10 @@ require ( gopkg.in/yaml.v2 v2.4.0 ) -require go.bug.st/testsuite v0.0.1 +require ( + go.bug.st/testifyjson v1.0.0 + go.bug.st/testsuite v0.1.0 +) require ( github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect diff --git a/go.sum b/go.sum index d4ba7f0c551..48ea0d4d3c3 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,10 @@ go.bug.st/serial v1.3.2 h1:6BFZZd/wngoL5PPYYTrFUounF54SIkykHpT98eq6zvk= go.bug.st/serial v1.3.2/go.mod h1:jDkjqASf/qSjmaOxHSHljwUQ6eHo/ZX/bxJLQqSlvZg= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45 h1:mACY1anK6HNCZtm/DK2Rf2ZPHggVqeB0+7rY9Gl6wyI= go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45/go.mod h1:dRSl/CVCTf56CkXgJMDOdSwNfo2g1orOGE/gBGdvjZw= -go.bug.st/testsuite v0.0.1 h1:sdB+u46r+9ZVqROU1fl5utU773HktWDSc4hz6/jPK6A= -go.bug.st/testsuite v0.0.1/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= +go.bug.st/testifyjson v1.0.0 h1:eO7y5Qwziia+vyiaMFlnm5D40NMtkd7quSB7lJtcrjw= +go.bug.st/testifyjson v1.0.0/go.mod h1:nZyy2icFbv3OE3zW3mGVOnC/GhWgb93LRu+29n2tJlI= +go.bug.st/testsuite v0.1.0 h1:oX4zdIB62+G5A0Kq4dja7Vy8tDiKqKVhhxkzhpMGgog= +go.bug.st/testsuite v0.1.0/go.mod h1:xCIDf97kf9USoz960Foy3CoquwhQmfuFRNh9git70as= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= diff --git a/internal/integrationtest/core/core_list_test.go b/internal/integrationtest/core/core_list_test.go index eed392aaef4..516d9d2133b 100644 --- a/internal/integrationtest/core/core_list_test.go +++ b/internal/integrationtest/core/core_list_test.go @@ -21,7 +21,7 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "go.bug.st/testsuite/requirejson" + "go.bug.st/testifyjson/requirejson" ) func TestCorrectHandlingOfPlatformVersionProperty(t *testing.T) { diff --git a/internal/integrationtest/core/core_test.go b/internal/integrationtest/core/core_test.go index e85b120be96..c110a125760 100644 --- a/internal/integrationtest/core/core_test.go +++ b/internal/integrationtest/core/core_test.go @@ -23,7 +23,7 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "go.bug.st/testsuite/requirejson" + "go.bug.st/testifyjson/requirejson" ) func TestCoreSearch(t *testing.T) { From 6c846b8451c4df24efc101a22019e59d94aeae04 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Fri, 26 Aug 2022 15:41:33 +0200 Subject: [PATCH 3/4] Modified tests in cache_test.go to use the new arduino-cli setup --- internal/integrationtest/cache/cache_test.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/internal/integrationtest/cache/cache_test.go b/internal/integrationtest/cache/cache_test.go index 8c45123115a..9a24ce2dab0 100644 --- a/internal/integrationtest/cache/cache_test.go +++ b/internal/integrationtest/cache/cache_test.go @@ -19,22 +19,14 @@ import ( "testing" "github.com/arduino/arduino-cli/internal/integrationtest" - "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "go.bug.st/testsuite" ) func TestCacheClean(t *testing.T) { // Clean the cache under arduino caching file directory which is "/staging" - - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - _, _, err := cli.Run("cache", "clean") require.NoError(t, err) From d39a09daed771dd8b8a46d89ce42caab27f347bd Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Fri, 26 Aug 2022 16:49:18 +0200 Subject: [PATCH 4/4] Modified tests in main_test.go to use the new arduino-cli setup --- internal/integrationtest/main/main_test.go | 32 ++++------------------ 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/internal/integrationtest/main/main_test.go b/internal/integrationtest/main/main_test.go index 940118410ff..376501924dc 100644 --- a/internal/integrationtest/main/main_test.go +++ b/internal/integrationtest/main/main_test.go @@ -21,22 +21,15 @@ import ( "testing" "github.com/arduino/arduino-cli/internal/integrationtest" - "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" semver "go.bug.st/relaxed-semver" - "go.bug.st/testsuite" - "go.bug.st/testsuite/requirejson" + "go.bug.st/testifyjson/requirejson" ) func TestHelp(t *testing.T) { - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // Run help and check the output message stdout, stderr, err := cli.Run("help") require.NoError(t, err) @@ -45,14 +38,9 @@ func TestHelp(t *testing.T) { } func TestVersion(t *testing.T) { - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // Run version and check the output message stdout, stderr, err := cli.Run("version") require.NoError(t, err) @@ -87,14 +75,9 @@ func TestVersion(t *testing.T) { func TestLogOptions(t *testing.T) { // Using version as a test command - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // No logs stdout, _, err := cli.Run("version") require.NoError(t, err) @@ -143,14 +126,9 @@ func TestLogOptions(t *testing.T) { func TestInventoryCreation(t *testing.T) { // Using version as a test command - env := testsuite.NewEnvironment(t) + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{ - ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"), - UseSharedStagingFolder: true, - }) - // no logs stdout, _, err := cli.Run("version") require.NoError(t, err)