github.com/replit/upm@v0.0.0-20240423230255-9ce4fc3ea24c/internal/backends/backends_test.go (about)

     1  package backends
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  )
     9  
    10  func TestGetBackends(t *testing.T) {
    11  	fileToBackend := map[string]string{
    12  		"Setup.cs":       "dotnet",
    13  		"project.csproj": "dotnet",
    14  		"Setup.fs":       "dotnet",
    15  		"project.fsproj": "dotnet",
    16  		"pom.xml":        "java-maven",
    17  		"package.json":   "nodejs-npm",
    18  		"Cargo.toml":     "rust",
    19  	}
    20  
    21  	dir, err := os.MkdirTemp("", "TestGetBackends")
    22  	if err != nil {
    23  		t.Errorf("failed to create a temp directory %v", err)
    24  	}
    25  	defer os.RemoveAll(dir)
    26  
    27  	for file, backend := range fileToBackend {
    28  		tmpfile := filepath.Join(dir, file)
    29  
    30  		if err := os.WriteFile(tmpfile, []byte{}, 0o666); err != nil {
    31  			t.Errorf("failed to create empty file: %s err: %v", tmpfile, err)
    32  		}
    33  
    34  		if err := os.Chdir(dir); err != nil {
    35  			t.Errorf("failed to change to directory: %s err: %v", dir, err)
    36  		}
    37  
    38  		actualBackend := GetBackend(context.Background(), "")
    39  		if backend != actualBackend.Name {
    40  			t.Errorf("expected backend: %s but got backend %s", backend, actualBackend.Name)
    41  		}
    42  		os.Remove(tmpfile)
    43  	}
    44  }