microcks / microcks/microcks-cli

TestDeleteContext fails when cmd/testdata directory is missing

Abierto Apto para principiantes
#321 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Go
Estrellas
52
Forks
68
Merge medio
6 h 54 min
PR fusionados (30 d)
10

Descripción

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().

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza en cmd/context_test.go, en TestDeleteContext, e inspecciona cómo se usa testConfigFilePath. Ejecuta go test ./... para reproducir el fallo causado por la ausencia de cmd/testdata y, después, verifica que el test use una ubicación temporal aislada y pase en un checkout nuevo sin directorios locales del repositorio.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
go
Área
cli, testing
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
84/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.