mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-03 20:12:58 +00:00
108 lines
2.8 KiB
Go
108 lines
2.8 KiB
Go
package build
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestRailpackBuilder_DetectRailpack(t *testing.T) {
|
|
// Create a temporary directory for testing
|
|
tempDir, err := os.MkdirTemp("", "railpack-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tempDir)
|
|
|
|
// Test Node.js detection
|
|
nodeDir := filepath.Join(tempDir, "node-app")
|
|
if err := os.MkdirAll(nodeDir, 0755); err != nil {
|
|
t.Fatalf("Failed to create node dir: %v", err)
|
|
}
|
|
|
|
// Create package.json
|
|
packageJson := `{
|
|
"name": "test-app",
|
|
"version": "1.0.0",
|
|
"scripts": {
|
|
"start": "node index.js"
|
|
}
|
|
}`
|
|
if err := os.WriteFile(filepath.Join(nodeDir, "package.json"), []byte(packageJson), 0644); err != nil {
|
|
t.Fatalf("Failed to create package.json: %v", err)
|
|
}
|
|
|
|
// Create RailpackBuilder (we'll mock docker client for now)
|
|
builder := &RailpackBuilder{
|
|
workDir: tempDir,
|
|
}
|
|
|
|
// Test detection
|
|
err = builder.DetectRailpack(context.Background(), nodeDir)
|
|
if err != nil {
|
|
t.Errorf("Expected Railpack to detect Node.js app, got error: %v", err)
|
|
}
|
|
|
|
// Test non-supported directory
|
|
emptyDir := filepath.Join(tempDir, "empty")
|
|
if err := os.MkdirAll(emptyDir, 0755); err != nil {
|
|
t.Fatalf("Failed to create empty dir: %v", err)
|
|
}
|
|
|
|
err = builder.DetectRailpack(context.Background(), emptyDir)
|
|
if err == nil {
|
|
t.Error("Expected Railpack to fail detection on empty directory")
|
|
}
|
|
}
|
|
|
|
func TestBuildManager_DetectBuildType(t *testing.T) {
|
|
// Create a temporary directory for testing
|
|
tempDir, err := os.MkdirTemp("", "build-manager-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tempDir)
|
|
|
|
// Test Node.js app detection (should prefer Railpack)
|
|
nodeDir := filepath.Join(tempDir, "node-app")
|
|
if err := os.MkdirAll(nodeDir, 0755); err != nil {
|
|
t.Fatalf("Failed to create node dir: %v", err)
|
|
}
|
|
|
|
packageJson := `{"name": "test-app", "version": "1.0.0"}`
|
|
if err := os.WriteFile(filepath.Join(nodeDir, "package.json"), []byte(packageJson), 0644); err != nil {
|
|
t.Fatalf("Failed to create package.json: %v", err)
|
|
}
|
|
|
|
// Create build manager (we'll skip docker client for this test)
|
|
// Note: This would need a mock docker client in a real test
|
|
t.Skip("BuildManager test requires docker client mock")
|
|
}
|
|
|
|
func TestRailpackBuilder_GetSupportedFrameworks(t *testing.T) {
|
|
builder := &RailpackBuilder{}
|
|
frameworks := builder.GetSupportedFrameworks()
|
|
|
|
expected := []string{
|
|
"node.js",
|
|
"python",
|
|
"go",
|
|
"rust",
|
|
"java",
|
|
"ruby",
|
|
"php",
|
|
"static",
|
|
}
|
|
|
|
if len(frameworks) != len(expected) {
|
|
t.Errorf("Expected %d frameworks, got %d", len(expected), len(frameworks))
|
|
}
|
|
|
|
for i, framework := range expected {
|
|
if i >= len(frameworks) || frameworks[i] != framework {
|
|
t.Errorf("Expected framework %s at index %d, got %s", framework, i, frameworks[i])
|
|
}
|
|
}
|
|
}
|