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.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().
Describe the bug
While running the test suite with
go test ./..., theTestDeleteContexttest fails because it tries to write/read a config file at./testdata/local.config. However, thecmd/testdatadirectory does not exist in a fresh clone, causing the test to fail with: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 thecmd/testdatadirectory to already exist. The test should create any temporary files or directories it needs during execution.Actual behavior
The test suite fails in
TestDeleteContext:How to Reproduce?
git clone https://github.com/microcks/microcks-cli.gitcd microcks-cligo test ./...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.godeclares a hardcoded path:and then calls
os.WriteFile(testConfigFilePath, ...).os.WriteFiledoes not create parent directories, and.gitignoreexcludes**/testdata/**, so thecmd/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: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().