func (s *ToolsSuite) TestEnsureJujucSymlinks(c *C) { jujudPath := filepath.Join(s.toolsDir, "jujud") err := ioutil.WriteFile(jujudPath, []byte("assume sane"), 0755) c.Assert(err, IsNil) assertLink := func(path string) time.Time { target, err := os.Readlink(path) c.Assert(err, IsNil) c.Assert(target, Equals, "./jujud") fi, err := os.Lstat(path) c.Assert(err, IsNil) return fi.ModTime() } // Check that EnsureJujucSymlinks writes appropriate symlinks. err = uniter.EnsureJujucSymlinks(s.toolsDir) c.Assert(err, IsNil) mtimes := map[string]time.Time{} for _, name := range jujuc.CommandNames() { tool := filepath.Join(s.toolsDir, name) mtimes[tool] = assertLink(tool) } // Check that EnsureJujucSymlinks doesn't overwrite things that don't need to be. err = uniter.EnsureJujucSymlinks(s.toolsDir) c.Assert(err, IsNil) for tool, mtime := range mtimes { c.Assert(assertLink(tool), Equals, mtime) } }
func (s *ToolsSuite) TestEnsureJujucSymlinksBadDir(c *C) { err := uniter.EnsureJujucSymlinks(filepath.Join(c.MkDir(), "noexist")) c.Assert(err, ErrorMatches, "cannot initialize hook commands in .*: no such file or directory") }