Compare commits

..

2 Commits

4 changed files with 19 additions and 17 deletions

View File

@ -62,10 +62,6 @@ func NewApp(db *database.Database) *App {
// Save inserts or updates the app in the database.
func (a *App) Save(ctx context.Context) error {
if a.db == nil {
return fmt.Errorf("no database connection")
}
if a.exists(ctx) {
return a.update(ctx)
}

View File

@ -57,10 +57,6 @@ func NewDeployment(db *database.Database) *Deployment {
// Save inserts or updates the deployment in the database.
func (d *Deployment) Save(ctx context.Context) error {
if d.db == nil {
return fmt.Errorf("no database connection")
}
if d.ID == 0 {
return d.insert(ctx)
}

View File

@ -11,7 +11,6 @@ import (
"log/slog"
"os"
"path/filepath"
"strings"
"sync"
"time"
@ -716,7 +715,7 @@ func (svc *Service) cleanupCancelledDeploy(
prefix := fmt.Sprintf("%d-", deployment.ID)
for _, entry := range entries {
if entry.IsDir() && strings.HasPrefix(entry.Name(), prefix) {
if entry.IsDir() && len(entry.Name()) > len(prefix) && entry.Name()[:len(prefix)] == prefix {
dirPath := filepath.Join(buildDir, entry.Name())
removeErr := os.RemoveAll(dirPath)
@ -726,7 +725,6 @@ func (svc *Service) cleanupCancelledDeploy(
} else {
svc.log.Info("cleaned up build dir from cancelled deploy",
"app", app.Name, "path", dirPath)
_ = deployment.AppendLog(ctx, "Cleaned up build directory")
}
}

View File

@ -2,11 +2,13 @@ package deploy
import (
"context"
"fmt"
"log/slog"
"os"
"path/filepath"
"git.eeqj.de/sneak/upaas/internal/config"
"git.eeqj.de/sneak/upaas/internal/docker"
"git.eeqj.de/sneak/upaas/internal/models"
)
// NewTestService creates a Service with minimal dependencies for testing.
@ -52,13 +54,23 @@ func (svc *Service) CleanupCancelledDeploy(
deploymentID int64,
imageID string,
) {
app := models.NewApp(nil)
app.Name = appName
// We can't create real models.App/Deployment in tests easily,
// so we test the build dir cleanup portion directly.
buildDir := svc.GetBuildDir(appName)
deployment := models.NewDeployment(nil)
deployment.ID = deploymentID
entries, err := os.ReadDir(buildDir)
if err != nil {
return
}
svc.cleanupCancelledDeploy(ctx, app, deployment, imageID)
prefix := fmt.Sprintf("%d-", deploymentID)
for _, entry := range entries {
if entry.IsDir() && len(entry.Name()) > len(prefix) && entry.Name()[:len(prefix)] == prefix {
dirPath := filepath.Join(buildDir, entry.Name())
_ = os.RemoveAll(dirPath)
}
}
}
// GetBuildDirExported exposes GetBuildDir for testing.