Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add setup command tests for Gradle #2848

Merged
merged 84 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
7e2db95
Improve repositores code
sverdlov93 Oct 13, 2024
b3b2401
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Oct 13, 2024
80a94c7
Improve repositores code
sverdlov93 Oct 13, 2024
9c7a467
Improve repositores code
sverdlov93 Oct 13, 2024
2d7a90c
Improve repositores code
sverdlov93 Oct 13, 2024
faa0521
Improve repositores code
sverdlov93 Oct 13, 2024
ee1c68d
Improve repositores code
sverdlov93 Oct 13, 2024
eb35483
Improve repositores code
sverdlov93 Oct 13, 2024
f3a4155
Improve repositores code
sverdlov93 Oct 13, 2024
fc3baac
Improve repositores code
sverdlov93 Oct 13, 2024
2af5a7b
Improve repositores code
sverdlov93 Oct 13, 2024
51d4f2d
Improve repositores code
sverdlov93 Oct 13, 2024
581e2ec
Improve repositores code
sverdlov93 Oct 13, 2024
c8e8ede
Improve repositores code
sverdlov93 Oct 25, 2024
8ad1862
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Oct 25, 2024
0f89b37
Improve repositores code
sverdlov93 Oct 25, 2024
780cfb1
Improve repositores code
sverdlov93 Oct 25, 2024
b55d9f8
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Oct 29, 2024
98cb97a
Improve repositores code
sverdlov93 Nov 3, 2024
67903cd
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Nov 7, 2024
72c6dd7
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Nov 19, 2024
20e2f2c
Improve upload archive progress bar
sverdlov93 Nov 20, 2024
b9c1bfc
Improve upload archive progress bar
sverdlov93 Nov 20, 2024
b0b118a
Improve upload archive progress bar
sverdlov93 Nov 20, 2024
f4caa49
Improve upload archive progress bar
sverdlov93 Nov 21, 2024
1035da0
Improve upload archive progress bar
sverdlov93 Nov 21, 2024
bf1d39b
Merge branch 'dev' into npm-login
sverdlov93 Nov 21, 2024
21f263f
Improve upload archive progress bar
sverdlov93 Nov 21, 2024
11e828e
Merge remote-tracking branch 'sverdlov93/npm-login' into npm-login
sverdlov93 Nov 21, 2024
7b84fd8
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Dec 11, 2024
ab6d11b
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Dec 24, 2024
c2c2298
Improve upload archive progress bar
sverdlov93 Jan 6, 2025
5e4eaf9
Improve upload archive progress bar
sverdlov93 Jan 6, 2025
662d621
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Jan 6, 2025
3e7585d
Improve upload archive progress bar
sverdlov93 Jan 6, 2025
b7312fd
Improve upload archive progress bar
sverdlov93 Jan 6, 2025
7c4bd5e
Improve upload archive progress bar
sverdlov93 Jan 7, 2025
83787fc
Update docs/buildtools/setup/help.go
sverdlov93 Jan 8, 2025
d0ea1ba
Update buildtools/cli.go
sverdlov93 Jan 8, 2025
f3bb7e4
Update buildtools/cli.go
sverdlov93 Jan 8, 2025
651147c
Update buildtools/cli.go
sverdlov93 Jan 8, 2025
8b3633b
Update buildtools/cli.go
sverdlov93 Jan 8, 2025
058c344
Update utils/cliutils/commandsflags.go
sverdlov93 Jan 8, 2025
4ee0af5
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
71d8654
Merge branch 'npm-login' of https://github.com/sverdlov93/jfrog-cli i…
sverdlov93 Jan 8, 2025
3fbc14f
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Jan 8, 2025
17bda08
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
1af6c2b
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
5a82768
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
8c1d1a3
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
d1ae1d1
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
5d54f3f
Improve upload archive progress bar
sverdlov93 Jan 8, 2025
25975fa
Improve upload archive progress bar
sverdlov93 Jan 9, 2025
6d09d6d
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Jan 9, 2025
6b5f58a
Improve upload archive progress bar
sverdlov93 Jan 9, 2025
169433d
Improve upload archive progress bar
sverdlov93 Jan 22, 2025
3ec8cdf
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
68812e0
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
baa2fcc
Merge branch 'dev' of https://github.com/jfrog/jfrog-cli into npm-login
sverdlov93 Jan 27, 2025
40428f9
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
28ab3b3
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
5b34971
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
06587dc
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
380a4cf
Improve upload archive progress bar
sverdlov93 Jan 27, 2025
b515f88
Improve upload archive progress bar
sverdlov93 Jan 28, 2025
31809c9
Improve upload archive progress bar
sverdlov93 Jan 28, 2025
eb7145e
Improve upload archive progress bar
sverdlov93 Jan 28, 2025
14880fa
Update dependencies
omerzi Jan 28, 2025
b05b3eb
Update dependencies
omerzi Jan 28, 2025
6a8a03b
Update dependencies
omerzi Jan 28, 2025
fc239bc
Update dependencies
omerzi Jan 28, 2025
8f782d4
Update dependencies
omerzi Jan 28, 2025
3fd319f
Update dependencies
omerzi Jan 28, 2025
0caa3f9
Merge branch 'dev' into setup-gradle
omerzi Jan 29, 2025
8044326
Update dependencies
omerzi Jan 29, 2025
2b9f03f
Merge remote-tracking branch 'origin/setup-gradle' into setup-gradle
omerzi Jan 29, 2025
d4a8578
Merge remote-tracking branch 'upstream/dev' into setup-gradle
omerzi Feb 2, 2025
e1ed7b0
Update dependencies
omerzi Feb 2, 2025
888e36f
Update dependencies
omerzi Feb 2, 2025
6cca6b8
Update dependencies
omerzi Feb 2, 2025
3de950e
Update dependencies
omerzi Feb 2, 2025
2d7951b
Update dependencies
omerzi Feb 2, 2025
46132a5
Update dependencies
omerzi Feb 2, 2025
4da2591
Merge branch 'dev' into setup-gradle
omerzi Feb 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 72 additions & 1 deletion buildtools/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package buildtools
import (
"errors"
"fmt"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/setup"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/v2/utils/ioutils"
"github.com/jfrog/jfrog-cli-security/utils/techutils"
setupdocs "github.com/jfrog/jfrog-cli/docs/buildtools/setup"
"os"
"strconv"
"strings"
Expand Down Expand Up @@ -65,11 +69,21 @@ import (
)

const (
buildToolsCategory = "Build Tools"
buildToolsCategory = "Package Managers:"
)

func GetCommands() []cli.Command {
return cliutils.GetSortedCommands(cli.CommandsByName{
{
Name: "setup",
Flags: cliutils.GetCommandFlags(cliutils.Setup),
Usage: setupdocs.GetDescription(),
HelpName: corecommon.CreateUsage("setup", setupdocs.GetDescription(), setupdocs.Usage),
ArgsUsage: common.CreateEnvVars(),
UsageText: setupdocs.GetArguments(),
BashComplete: corecommon.CreateBashCompletionFunc(setup.GetSupportedPackageManagersList()...),
Action: setupCmd,
},
{
Name: "mvn-config",
Aliases: []string{"mvnc"},
Expand Down Expand Up @@ -929,6 +943,63 @@ func NpmPublishCmd(c *cli.Context) (err error) {
return
}

func setupCmd(c *cli.Context) (err error) {
if c.NArg() > 1 {
return cliutils.WrongNumberOfArgumentsHandler(c)
}
var packageManager project.ProjectType
packageManagerStr := c.Args().Get(0)
// If the package manager was provided as an argument, validate it.
if packageManagerStr != "" {
packageManager = project.FromString(packageManagerStr)
if !setup.IsSupportedPackageManager(packageManager) {
return cliutils.PrintHelpAndReturnError(fmt.Sprintf("The package manager %s is not supported", packageManagerStr), c)
}
} else {
// If the package manager wasn't provided as an argument, select it interactively.
packageManager, err = selectPackageManagerInteractively()
if err != nil {
return
}
}
setupCmd := setup.NewSetupCommand(packageManager)
artDetails, err := cliutils.CreateArtifactoryDetailsByFlags(c)
if err != nil {
return err
}
repoName := c.String("repo")
if repoName != "" {
// If a repository was provided, validate it exists in Artifactory.
if err = validateRepoExists(repoName, artDetails); err != nil {
return err
}
}
setupCmd.SetServerDetails(artDetails).SetRepoName(repoName).SetProjectKey(cliutils.GetProject(c))
return commands.Exec(setupCmd)
}

// validateRepoExists checks if the specified repository exists in Artifactory.
func validateRepoExists(repoName string, artDetails *coreConfig.ServerDetails) error {
serviceDetails, err := artDetails.CreateArtAuthConfig()
if err != nil {
return err
}
return utils.ValidateRepoExists(repoName, serviceDetails)
}

func selectPackageManagerInteractively() (selectedPackageManager project.ProjectType, err error) {
var selected string
var selectableItems []ioutils.PromptItem
for _, packageManager := range setup.GetSupportedPackageManagersList() {
selectableItems = append(selectableItems, ioutils.PromptItem{Option: packageManager, TargetValue: &selected})
}
err = ioutils.SelectString(selectableItems, "Please select a package manager to set up:", false, func(item ioutils.PromptItem) {
*item.TargetValue = item.Option
selectedPackageManager = project.FromString(*item.TargetValue)
})
return
}

func GetNpmConfigAndArgs(c *cli.Context) (configFilePath string, args []string, err error) {
configFilePath, err = getProjectConfigPathOrThrow(project.Npm, "npm", "npm-config")
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion buildtools/help.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package buildtools

import (
corecommon "github.com/jfrog/jfrog-cli-core/v2/docs/common"
"github.com/jfrog/jfrog-cli/docs/artifactory/npmpublish"
"github.com/jfrog/jfrog-cli/docs/buildtools/dockerpull"
"github.com/jfrog/jfrog-cli/docs/buildtools/dockerpush"
"github.com/jfrog/jfrog-cli/docs/buildtools/npmci"
"github.com/jfrog/jfrog-cli/docs/buildtools/npminstall"
"github.com/jfrog/jfrog-cli/docs/buildtools/npmpublish"
"github.com/jfrog/jfrog-cli/docs/common"
"github.com/jfrog/jfrog-cli/utils/cliutils"
"github.com/urfave/cli"
Expand Down
18 changes: 18 additions & 0 deletions docs/buildtools/setup/help.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package setup

import (
"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/setup"
"strings"
)

var Usage = []string{"setup [command options]",
"setup <package manager> [command options]"}

func GetDescription() string {
return "An interactive command to configure your local package manager (e.g., npm, pip) to work with JFrog Artifactory."
}

func GetArguments() string {
return ` package manager
The package manager to configure. Supported package managers are: ` + strings.Join(setup.GetSupportedPackageManagersList(), ", ") + "."
}
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ require (
github.com/moby/term v0.5.0 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/nwaples/rardecode v1.1.3 // indirect
github.com/onsi/gomega v1.34.2 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/owenrumney/go-sarif/v2 v2.3.0 // indirect
Expand Down Expand Up @@ -159,18 +160,18 @@ require (
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/mod v0.22.0 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/oauth2 v0.20.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/term v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/time v0.7.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/eyalbe4/jfrog-cli-core/v2 v2.31.1-0.20241225194149-cc2e18e68ad8
replace github.com/jfrog/jfrog-cli-core/v2 => github.com/omerzi/jfrog-cli-core/v2 v2.15.3-0.20250128093657-ab9a7269ccbe

// replace github.com/jfrog/jfrog-cli-security => github.com/EyalDelarea/jfrog-cli-security v0.0.0-20241121103043-02719f295f02

Expand Down
15 changes: 8 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,6 @@ github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYL
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
github.com/jfrog/jfrog-cli-artifactory v0.1.11 h1:tYGQpkGZVHwYxApKhMXgY1V25QaLFaTbjsoq0l3Bf4w=
github.com/jfrog/jfrog-cli-artifactory v0.1.11/go.mod h1:rVBTbanRnG9CXyAYRJ2O6h2fJMa+fsGB+3swUB/qEt0=
github.com/jfrog/jfrog-cli-core/v2 v2.57.7 h1:2cZS9C5jBYpyCF4PoUzvGCnwFA7CsvG6jszCj1I3tsg=
github.com/jfrog/jfrog-cli-core/v2 v2.57.7/go.mod h1:ueB6LtU+gW7/hTyfKyka/BHi52oo5lEH46RodTly1PU=
github.com/jfrog/jfrog-cli-platform-services v1.6.0 h1:2fBIDxnQaFWStZqMEUI2I3nkNjDmknxxHcmpeLxtocc=
github.com/jfrog/jfrog-cli-platform-services v1.6.0/go.mod h1:u3lMRG7XC8MeUy/OPkHkZnsgCMIi0br4sjk2/W1Pm8I=
github.com/jfrog/jfrog-cli-security v1.14.1 h1:80Sbml/tzJEsxXj7dERrRRaBz5mlfuB8qBKUdEJ7MtU=
Expand Down Expand Up @@ -256,8 +254,10 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=
github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
github.com/omerzi/jfrog-cli-core/v2 v2.15.3-0.20250128093657-ab9a7269ccbe h1:Pz3/nxiftp6Wcjlsn5pxeyAp4rvFIjty95Hp3PFCkRA=
github.com/omerzi/jfrog-cli-core/v2 v2.15.3-0.20250128093657-ab9a7269ccbe/go.mod h1:ueB6LtU+gW7/hTyfKyka/BHi52oo5lEH46RodTly1PU=
github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
Expand Down Expand Up @@ -436,8 +436,9 @@ golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down Expand Up @@ -499,8 +500,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
Expand Down
39 changes: 39 additions & 0 deletions go_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package main

import (
"fmt"
"github.com/jfrog/jfrog-client-go/http/httpclient"
"net/http"
"os"
"os/exec"
"path/filepath"
Expand Down Expand Up @@ -383,3 +385,40 @@ func cleanGoCache(t *testing.T) {
cmd.Env = append(cmd.Env, "GOPATH="+os.Getenv("GOPATH"))
assert.NoError(t, cmd.Run())
}

func TestSetupGoCommand(t *testing.T) {
if !*tests.TestGo {
t.Skip("Skipping go test. To run go test add the '-test.go=true' option.")
}
_, cleanUpFunc := initGoTest(t)
defer cleanUpFunc()

// Create a Go project
wd, err := os.Getwd()
assert.NoError(t, err)
chdir := clientTestUtils.ChangeDirWithCallback(t, wd, t.TempDir())
defer chdir()
assert.NoError(t, exec.Command("go", "mod", "init", "test-proj").Run())

// Validate that the module does not exist in the cache before running the test.
client, err := httpclient.ClientBuilder().Build()
assert.NoError(t, err)
moduleCacheUrl := serverDetails.ArtifactoryUrl + tests.GoRemoteRepo + "-cache/github.com/shirou/gopsutil/v4/@v/v4.24.12.zip"
_, _, err = client.GetRemoteFileDetails(moduleCacheUrl, artHttpDetails)
assert.ErrorContains(t, err, "404")

jfrogCli := coretests.NewJfrogCli(execMain, "jfrog", "")
// Please notice that we configure the Go virtual repository (that points to the remote repository),
// because go doesn't support resolving directly from remote repertoires. (https://jfrog.com/help/r/jfrog-artifactory-documentation/set-up-remote-go-repositories)
assert.NoError(t, execGo(jfrogCli, "setup", "go", "--repo="+tests.GoVirtualRepo))

err = exec.Command("go", "get", "github.com/shirou/gopsutil/v4").Run()
assert.NoError(t, err)

// Validate that the module exists in the cache after running the test.
// That means that the setup command worked and the 'go get' resolved the module from Artifactory.
_, res, err := client.GetRemoteFileDetails(moduleCacheUrl, artHttpDetails)
if assert.NoError(t, err, "Failed to find the artifact in the cache: "+moduleCacheUrl) {
assert.Equal(t, http.StatusOK, res.StatusCode)
}
}
52 changes: 52 additions & 0 deletions gradle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@ package main

import (
"errors"
"fmt"
"github.com/jfrog/gofrog/io"
coretests "github.com/jfrog/jfrog-cli-core/v2/utils/tests"
"github.com/jfrog/jfrog-client-go/http/httpclient"
"github.com/stretchr/testify/require"
"net/http"
"os"
"os/exec"
"path/filepath"
"strings"
"testing"
Expand Down Expand Up @@ -216,6 +223,34 @@ func TestGradleBuildWithServerIDWithUsesPlugin(t *testing.T) {
cleanGradleTest(t)
}

func TestSetupGradleCommand(t *testing.T) {
restoreFunc := prepareGradleSetupTest(t)
defer restoreFunc()
// Validate that the module does not exist in the cache before running the test.
client, err := httpclient.ClientBuilder().Build()
assert.NoError(t, err)

moduleCacheUrl := serverDetails.ArtifactoryUrl + tests.GradleRemoteRepo + "-cache/com/fasterxml/jackson/core/jackson-core/2.13.2/jackson-core-2.13.2.jar"
omerzi marked this conversation as resolved.
Show resolved Hide resolved
_, _, err = client.GetRemoteFileDetails(moduleCacheUrl, artHttpDetails)
assert.ErrorContains(t, err, "404")

jfrogCli := coretests.NewJfrogCli(execMain, "jfrog", "")
assert.NoError(t, execGo(jfrogCli, "setup", "gradle", "--repo="+tests.GradleRemoteRepo))

// Run `gradle clean` to resolve the artifact from Artifactory and force it to be downloaded.
output, err := exec.Command("gradle",
"clean",
"build",
"--info",
"--refresh-dependencies").CombinedOutput()
assert.NoError(t, err, fmt.Sprintf("%s\n%q", string(output), err))

_, res, err := client.GetRemoteFileDetails(moduleCacheUrl, artHttpDetails)
if assert.NoError(t, err, "Failed to find the artifact in the cache: "+moduleCacheUrl) {
assert.Equal(t, http.StatusOK, res.StatusCode)
}
}

func createGradleProject(t *testing.T, projectName string) string {
srcBuildFile := filepath.Join(filepath.FromSlash(tests.GetTestResourcesPath()), "gradle", projectName, "build.gradle")
buildGradlePath, err := tests.ReplaceTemplateVariables(srcBuildFile, "")
Expand All @@ -227,9 +262,26 @@ func createGradleProject(t *testing.T, projectName string) string {

return buildGradlePath
}

func initGradleTest(t *testing.T) {
if !*tests.TestGradle {
t.Skip("Skipping Gradle test. To run Gradle test add the '-test.gradle=true' option.")
}
createJfrogHomeConfig(t, true)
}

func prepareGradleSetupTest(t *testing.T) func() {
initGradleTest(t)
gradleHome := t.TempDir()
t.Setenv(gradle.UserHomeEnv, gradleHome)
wd, err := os.Getwd()
assert.NoError(t, err)
gradleProjectDir := t.TempDir()
err = io.CopyDir(filepath.Join(tests.GetTestResourcesPath(), "gradle", "setupcmd"), gradleProjectDir, true, nil)
require.NoError(t, err)
assert.NoError(t, os.Chdir(gradleProjectDir))
restoreDir := clientTestUtils.ChangeDirWithCallback(t, wd, gradleProjectDir)
return func() {
restoreDir()
}
}
Loading
Loading