Skip to content

Test Coverage PR-3: Tests added in ./cmd subdir#234

Open
mohanmanikanta2299 wants to merge 12 commits into
mainfrom
mohan/test_coverage-3
Open

Test Coverage PR-3: Tests added in ./cmd subdir#234
mohanmanikanta2299 wants to merge 12 commits into
mainfrom
mohan/test_coverage-3

Conversation

@mohanmanikanta2299

@mohanmanikanta2299 mohanmanikanta2299 commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

🛠️ Description

Summary

This PR is the 3rd part of the test coverage PRs intended to increase the test coverage of the entire repo from 55% to 80+%, fulfilling our coverage requirements.

Changes Made

  • Implemented comprehensive table-driven tests for the cmd package.
  • debug.go, dispatch.go, init.go, report.go, root.go, utils.go -- list of files in cmd package for which the test have been created/updated.
  • Added validation for CLI command flags, ensuring default values and flag bindings are properly configured.
  • Added strict assertions (assert.Equal, assert.Contains) and explicit error checking to validate function outputs and edge cases.
  • Used require for critical initializations (like loggers and flag lookups) to prevent nil-pointer panics during test execution.

Testing

  • Ran go test -v ./... (All tests passing)
  • Ran go test -race ./... (No race conditions detected)
  • Verified coverage metrics locally.

🔗 External Links

https://hashicorp.atlassian.net/browse/CCEN-512

🤔 Can be merged upon approval?

PCI review checklist

  • I have documented a clear reason for, and description of, the change I am making.

  • If applicable, I've documented a plan to revert these changes if they require more than reverting the pull request.

  • If applicable, I've documented the impact of any changes to security controls.

    Examples of changes to security controls include using new access control methods, adding or removing logging pipelines, etc.

Copilot AI review requested due to automatic review settings June 5, 2026 14:50
@mohanmanikanta2299 mohanmanikanta2299 requested a review from a team as a code owner June 5, 2026 14:50
@mohanmanikanta2299 mohanmanikanta2299 marked this pull request as draft June 5, 2026 14:50

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds/expands table-driven tests in the cmd/ package to improve overall repository test coverage, focusing primarily on Cobra command wiring (flags/help/registration) and a few utility helpers.

Changes:

  • Added new unit tests for core CLI commands (root, init, report, dispatch, debug) to validate flag defaults, help text, and command registration.
  • Expanded cmd/utils_test.go to cover additional utility behaviors (GetVersion, table writer setup/rendering, stringArrayToRow).
  • Added subprocess-based tests for init PreRun validation paths that call cobra.CheckErr (which exits).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
cmd/utils_test.go Expands tests for CLI utility helpers (version formatting, table rendering, row conversion, colorize).
cmd/root_test.go Adds tests for root flags/help/version plus config/logger initialization paths.
cmd/report_test.go Adds tests ensuring report command registration, subcommands, help text, and flag defaults.
cmd/init_test.go Adds tests for init flags/help, HCL rendering, and PreRun validation (incl. subprocess exit cases).
cmd/dispatch_test.go Adds tests for dispatch flag defaults, shorthands, help text, and registration.
cmd/debug_test.go Adds tests for debug flags/help/registration and a runtime execution check (see comments re: network dependence).

Comment thread cmd/init_test.go Outdated
Comment thread cmd/init_test.go Outdated
Comment thread cmd/debug_test.go
@mohanmanikanta2299 mohanmanikanta2299 marked this pull request as ready for review June 5, 2026 15:48
dependabot Bot and others added 5 commits June 15, 2026 15:36
)

Bumps [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) from 6.7.9 to 6.8.0.
- [Release notes](https://github.com/jedib0t/go-pretty/releases)
- [Commits](jedib0t/go-pretty@v6.7.9...v6.8.0)

---
updated-dependencies:
- dependency-name: github.com/jedib0t/go-pretty/v6
  dependency-version: 6.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@de0fac2...df4cb1c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…e.go files (#235)

* Tests added for cmd/headers.go and cmd/license.go

* fix: refactor tests to address copilot review comments

* fix: address review comments and nits.

* fix: error check in test case

* Refactor tests to call methods with boilerplate.
Comment thread cmd/root_test.go
assert.Equal(t, ".copywrite.hcl", flag.DefValue)
}

func Test_initConfig_FileNotExist(t *testing.T) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this test checking for ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test verifies that initConfig() is a no operation when the config file doesn't exist, it should not panic or modify the global conf state. The assertions confirm that conf still holds its default values (empty License, SchemaVersion = 1) after the call, proving no accidental mutation occurred.

Comment thread cmd/root_test.go Outdated
oldCfgPath := cfgPath
defer func() { cfgPath = oldCfgPath }()

cfgPath = "/tmp/nonexistent_copywrite_test_config_12345.hcl"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tmp path is not present for windows systems. Try using the line filepath.Join(t.TempDir(), "nonexistent.hcl") to keep it agnostic of the underlying running system

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added filepath.Join instead of /tmp/nonexistent_copywrite_test_config_12345.hcl in the test case for supporting Windows system.

Comment thread cmd/init_test.go Outdated
t.Chdir(tmpDir)

buf := new(bytes.Buffer)
restoreRootCmd(t)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is usually more idiomatic to have the cleanup commands run after a test is done, so that other tests don't have to rely on doing a cleanup beforehand.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Used helper functions that perform cleanup at the end of the test case and restore original cmd State

Comment thread cmd/init_test.go
buf := new(bytes.Buffer)
initCmd.SetOut(buf)
initCmd.SetErr(buf)
initCmd.SetArgs([]string{"--help"})

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check that cleanup is done for all the commands to prevent non-deterministic between runs.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created restoreInitCmd in helpers and used it for cleanup

Comment thread cmd/utils_test.go Outdated
t.Run(tt.name, func(t *testing.T) {
oldVersion := version
oldCommit := commit
defer func() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

t.Cleanup can be used here for testcases

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added cleanup instead of defer func()

…ir (#231)

* Add test cases to increase coverage for licensecheck and repodata directories

* Lint error fix.

* Address co-pilot comments.

* fix: addressed review comments

* fix: tighten assertion in TestAddHeader test-case
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants