From bd80ced9b238016271c55d93e052eaf25344f1c9 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Mon, 17 Dec 2018 11:54:21 -0500 Subject: [PATCH] util: Add an fs helper and a test helper --- util/fs.go | 35 +++++++++++++++++++++++++++++++++++ util/test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 util/fs.go create mode 100644 util/test.go diff --git a/util/fs.go b/util/fs.go new file mode 100644 index 00000000..3fa0a176 --- /dev/null +++ b/util/fs.go @@ -0,0 +1,35 @@ +// Mgmt +// Copyright (C) 2013-2018+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package util + +import ( + "fmt" + + "github.com/spf13/afero" +) + +// Fs is a simple wrapper to a file system to be used for standalone deploys. +// This is basically a pass-through so that we fulfill the same interface that +// the deploy mechanism uses. +// NOTE: This struct is here, since I don't know where else to put it for now. +type Fs struct { + *afero.Afero +} + +// URI returns the unique URI of this filesystem. It returns the root path. +func (obj *Fs) URI() string { return fmt.Sprintf("%s://"+"/", obj.Name()) } diff --git a/util/test.go b/util/test.go new file mode 100644 index 00000000..d1d912d4 --- /dev/null +++ b/util/test.go @@ -0,0 +1,41 @@ +// Mgmt +// Copyright (C) 2013-2018+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package util + +import ( + "fmt" + "os" + "path/filepath" + "runtime" +) + +// TestDir gets the absolute path to the test directory if it exists. This is a +// utility function that is used in some tests. +func TestDir(suffix string) (string, error) { + _, filename, _, ok := runtime.Caller(1) + if !ok { + return "", fmt.Errorf("could not determine filename") + } + dir := filepath.Dir(filename) + "/" // location of this test + testDir := dir + suffix // test directory + if info, err := os.Stat(testDir); err != nil || !info.IsDir() { + return "", fmt.Errorf("error getting test dir, err was: %+v", err) + } + + return testDir, nil +}