//go:build testrunmain

package main_test

import (
	"flag"
	"fmt"
	"os"
	"testing"

	"github.com/ipfs/kubo/cmd/ipfs/kubo"
)

// this abuses go so much that I felt dirty writing this code
// but it is the only way to do it without writing custom compiler that would
// be a clone of go-build with go-test.
func TestRunMain(t *testing.T) {
	args := flag.Args()
	os.Args = append([]string{os.Args[0]}, args...)

	ret := kubo.Start(kubo.BuildDefaultEnv)

	p := os.Getenv("IPFS_COVER_RET_FILE")
	if len(p) != 0 {
		os.WriteFile(p, []byte(fmt.Sprintf("%d\n", ret)), 0o777)
	}

	// close outputs so go testing doesn't print anything
	null, _ := os.OpenFile(os.DevNull, os.O_RDWR, 0755)
	os.Stderr = null
	os.Stdout = null
}
