// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1

package moduletest

import (
	"github.com/hashicorp/terraform/internal/tfdiags"
)

type CommandMode int

const (
	// NormalMode is the default mode for running terraform test.
	NormalMode CommandMode = iota
	// CleanupMode is used when running terraform test cleanup.
	// In this mode, the graph will be built with the intention of cleaning up
	// the state, rather than applying changes.
	CleanupMode
)

type Suite struct {
	Status      Status
	CommandMode CommandMode

	Files map[string]*File
}

type TestSuiteRunner interface {
	Test(experimentsAllowed bool) (Status, tfdiags.Diagnostics)
	Stop()
	Cancel()

	// IsStopped allows code outside the moduletest package to confirm the suite was stopped
	// when handling a graceful exit scenario
	IsStopped() bool
}
