Merge lp:~mvo/snappy/snappy-fix-ftbfs-sbuild into lp:~snappy-dev/snappy/snappy-moved-to-github

Proposed by Michael Vogt
Status: Merged
Approved by: Michael Vogt
Approved revision: 468
Merged at revision: 469
Proposed branch: lp:~mvo/snappy/snappy-fix-ftbfs-sbuild
Merge into: lp:~snappy-dev/snappy/snappy-moved-to-github
Diff against target: 170 lines (+60/-14)
3 files modified
logger/logger.go (+14/-3)
logger/logger_test.go (+38/-10)
snappy/build_test.go (+8/-1)
To merge this branch: bzr merge lp:~mvo/snappy/snappy-fix-ftbfs-sbuild
Reviewer Review Type Date Requested Status
Michael Vogt (community) Approve
John Lenton (community) Approve
Review via email: mp+259479@code.launchpad.net

Commit message

Fix FTBFS in a sbuild environment by mocking syslog tests and checking for /dev/shm.

Description of the change

Tiny branch that fixes a FTBFS in a sbuild environment. Skipping the logger tests is something I'm not happy with :/

To post a comment you must log in.
Revision history for this message
John Lenton (chipaca) wrote :

I suspect you forgot something (inline).

review: Needs Fixing
Revision history for this message
John Lenton (chipaca) :
Revision history for this message
Michael Vogt (mvo) wrote :

Thanks a lot! Insufficient tests, I'm sorry for that (I really should have learned this by now *sigh*). Fixed in r464 and added the missing test :)

Revision history for this message
John Lenton (chipaca) :
review: Approve
Revision history for this message
Snappy Tarmac (snappydevtarmac) wrote :
Download full text (5.5 KiB)

The attempt to merge lp:~mvo/snappy/snappy-fix-ftbfs-sbuild into lp:snappy failed. Below is the output from the failed tests.

Checking formatting
Installing godeps
Install golint
Obtaining dependencies
update code.google.com/p/go.crypto failed; trying to fetch newer version
update github.com/blakesmith/ar failed; trying to fetch newer version
code.google.com/p/go.crypto now at 69e2a90ed92d03812364aeb947b7068dc42e561e
update github.com/cheggaaa/pb failed; trying to fetch newer version
github.com/blakesmith/ar now at c9a977dd0cc1392b023382c7bfa5a22af8d3b730
update github.com/jessevdk/go-flags failed; trying to fetch newer version
github.com/cheggaaa/pb now at e8c7cc515bfde3e267957a3b110080ceed51354e
update github.com/mvo5/goconfigparser failed; trying to fetch newer version
github.com/jessevdk/go-flags now at 15347ef417a300349807983f15af9e65cd2e1b3a
update gopkg.in/yaml.v2 failed; trying to fetch newer version
github.com/mvo5/goconfigparser now at 26426272dda20cc76aa1fa44286dc743d2972fe8
update launchpad.net/gocheck failed; trying to fetch newer version
gopkg.in/yaml.v2 now at 49c95bdc21843256fb6c4e0d370a05f24a0bf213
launchpad.net/gocheck now at <email address hidden>
Building
Running tests from /home/tarmac/tmp/tmp.krhn3eL6z3/src/launchpad.net/snappy
=== RUN Test
OK: 16 passed
--- PASS: Test (0.24 seconds)
PASS
coverage: 80.2% of statements
ok launchpad.net/snappy/clickdeb 0.250s coverage: 80.2% of statements
=== RUN Test
OK: 6 passed
--- PASS: Test (0.05 seconds)
PASS
coverage: 12.2% of statements
ok launchpad.net/snappy/cmd/snappy 0.052s coverage: 12.2% of statements
=== RUN Test
OK: 24 passed
--- PASS: Test (0.08 seconds)
PASS
coverage: 100.0% of statements
ok launchpad.net/snappy/coreconfig 0.081s coverage: 100.0% of statements
=== RUN Test
OK: 47 passed
--- PASS: Test (1.04 seconds)
PASS
coverage: 83.3% of statements
ok launchpad.net/snappy/helpers 1.052s coverage: 83.3% of statements
=== RUN Test
OK: 6 passed
--- PASS: Test (0.00 seconds)
PASS
coverage: 93.5% of statements
ok launchpad.net/snappy/logger 0.013s coverage: 93.5% of statements
=== RUN Test
OK: 36 passed
--- PASS: Test (0.15 seconds)
PASS
coverage: 81.5% of statements
ok launchpad.net/snappy/partition 0.150s coverage: 81.5% of statements
=== RUN Test
OK: 3 passed
--- PASS: Test (0.00 seconds)
PASS
coverage: 100.0% of statements
ok launchpad.net/snappy/pkg 0.003s coverage: 100.0% of statements
=== RUN Test
OK: 12 passed
--- PASS: Test (0.07 seconds)
PASS
coverage: 94.3% of statements
ok launchpad.net/snappy/policy 0.069s coverage: 94.3% of statements
=== RUN Test
OK: 3 passed
--- PASS: Test (0.00 seconds)
PASS
coverage: 84.8% of statements
ok launchpad.net/snappy/priv 0.004s coverage: 84.8% of statements
=== RUN Test
OK: 4 passed
--- PASS: Test (0.00 seconds)
PASS
coverage: 50.0% of statements
ok launchpad.net/snappy/progress 0.010s coverage: 50.0% of statements
=== RUN Test
OK: 6 passed
--- PASS: Test (0.00 seconds)
PASS
coverage: 100.0% of statements
ok launchpad.net/snappy/release 0.006s coverage: 100.0% of statements
=== RUN Test
drwxr-xr-x root/root 0 2015-05-20 03:11 ./bin
-rwxr-xr-x root/root 31 2015-05...

