< Summary - go-semantic-release Coverage

Information
Line coverage
50%
Covered lines: 6
Uncovered lines: 6
Coverable lines: 12
Total lines: 57
Line coverage: 50%
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
Confirm0%0050%

File(s)

/home/runner/work/go-semantic-release/go-semantic-release/internal/adapters/prompt/terminal.go

#LineLine coverage
 1package prompt
 2
 3import (
 4  "bufio"
 5  "fmt"
 6  "io"
 7  "os"
 8  "strings"
 9
 10  "github.com/jedi-knights/go-semantic-release/internal/ports"
 11)
 12
 13// Compile-time interface compliance check.
 14var _ ports.Prompter = (*TerminalPrompter)(nil)
 15
 16// TerminalPrompter prompts the user via stdin/stdout.
 17type TerminalPrompter struct {
 18  reader io.Reader
 19  writer io.Writer
 20}
 21
 22// NewTerminalPrompter creates a prompter that reads from stdin and writes to stdout.
 23func NewTerminalPrompter() *TerminalPrompter {
 24  return &TerminalPrompter{reader: os.Stdin, writer: os.Stdout}
 25}
 26
 27// NewTerminalPrompterWithIO creates a prompter with custom reader/writer (for testing).
 28func NewTerminalPrompterWithIO(r io.Reader, w io.Writer) *TerminalPrompter {
 29  return &TerminalPrompter{reader: r, writer: w}
 30}
 31
 32// Confirm asks the user a yes/no question and returns their answer.
 733func (p *TerminalPrompter) Confirm(message string) (bool, error) {
 034  if _, err := fmt.Fprintf(p.writer, "%s [y/N] ", message); err != nil {
 035    return false, err
 036  }
 37
 738  scanner := bufio.NewScanner(p.reader)
 139  if !scanner.Scan() {
 040    if err := scanner.Err(); err != nil {
 041      return false, err
 042    }
 143    return false, nil // EOF
 44  }
 45
 646  answer := strings.TrimSpace(strings.ToLower(scanner.Text()))
 647  return answer == "y" || answer == "yes", nil
 48}
 49
 50// IsTerminal returns true if stdin appears to be a terminal.
 51func IsTerminal() bool {
 52  fi, err := os.Stdin.Stat()
 53  if err != nil {
 54    return false
 55  }
 56  return fi.Mode()&os.ModeCharDevice != 0
 57}

Methods/Properties

Confirm