Files
garble/testdata/script/debugdir.txtar
Daniel Martí a3a92356d9 refuse to delete unknown files with -debugdir
When creating a new debugdir directory, add a sentinel .garble-debugdir
file at its root so that we can later know that we created it
and the user is very unlikely to have left important data there.

When emptying an existing debugdir directory, only do so if it has
that sentinel file, for added safety.

Fixes #932.
2025-04-05 15:51:00 +01:00

59 lines
1.7 KiB
Plaintext

exec garble -debugdir=debug1 build
exists 'debug1/test/main/imported/imported.go' 'debug1/test/main/main.go' 'debug1/reflect/type.go'
exists 'debug1/runtime/error.go' 'debug1/runtime/funcdata.h' 'debug1/runtime/asm.s'
[amd64] exists 'debug1/runtime/cpuflags_amd64.go' 'debug1/runtime/asm_amd64.s'
[!amd64] ! exists 'debug1/runtime/cpuflags_amd64.go' 'debug1/runtime/asm_amd64.s'
! grep ImportedFunc $WORK/debug1/test/main/imported/imported.go
! grep ImportedFunc $WORK/debug1/test/main/main.go
! grep 'some comment' $WORK/debug1/test/main/main.go
# We should refuse to delete non-empty directories which weren't created
# by an earlier invocation of garble -debugdir, as that could lead to data loss.
! exec garble -debugdir=notdebug build
stderr 'debugdir "notdebug" has unknown contents; empty it first'
exists notdebug/important_data.txt
exists notdebug/subdir/important_data.txt
[short] stop
# Sources from previous builds should be deleted
cp $WORK/debug1/test/main/main.go $WORK/debug1/some_file_from_prev_build.go
exec garble -debugdir=debug1 build -v
stderr 'test/main' # we force rebuilds with -debugdir
! exists $WORK/debug1/some_file_from_prev_build.go
-- notdebug/important_data.txt --
This file should not be deleted by -debugdir.
-- notdebug/subdir/important_data.txt --
This file should not be deleted by -debugdir.
-- go.mod --
module test/main
go 1.23
-- main.go --
package main
import (
"reflect"
"test/main/imported" // some comment
)
type someType int // some comment
var someVar = 0
type someStruct struct {
someField int // some comment
}
func main() {
imported.ImportedFunc()
reflect.TypeOf(123)
}
-- imported/imported.go --
package imported
func ImportedFunc() {}