Skip to content

TestDeleteContext fails when cmd/testdata directory is missing #321

@hazelmayank

Description

@hazelmayank

Describe the bug

While running the test suite with go test ./..., the TestDeleteContext test fails because it tries to write/read a config file at ./testdata/local.config. However, the cmd/testdata directory does not exist in a fresh clone, causing the test to fail with:

open ./testdata/local.config: no such file or directory

This makes the test dependent on a manually existing local directory instead of being fully self-contained.

Image

Expected behavior

go test ./... should pass on a fresh clone without requiring the cmd/testdata directory to already exist. The test should create any temporary files or directories it needs during execution.

Actual behavior

The test suite fails in TestDeleteContext:

--- FAIL: TestDeleteContext (0.00s)
    context_test.go:44:
        Error: Received unexpected error:
        open ./testdata/local.config: no such file or directory

How to Reproduce?

  1. Clone the repository fresh: git clone https://github.com/microcks/microcks-cli.git
  2. Change into the directory: cd microcks-cli
  3. Run the test suite: go test ./...
  4. Observe the failure in cmd/context_test.go at TestDeleteContext.

Microcks version or git rev

No response

Install method (docker-compose, helm chart, operator, docker-desktop extension,...)

No response

Additional information

Root cause. cmd/context_test.go declares a hardcoded path:

const testConfigFilePath = "./testdata/local.config"

and then calls os.WriteFile(testConfigFilePath, ...). os.WriteFile does not create parent directories, and .gitignore excludes **/testdata/**, so the cmd/testdata/ directory does not exist on a clean clone.

Proposed fix. Use Go's t.TempDir() so the test creates an isolated, auto-cleaned temporary directory on every run:

testConfigFilePath := filepath.Join(t.TempDir(), "local.config")

This makes the test self-contained, removes the dependency on repository-local folders, and prevents state leakage between consecutive runs.

I would like to work on this issue if the maintainers agree with the proposed approach. I can send a small PR that updates the test to use t.TempDir().

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions