Stephen McQuay 4 years ago
commit
d65b52fedb
4 changed files with 72 additions and 0 deletions
  1. 13
    0
      fs.go
  2. 31
    0
      fs_test.go
  3. 27
    0
      license
  4. 1
    0
      readme.md

+ 13
- 0
fs.go View File

@@ -0,0 +1,13 @@
1
+package fs
2
+
3
+import "os"
4
+
5
+// Exists returns if a file exists
6
+func Exists(path string) bool {
7
+	if _, err := os.Stat(path); err != nil {
8
+		return false
9
+	} else if os.IsNotExist(err) {
10
+		return false
11
+	}
12
+	return true
13
+}

+ 31
- 0
fs_test.go View File

@@ -0,0 +1,31 @@
1
+package fs
2
+
3
+import (
4
+	"io/ioutil"
5
+	"os"
6
+	"path/filepath"
7
+	"testing"
8
+)
9
+
10
+func TestExists(t *testing.T) {
11
+	tmp, err := ioutil.TempDir("", "fs-test-")
12
+	if err != nil {
13
+		panic(err)
14
+	}
15
+
16
+	filename := filepath.Join(tmp, "foo")
17
+
18
+	if Exists(filename) {
19
+		t.Errorf("shouldn't have been able to find non-existant file: %s", filename)
20
+	}
21
+
22
+	f, err := os.Create(filename)
23
+	if err != nil {
24
+		t.Errorf("problem opening fresh file (%q): %v", filename, err)
25
+	}
26
+	f.Close()
27
+
28
+	if !Exists(filename) {
29
+		t.Errorf("failure to find existant file: %s", filename)
30
+	}
31
+}

+ 27
- 0
license View File

@@ -0,0 +1,27 @@
1
+Copyright (c) 2015, smcquay
2
+
3
+All rights reserved.
4
+
5
+Redistribution and use in source and binary forms, with or without modification,
6
+are permitted provided that the following conditions are met:
7
+
8
+    * Redistributions of source code must retain the above copyright notice,
9
+      this list of conditions and the following disclaimer.
10
+    * Redistributions in binary form must reproduce the above copyright notice,
11
+      this list of conditions and the following disclaimer in the documentation
12
+      and/or other materials provided with the distribution.
13
+    * Neither the name of fs nor the names of its contributors
14
+      may be used to endorse or promote products derived from this software
15
+      without specific prior written permission.
16
+
17
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 1
- 0
readme.md View File

@@ -0,0 +1 @@
1
+a small collection of filesystem code I tend to have in all go project.

Loading…
Cancel
Save