Skip to content

Commit 73051d7

Browse files
feature: cli-config.yaml also has provider/org/repo info, removes skipped tests CF-1766 (#166)
1 parent d348aba commit 73051d7

File tree

5 files changed

+13
-85
lines changed

5 files changed

+13
-85
lines changed

cmd/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func runConfigResetLogic(cmd *cobra.Command, args []string, flags domain.InitFla
112112
fmt.Println()
113113
fmt.Println("ℹ️ Resetting to local default configurations.")
114114
noTools := []domain.Tool{} // Empty slice for tools as we are in local mode without specific toolset from API initially
115-
if err := configsetup.CreateConfigurationFiles(noTools, cliLocalMode); err != nil {
115+
if err := configsetup.CreateConfigurationFiles(noTools, cliLocalMode, flags); err != nil {
116116
log.Fatalf("Failed to create base configuration files: %v", err)
117117
}
118118
// Create default configuration files for tools

cmd/configsetup/setup.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,15 @@ func CreateGitIgnoreFile() error {
212212
return writeConfigFile(gitIgnorePath, []byte(content))
213213
}
214214

215-
func CreateConfigurationFiles(tools []domain.Tool, cliLocalMode bool) error {
215+
func CreateConfigurationFiles(tools []domain.Tool, cliLocalMode bool, flags domain.InitFlags) error {
216216
// Create project config file
217217
configContent := ConfigFileTemplate(tools)
218218
if err := writeConfigFile(config.Config.ProjectConfigFile(), []byte(configContent)); err != nil {
219219
return fmt.Errorf("failed to write project config file: %w", err)
220220
}
221221

222222
// Create CLI config file
223-
cliConfigContent := buildCliConfigContent(cliLocalMode)
223+
cliConfigContent := buildCliConfigContent(cliLocalMode, flags)
224224
if err := writeConfigFile(config.Config.CliConfigFile(), []byte(cliConfigContent)); err != nil {
225225
return fmt.Errorf("failed to write CLI config file: %w", err)
226226
}
@@ -229,12 +229,12 @@ func CreateConfigurationFiles(tools []domain.Tool, cliLocalMode bool) error {
229229
}
230230

231231
// buildCliConfigContent creates the CLI configuration content
232-
func buildCliConfigContent(cliLocalMode bool) string {
233-
mode := "remote"
232+
func buildCliConfigContent(cliLocalMode bool, initFlags domain.InitFlags) string {
234233
if cliLocalMode {
235-
mode = "local"
234+
return fmt.Sprintf("mode: local")
235+
} else {
236+
return fmt.Sprintf("mode: remote\nprovider: %s\norganization: %s\nrepository: %s", initFlags.Provider, initFlags.Organization, initFlags.Repository)
236237
}
237-
return fmt.Sprintf("mode: %s", mode)
238238
}
239239

240240
// RuntimePluginConfig holds the structure of the runtime plugin.yaml file
@@ -425,7 +425,7 @@ func BuildRepositoryConfigurationFiles(flags domain.InitFlags) error {
425425
logVersionConflicts(familyToVersions, toolsWithLatestVersion)
426426

427427
// Create main config files with all enabled API tools (including cli-config.yaml)
428-
if err := CreateConfigurationFiles(toolsWithLatestVersion, false); err != nil {
428+
if err := CreateConfigurationFiles(toolsWithLatestVersion, false, flags); err != nil {
429429
return err
430430
}
431431

cmd/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ var initCmd = &cobra.Command{
4242
fmt.Println()
4343
fmt.Println("ℹ️ No project token was specified, fetching codacy default configurations")
4444
noTools := []domain.Tool{}
45-
err := configsetup.CreateConfigurationFiles(noTools, cliLocalMode)
45+
err := configsetup.CreateConfigurationFiles(noTools, cliLocalMode, initFlags)
4646
if err != nil {
4747
log.Fatal(err)
4848
}

cmd/init_test.go

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"codacy/cli-v2/cmd/configsetup"
5-
"codacy/cli-v2/config"
65
"codacy/cli-v2/constants"
76
"codacy/cli-v2/domain"
87
"os"
@@ -182,77 +181,3 @@ func TestCleanConfigDirectory(t *testing.T) {
182181
assert.NoError(t, err)
183182
assert.Equal(t, 0, len(files), "Expected 0 files after cleaning, got %d", len(files))
184183
}
185-
186-
func TestInitCommand_NoToken(t *testing.T) {
187-
tempDir := t.TempDir()
188-
originalWD, err := os.Getwd()
189-
assert.NoError(t, err, "Failed to get current working directory")
190-
defer os.Chdir(originalWD)
191-
192-
// Use the real plugins/tools/semgrep/rules.yaml file
193-
rulesPath := filepath.Join("..", "plugins", "tools", "semgrep", "rules.yaml")
194-
if _, err := os.Stat(rulesPath); os.IsNotExist(err) {
195-
t.Skipf("plugins/tools/semgrep/rules.yaml not found at %s; skipping test", rulesPath)
196-
}
197-
198-
// Change to the temp directory to simulate a new project
199-
err = os.Chdir(tempDir)
200-
assert.NoError(t, err, "Failed to change working directory to tempDir")
201-
202-
// Simulate running init with no token
203-
currentInitFlags := domain.InitFlags{
204-
ApiToken: "",
205-
Provider: "",
206-
Organization: "",
207-
Repository: "",
208-
}
209-
210-
// Call the Run logic from initCmd
211-
if err := config.Config.CreateLocalCodacyDir(); err != nil {
212-
t.Fatalf("Failed to create local codacy directory: %v", err)
213-
}
214-
215-
toolsConfigDir := config.Config.ToolsConfigDirectory()
216-
if err := os.MkdirAll(toolsConfigDir, constants.DefaultDirPerms); err != nil {
217-
t.Fatalf("Failed to create tools-configs directory: %v", err)
218-
}
219-
220-
cliLocalMode := len(currentInitFlags.ApiToken) == 0
221-
if cliLocalMode {
222-
noTools := []domain.Tool{}
223-
err := configsetup.CreateConfigurationFiles(noTools, cliLocalMode)
224-
assert.NoError(t, err, "CreateConfigurationFiles should not return an error")
225-
if err := configsetup.BuildDefaultConfigurationFiles(toolsConfigDir, currentInitFlags); err != nil {
226-
t.Fatalf("Failed to build default configuration files: %v", err)
227-
}
228-
if err := configsetup.CreateLanguagesConfigFileLocal(toolsConfigDir); err != nil {
229-
t.Fatalf("Failed to create languages config file: %v", err)
230-
}
231-
}
232-
233-
// Assert that the expected config files are created
234-
codacyDir := config.Config.LocalCodacyDirectory()
235-
expectedFiles := []string{
236-
filepath.Join("tools-configs", "eslint.config.mjs"),
237-
filepath.Join("tools-configs", "trivy.yaml"),
238-
filepath.Join("tools-configs", "ruleset.xml"),
239-
filepath.Join("tools-configs", "pylint.rc"),
240-
filepath.Join("tools-configs", "analysis_options.yaml"),
241-
filepath.Join("tools-configs", "semgrep.yaml"),
242-
filepath.Join("tools-configs", "lizard.yaml"),
243-
"codacy.yaml",
244-
"cli-config.yaml",
245-
filepath.Join("tools-configs", "languages-config.yaml"),
246-
".gitignore",
247-
}
248-
249-
for _, file := range expectedFiles {
250-
filePath := filepath.Join(codacyDir, file)
251-
if file == ".gitignore" {
252-
filePath = filepath.Join(config.Config.LocalCodacyDirectory(), file)
253-
}
254-
255-
_, err := os.Stat(filePath)
256-
assert.NoError(t, err, "Expected config file %s to be created at %s", file, filePath)
257-
}
258-
}
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
mode: remote
1+
mode: remote
2+
provider: gh
3+
organization: troubleshoot-codacy-dev
4+
repository: codacy-cli-test

0 commit comments

Comments
 (0)