# Test editing go.work files.

go mod initwork m
cmp go.work go.work.want_initial

go mod editwork -directory n
cmp go.work go.work.want_directory_n

go mod editwork -go 1.18
cmp go.work go.work.want_go_118

go mod editwork -dropdirectory m
cmp go.work go.work.want_dropdirectory_m

go mod editwork -replace=x.1@v1.3.0=y.1@v1.4.0 -replace='x.1@v1.4.0 = ../z'
cmp go.work go.work.want_add_replaces

go mod editwork -directory n -directory ../a -directory /b -directory c -directory c
cmp go.work go.work.want_multidirectory

go mod editwork -dropdirectory /b -dropdirectory n
cmp go.work go.work.want_multidropdirectory

go mod editwork -dropreplace='x.1@v1.4.0'
cmp go.work go.work.want_dropreplace

go mod editwork -print -go 1.19 -directory b -dropdirectory c -replace 'x.1@v1.4.0 = ../z' -dropreplace x.1 -dropreplace x.1@v1.3.0
cmp stdout go.work.want_print

go mod editwork -json -go 1.19 -directory b -dropdirectory c -replace 'x.1@v1.4.0 = ../z' -dropreplace x.1 -dropreplace x.1@v1.3.0
cmp stdout go.work.want_json

go mod editwork -print -fmt -workfile $GOPATH/src/unformatted
cmp stdout formatted

-- m/go.mod --
module m

go 1.18
-- go.work.want_initial --
go 1.18

directory ./m
-- go.work.want_directory_n --
go 1.18

directory (
	./m
	./n
)
-- go.work.want_go_118 --
go 1.18

directory (
	./m
	./n
)
-- go.work.want_dropdirectory_m --
go 1.18

directory ./n
-- go.work.want_add_replaces --
go 1.18

directory ./n

replace (
	x.1 v1.3.0 => y.1 v1.4.0
	x.1 v1.4.0 => ../z
)
-- go.work.want_multidirectory --
go 1.18

directory (
	../a
	./c
	./n
	/b
)

replace (
	x.1 v1.3.0 => y.1 v1.4.0
	x.1 v1.4.0 => ../z
)
-- go.work.want_multidropdirectory --
go 1.18

directory (
	../a
	./c
)

replace (
	x.1 v1.3.0 => y.1 v1.4.0
	x.1 v1.4.0 => ../z
)
-- go.work.want_dropreplace --
go 1.18

directory (
	../a
	./c
)

replace x.1 v1.3.0 => y.1 v1.4.0
-- go.work.want_print --
go 1.19

directory (
	../a
	./b
)

replace x.1 v1.4.0 => ../z
-- go.work.want_json --
{
	"Go": "1.19",
	"Directory": [
		{
			"DiskPath": "../a"
		},
		{
			"DiskPath": "./b"
		}
	],
	"Replace": [
		{
			"Old": {
				"Path": "x.1",
				"Version": "v1.4.0"
			},
			"New": {
				"Path": "../z"
			}
		}
	]
}
-- unformatted --
go 1.18
 directory (
 a
  b
  c
  )
  replace (
  x.1 v1.3.0 => y.1 v1.4.0
                            x.1 v1.4.0 => ../z
                            )
-- formatted --
go 1.18

directory (
	a
	b
	c
)

replace (
	x.1 v1.3.0 => y.1 v1.4.0
	x.1 v1.4.0 => ../z
)