package statefile

import (
	"bytes"

	"github.com/hashicorp/terraform/internal/states"
)

// StatesMarshalEqual returns true if and only if the two given states have
// an identical (byte-for-byte) statefile representation.
//
// This function compares only the portions of the state that are persisted
// in state files, so for example it will not return false if the only
// differences between the two states are local values or descendent module
// outputs.
func StatesMarshalEqual(a, b *states.State) bool {
	var aBuf bytes.Buffer
	var bBuf bytes.Buffer

	// nil states are not valid states, and so they can never martial equal.
	if a == nil || b == nil {
		return false
	}

	// We write here some temporary files that have no header information
	// populated, thus ensuring that we're only comparing the state itself
	// and not any metadata.
	err := Write(&File{State: a}, &aBuf)
	if err != nil {
		// Should never happen, because we're writing to an in-memory buffer
		panic(err)
	}
	err = Write(&File{State: b}, &bBuf)
	if err != nil {
		// Should never happen, because we're writing to an in-memory buffer
		panic(err)
	}

	return bytes.Equal(aBuf.Bytes(), bBuf.Bytes())
}