Read more...

Revision history for this message
Sergio Schvezov (sergiusens) wrote :

I'll make this easy -> go vet says:
logger/logger_test.go:119:26: error strings should not end with punctuation

467. By Michael Vogt

merged lp:snappy

468. By Michael Vogt

logger/logger_test.go: fix go vet error

Revision history for this message
Michael Vogt (mvo) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'logger/logger.go'
2--- logger/logger.go 2015-05-19 14:09:19 +0000
3+++ logger/logger.go 2015-05-22 06:05:46 +0000
4@@ -22,6 +22,7 @@
5 import (
6 "fmt"
7 "io"
8+ "io/ioutil"
9 "log"
10 "log/syslog"
11 "os"
12@@ -114,16 +115,26 @@
13 l.log.Output(3, msg)
14 }
15
16+// variable to allow mocking the syslog.NewLogger call in the tests
17+var newSyslog = newSyslogImpl
18+
19+func newSyslogImpl() (*log.Logger, error) {
20+ return syslog.NewLogger(SyslogPriority, SyslogFlags)
21+}
22+
23 // NewConsoleLog creates a ConsoleLog with a log.Logger using the given
24 // io.Writer and flag, and a syslog.Writer.
25 func NewConsoleLog(w io.Writer, flag int) (*ConsoleLog, error) {
26- sys, err := syslog.NewLogger(SyslogPriority, SyslogFlags)
27+ clog := log.New(w, "", flag)
28+
29+ sys, err := newSyslog()
30 if err != nil {
31- return nil, err
32+ clog.Output(3, "WARNING: can not create syslog logger")
33+ sys = log.New(ioutil.Discard, "", flag)
34 }
35
36 return &ConsoleLog{
37- log: log.New(w, "", flag),
38+ log: clog,
39 sys: sys,
40 }, nil
41 }
42
43=== modified file 'logger/logger_test.go'
44--- logger/logger_test.go 2015-05-19 14:09:19 +0000
45+++ logger/logger_test.go 2015-05-22 06:05:46 +0000
46@@ -21,6 +21,7 @@
47
48 import (
49 "bytes"
50+ "fmt"
51 "log"
52 "testing"
53
54@@ -32,14 +33,24 @@
55
56 var _ = Suite(&LogSuite{})
57
58-type LogSuite struct{}
59+type LogSuite struct {
60+ sysbuf *bytes.Buffer
61+}
62
63 func (s *LogSuite) SetUpTest(c *C) {
64 c.Assert(logger, Equals, NullLogger)
65+
66+ // we do not want to pollute syslog in our tests (and sbuild
67+ // will also not let us do that)
68+ newSyslog = func() (*log.Logger, error) {
69+ s.sysbuf = bytes.NewBuffer(nil)
70+ return log.New(s.sysbuf, "", SyslogFlags), nil
71+ }
72 }
73
74 func (s *LogSuite) TearDownTest(c *C) {
75 SetLogger(NullLogger)
76+ newSyslog = newSyslogImpl
77 }
78
79 func (s *LogSuite) TestDefault(c *C) {
80@@ -65,42 +76,59 @@
81
82 func (s *LogSuite) TestDebugf(c *C) {
83 var logbuf bytes.Buffer
84- var sysbuf bytes.Buffer
85 l, err := NewConsoleLog(&logbuf, DefaultFlags)
86 c.Assert(err, IsNil)
87
88- l.sys = log.New(&sysbuf, "", SyslogFlags)
89 SetLogger(l)
90
91 Debugf("xyzzy")
92- c.Check(sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: DEBUG: xyzzy`)
93+ c.Check(s.sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: DEBUG: xyzzy`)
94 c.Check(logbuf.String(), Equals, "")
95 }
96
97 func (s *LogSuite) TestNoticef(c *C) {
98 var logbuf bytes.Buffer
99- var sysbuf bytes.Buffer
100 l, err := NewConsoleLog(&logbuf, DefaultFlags)
101 c.Assert(err, IsNil)
102
103- l.sys = log.New(&sysbuf, "", SyslogFlags)
104 SetLogger(l)
105
106 Noticef("xyzzy")
107- c.Check(sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
108+ c.Check(s.sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
109 c.Check(logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
110 }
111
112 func (s *LogSuite) TestPanicf(c *C) {
113 var logbuf bytes.Buffer
114- var sysbuf bytes.Buffer
115 l, err := NewConsoleLog(&logbuf, DefaultFlags)
116 c.Assert(err, IsNil)
117
118- l.sys = log.New(&sysbuf, "", SyslogFlags)
119 SetLogger(l)
120
121 c.Check(func() { Panicf("xyzzy") }, Panics, "xyzzy")
122- c.Check(sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
123+ c.Check(s.sysbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
124 c.Check(logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
125 }
126+
127+func (s *LogSuite) TestSyslogFails(c *C) {
128+ var logbuf bytes.Buffer
129+
130+ // pretend syslog is not available (e.g. because of no /dev/log in
131+ // a chroot or something)
132+ newSyslog = func() (*log.Logger, error) {
133+ return nil, fmt.Errorf("nih nih")
134+ }
135+
136+ // ensure a warning is displayed
137+ l, err := NewConsoleLog(&logbuf, DefaultFlags)
138+ c.Assert(err, IsNil)
139+ c.Check(logbuf.String(), Matches, `(?m).*:\d+: WARNING: can not create syslog logger`)
140+
141+ // ensure that even without a syslog the console log works and we
142+ // do not crash
143+ logbuf.Reset()
144+ SetLogger(l)
145+ Noticef("I do not want to crash")
146+ c.Check(logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: I do not want to crash`)
147+
148+}
149
150=== modified file 'snappy/build_test.go'
151--- snappy/build_test.go 2015-05-19 19:34:13 +0000
152+++ snappy/build_test.go 2015-05-22 06:05:46 +0000
153@@ -325,9 +325,16 @@
154
155 func (s *SnapTestSuite) TestCopyActuallyCopies(c *C) {
156 sourceDir := makeExampleSnapSourceDir(c, "name: hello")
157- // hoping to get the non-linking behaviour
158+
159+ // hoping to get the non-linking behaviour via /dev/shm
160 target, err := ioutil.TempDir("/dev/shm", "copy")
161+ // sbuild environments won't allow writing to /dev/shm, so its
162+ // ok to skip there
163+ if os.IsPermission(err) {
164+ c.Skip("/dev/shm is not writable for us")
165+ }
166 c.Assert(err, IsNil)
167+
168 defer os.Remove(target)
169 c.Assert(copyToBuildDir(sourceDir, target), IsNil)
170 out, err := exec.Command("diff", "-qrN", sourceDir, target).Output()

Subscribers

People subscribed via source and target branches