microcks / microcks/microcks-cli
TestDeleteContext fails when cmd/testdata directory is missing
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 52
- Forks
- 68
- Avg merge
- 6h 54m
- Merged PRs (30d)
- 10
Description
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.
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?
- Clone the repository fresh:
git clone https://github.com/microcks/microcks-cli.git - Change into the directory:
cd microcks-cli - Run the test suite:
go test ./... - Observe the failure in
cmd/context_test.goatTestDeleteContext.
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().
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in cmd/context_test.go at TestDeleteContext and inspect how testConfigFilePath is used. Run go test ./... to reproduce the missing cmd/testdata failure, then verify the test uses an isolated temporary location and passes on a fresh checkout without repository-local directories.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- cli, testing
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 84/100