runner

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Пакет runner применяет мутанты в пуле изолированных копий модуля, запускает go test параллельно и определяет статус каждого мутанта.

Схема работы:

  1. При старте создаётся ровно Workers копий модуля в tmpdir — по одной на воркер.
  2. Каждый мутант: a. Синтаксическая проверка через go/parser (без I/O). b. Воркер берёт свободную копию из пула, вносит мутацию, запускает go test. c. После теста восстанавливает файл из оригинала и возвращает копию в пул.
  3. По завершении все копии удаляются.

Это сокращает дисковые операции с O(мутанты × модуль) до O(воркеры × модуль). Оригинальные файлы никогда не изменяются.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Result

type Result struct {
	Mutant   mutator.Mutant
	Duration time.Duration
	// Output — усечённый вывод тестового прогона (для диагностики).
	Output string
}

Result хранит итог выполнения тестов против одного мутанта.

type Runner

type Runner struct {
	// PackageDir — директория анализируемого Go-пакета (абсолютный путь).
	PackageDir string
	// ModuleRoot — директория, содержащая go.mod (абсолютный путь).
	ModuleRoot string
	// Timeout — максимальное время одного тестового прогона.
	Timeout time.Duration
	// Workers — число параллельных тестовых прогонов.
	Workers int
	// Verbose включает подробный вывод статуса для каждого мутанта.
	Verbose bool
}

Runner управляет параллельным изолированным прогоном тестов.

func New

func New(packageDir string, timeout time.Duration, workers int, verbose bool) (*Runner, error)

New создаёт Runner. Автоматически определяет корень модуля по packageDir.

func (*Runner) Run

func (r *Runner) Run(ctx context.Context, mutants []mutator.Mutant) ([]Result, error)

Run запускает все мутанты параллельно и возвращает результаты. Порядок результатов соответствует порядку входных мутантов.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL