mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-03 20:12:58 +00:00
overhaul
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
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])
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user