func (s *ToolsSuite) TestEnsureJujucSymlinks(c *gc.C) { jujudPath := filepath.Join(s.toolsDir, names.Jujud) err := ioutil.WriteFile(jujudPath, []byte("assume sane"), 0755) c.Assert(err, gc.IsNil) assertLink := func(path string) time.Time { target, err := symlink.Read(path) c.Assert(err, gc.IsNil) c.Assert(target, gc.Equals, jujudPath) fi, err := os.Lstat(path) c.Assert(err, gc.IsNil) return fi.ModTime() } // Check that EnsureJujucSymlinks writes appropriate symlinks. err = uniter.EnsureJujucSymlinks(s.toolsDir) c.Assert(err, gc.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, gc.IsNil) for tool, mtime := range mtimes { c.Assert(assertLink(tool), gc.Equals, mtime) } }
func (s *ToolsSuite) TestEnsureJujucSymlinksBadDir(c *gc.C) { err := uniter.EnsureJujucSymlinks(filepath.Join(c.MkDir(), "noexist")) c.Assert(err, gc.ErrorMatches, "cannot initialize hook commands in .*: no such file or directory") }