~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/natefinch/lumberjack.v2/linux_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// +build linux
 
2
 
 
3
package lumberjack
 
4
 
 
5
import (
 
6
        "os"
 
7
        "syscall"
 
8
        "testing"
 
9
)
 
10
 
 
11
func TestMaintainMode(t *testing.T) {
 
12
        currentTime = fakeTime
 
13
        dir := makeTempDir("TestMaintainMode", t)
 
14
        defer os.RemoveAll(dir)
 
15
 
 
16
        filename := logFile(dir)
 
17
 
 
18
        mode := os.FileMode(0770)
 
19
        f, err := os.OpenFile(filename, os.O_CREATE|os.O_RDWR, mode)
 
20
        isNil(err, t)
 
21
        f.Close()
 
22
 
 
23
        l := &Logger{
 
24
                Filename:   filename,
 
25
                MaxBackups: 1,
 
26
                MaxSize:    100, // megabytes
 
27
        }
 
28
        defer l.Close()
 
29
        b := []byte("boo!")
 
30
        n, err := l.Write(b)
 
31
        isNil(err, t)
 
32
        equals(len(b), n, t)
 
33
 
 
34
        newFakeTime()
 
35
 
 
36
        err = l.Rotate()
 
37
        isNil(err, t)
 
38
 
 
39
        filename2 := backupFile(dir)
 
40
        info, err := os.Stat(filename)
 
41
        isNil(err, t)
 
42
        info2, err := os.Stat(filename2)
 
43
        isNil(err, t)
 
44
        equals(mode, info.Mode(), t)
 
45
        equals(mode, info2.Mode(), t)
 
46
}
 
47
 
 
48
func TestMaintainOwner(t *testing.T) {
 
49
        fakeC := fakeChown{}
 
50
        os_Chown = fakeC.Set
 
51
        os_Stat = fakeStat
 
52
        defer func() {
 
53
                os_Chown = os.Chown
 
54
                os_Stat = os.Stat
 
55
        }()
 
56
        currentTime = fakeTime
 
57
        dir := makeTempDir("TestMaintainOwner", t)
 
58
        defer os.RemoveAll(dir)
 
59
 
 
60
        filename := logFile(dir)
 
61
 
 
62
        l := &Logger{
 
63
                Filename:   filename,
 
64
                MaxBackups: 1,
 
65
                MaxSize:    100, // megabytes
 
66
        }
 
67
        defer l.Close()
 
68
        b := []byte("boo!")
 
69
        n, err := l.Write(b)
 
70
        isNil(err, t)
 
71
        equals(len(b), n, t)
 
72
 
 
73
        newFakeTime()
 
74
 
 
75
        err = l.Rotate()
 
76
        isNil(err, t)
 
77
 
 
78
        equals(555, fakeC.uid, t)
 
79
        equals(666, fakeC.gid, t)
 
80
}
 
81
 
 
82
type fakeChown struct {
 
83
        name string
 
84
        uid  int
 
85
        gid  int
 
86
}
 
87
 
 
88
func (f *fakeChown) Set(name string, uid, gid int) error {
 
89
        f.name = name
 
90
        f.uid = uid
 
91
        f.gid = gid
 
92
        return nil
 
93
}
 
94
 
 
95
func fakeStat(name string) (os.FileInfo, error) {
 
96
        info, err := os.Stat(name)
 
97
        if err != nil {
 
98
                return info, err
 
99
        }
 
100
        stat := info.Sys().(*syscall.Stat_t)
 
101
        stat.Uid = 555
 
102
        stat.Gid = 666
 
103
        return info, nil
 
104
}