< Summary - go-semantic-release Coverage

Information
Line coverage
100%
Covered lines: 18
Uncovered lines: 0
Coverable lines: 18
Total lines: 43
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Detect0%00100%

File(s)

/home/runner/work/go-semantic-release/go-semantic-release/internal/app/detect_projects.go

#LineLine coverage
 1package app
 2
 3import (
 4  "context"
 5  "fmt"
 6
 7  "github.com/jedi-knights/go-semantic-release/internal/domain"
 8  "github.com/jedi-knights/go-semantic-release/internal/ports"
 9)
 10
 11// ProjectDetector orchestrates project discovery.
 12type ProjectDetector struct {
 13  discoverer ports.ProjectDiscoverer
 14  logger     ports.Logger
 15}
 16
 17// NewProjectDetector creates a project detector.
 18func NewProjectDetector(discoverer ports.ProjectDiscoverer, logger ports.Logger) *ProjectDetector {
 19  return &ProjectDetector{discoverer: discoverer, logger: logger}
 20}
 21
 22// Detect discovers projects in the repository.
 323func (d *ProjectDetector) Detect(ctx context.Context, rootPath string) ([]domain.Project, error) {
 324  projects, err := d.discoverer.Discover(ctx, rootPath)
 125  if err != nil {
 126    return nil, fmt.Errorf("discovering projects: %w", err)
 127  }
 28
 129  if len(projects) == 0 {
 130    d.logger.Info("no projects discovered, using root project")
 131    return []domain.Project{{
 132      Name: "",
 133      Path: ".",
 134      Type: domain.ProjectTypeRoot,
 135    }}, nil
 136  }
 37
 138  d.logger.Info("discovered projects", "count", len(projects))
 139  for _, p := range projects {
 240    d.logger.Debug("project", "name", p.Name, "path", p.Path, "type", p.Type)
 241  }
 142  return projects, nil
 43}

Methods/Properties

Detect