From 300cc1040978478ba996be6dcb02582f27469b2d Mon Sep 17 00:00:00 2001 From: abebeos <110243666+abebeos@users.noreply.github.com> Date: Fri, 27 Jan 2023 00:22:36 +0200 Subject: [PATCH] allow for relative dataDir via -d, closes #589 --- cmd/goal/commands.go | 9 ++++++-- cmd/goal/commands_test.go | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/cmd/goal/commands.go b/cmd/goal/commands.go index ce17c9de48..2a790f3c58 100644 --- a/cmd/goal/commands.go +++ b/cmd/goal/commands.go @@ -278,8 +278,13 @@ func resolveDataDir() string { // Figure out what data directory to tell algod to use. // If not specified on cmdline with '-d', look for default in environment. var dir string - if len(dataDirs) > 0 { - dir = dataDirs[0] + if (len(dataDirs) > 0) && (dataDirs[0] != "") { + // calculate absolute path, see https://github.com/algorand/go-algorand/issues/589 + absDir, err := filepath.Abs(dataDirs[0]) + if err != nil { + reportErrorf("Absolute path conversion error: %s", err) + } + dir = absDir } if dir == "" { dir = os.Getenv("ALGORAND_DATA") diff --git a/cmd/goal/commands_test.go b/cmd/goal/commands_test.go index d83751331d..5a2e6cd021 100644 --- a/cmd/goal/commands_test.go +++ b/cmd/goal/commands_test.go @@ -31,3 +31,47 @@ func TestEnsureDataDirReturnsWhenDataDirIsProvided(t *testing.T) { actualDir := ensureFirstDataDir() require.Equal(t, expectedDir, actualDir) } + +func TestEnsureDataDirReturnsWhenWorkDirIsProvided(t *testing.T) { + partitiontest.PartitionTest(t) + expectedDir, err := os.Getwd() + if err != nil { + reportErrorf("Error getting work dir: %s", err) + } + dataDirs[0] = "." + actualDir := ensureFirstDataDir() + require.Equal(t, expectedDir, actualDir) +} + +func TestEnsureDataDirReturnsWhenRelPath1IsProvided(t *testing.T) { + partitiontest.PartitionTest(t) + expectedDir, err := os.Getwd() + if err != nil { + reportErrorf("Error getting work dir: %s", err) + } + dataDirs[0] = "./../goal" + actualDir := ensureFirstDataDir() + require.Equal(t, expectedDir, actualDir) +} + +func TestEnsureDataDirReturnsWhenRelPath2IsProvided(t *testing.T) { + partitiontest.PartitionTest(t) + expectedDir, err := os.Getwd() + if err != nil { + reportErrorf("Error getting work dir: %s", err) + } + dataDirs[0] = "../goal" + actualDir := ensureFirstDataDir() + require.Equal(t, expectedDir, actualDir) +} + +func TestEnsureDataDirReturnsWhenRelPath3IsProvided(t *testing.T) { + partitiontest.PartitionTest(t) + expectedDir, err := os.Getwd() + if err != nil { + reportErrorf("Error getting work dir: %s", err) + } + dataDirs[0] = "../../cmd/goal" + actualDir := ensureFirstDataDir() + require.Equal(t, expectedDir, actualDir) +}