本文整理汇总了Golang中launchpad/net/juju-core/charm.ReadDir函数的典型用法代码示例。如果您正苦于以下问题:Golang ReadDir函数的具体用法?Golang ReadDir怎么用?Golang ReadDir使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ReadDir函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestDirRevisionFile
func (s *DirSuite) TestDirRevisionFile(c *C) {
charmDir := testing.Charms.ClonedDirPath(c.MkDir(), "dummy")
revPath := filepath.Join(charmDir, "revision")
// Missing revision file
err := os.Remove(revPath)
c.Assert(err, IsNil)
dir, err := charm.ReadDir(charmDir)
c.Assert(err, IsNil)
c.Assert(dir.Revision(), Equals, 0)
// Missing revision file with old revision in metadata
file, err := os.OpenFile(filepath.Join(charmDir, "metadata.yaml"), os.O_WRONLY|os.O_APPEND, 0)
c.Assert(err, IsNil)
_, err = file.Write([]byte("\nrevision: 1234\n"))
c.Assert(err, IsNil)
dir, err = charm.ReadDir(charmDir)
c.Assert(err, IsNil)
c.Assert(dir.Revision(), Equals, 1234)
// Revision file with bad content
err = ioutil.WriteFile(revPath, []byte("garbage"), 0666)
c.Assert(err, IsNil)
dir, err = charm.ReadDir(charmDir)
c.Assert(err, ErrorMatches, "invalid revision file")
c.Assert(dir, IsNil)
}
示例2: TestDirSetDiskRevision
func (s *DirSuite) TestDirSetDiskRevision(c *C) {
charmDir := testing.Charms.ClonedDirPath(c.MkDir(), "dummy")
dir, err := charm.ReadDir(charmDir)
c.Assert(err, IsNil)
c.Assert(dir.Revision(), Equals, 1)
dir.SetDiskRevision(42)
c.Assert(dir.Revision(), Equals, 42)
dir, err = charm.ReadDir(charmDir)
c.Assert(err, IsNil)
c.Assert(dir.Revision(), Equals, 42)
}
示例3: TestReadDirWithoutConfig
func (s *DirSuite) TestReadDirWithoutConfig(c *C) {
path := testing.Charms.DirPath("varnish")
dir, err := charm.ReadDir(path)
c.Assert(err, IsNil)
// A lacking config.yaml file still causes a proper
// Config value to be returned.
c.Assert(dir.Config().Options, HasLen, 0)
}
示例4: TestDoesntBumpRevisionWhenNotNecessary
func (s *UpgradeCharmSuccessSuite) TestDoesntBumpRevisionWhenNotNecessary(c *C) {
dir, err := charm.ReadDir(s.path)
c.Assert(err, IsNil)
err = dir.SetDiskRevision(42)
c.Assert(err, IsNil)
err = runUpgradeCharm(c, "riak")
c.Assert(err, IsNil)
s.assertUpgraded(c, 42, false)
s.assertLocalRevision(c, 42, s.path)
}
示例5: TestUpgradeCharmDir
func (s *DeploySuite) TestUpgradeCharmDir(c *C) {
dirPath := coretesting.Charms.ClonedDirPath(s.SeriesPath, "dummy")
err := runDeploy(c, "local:dummy", "-u")
c.Assert(err, IsNil)
curl := charm.MustParseURL("local:precise/dummy-2")
s.AssertService(c, "dummy", curl, 1, 0)
// Check the charm really was upgraded.
ch, err := charm.ReadDir(dirPath)
c.Assert(err, IsNil)
c.Assert(ch.Revision(), Equals, 2)
}
示例6: TestBundleFileModes
func (s *BundleSuite) TestBundleFileModes(c *C) {
// Apply subtler mode differences than can be expressed in Bazaar.
srcPath := testing.Charms.ClonedDirPath(c.MkDir(), "dummy")
modes := []struct {
path string
mode os.FileMode
}{
{"hooks/install", 0751},
{"empty", 0750},
{"src/hello.c", 0614},
}
for _, m := range modes {
err := os.Chmod(filepath.Join(srcPath, m.path), m.mode)
c.Assert(err, IsNil)
}
var haveSymlinks = true
if err := os.Symlink("../target", filepath.Join(srcPath, "hooks/symlink")); err != nil {
haveSymlinks = false
}
// Bundle and extract the charm to a new directory.
dir, err := charm.ReadDir(srcPath)
c.Assert(err, IsNil)
buf := new(bytes.Buffer)
err = dir.BundleTo(buf)
c.Assert(err, IsNil)
bundle, err := charm.ReadBundleBytes(buf.Bytes())
c.Assert(err, IsNil)
path := c.MkDir()
err = bundle.ExpandTo(path)
c.Assert(err, IsNil)
// Check sensible file modes once round-tripped.
info, err := os.Stat(filepath.Join(path, "src", "hello.c"))
c.Assert(err, IsNil)
c.Assert(info.Mode()&0777, Equals, os.FileMode(0644))
c.Assert(info.Mode()&os.ModeType, Equals, os.FileMode(0))
info, err = os.Stat(filepath.Join(path, "hooks", "install"))
c.Assert(err, IsNil)
c.Assert(info.Mode()&0777, Equals, os.FileMode(0755))
c.Assert(info.Mode()&os.ModeType, Equals, os.FileMode(0))
info, err = os.Stat(filepath.Join(path, "empty"))
c.Assert(err, IsNil)
c.Assert(info.Mode()&0777, Equals, os.FileMode(0755))
if haveSymlinks {
target, err := os.Readlink(filepath.Join(path, "hooks", "symlink"))
c.Assert(err, IsNil)
c.Assert(target, Equals, "../target")
}
}
示例7: TestExpandTo
func (s *BundleSuite) TestExpandTo(c *C) {
bundle, err := charm.ReadBundle(s.bundlePath)
c.Assert(err, IsNil)
path := filepath.Join(c.MkDir(), "charm")
err = bundle.ExpandTo(path)
c.Assert(err, IsNil)
dir, err := charm.ReadDir(path)
c.Assert(err, IsNil)
checkDummy(c, dir, path)
}
示例8: AddCustomCharm
func AddCustomCharm(c *C, st *State, name, filename, content, series string, revision int) *Charm {
path := testing.Charms.ClonedDirPath(c.MkDir(), name)
if filename != "" {
config := filepath.Join(path, filename)
err := ioutil.WriteFile(config, []byte(content), 0644)
c.Assert(err, IsNil)
}
ch, err := charm.ReadDir(path)
c.Assert(err, IsNil)
if revision != -1 {
ch.SetRevision(revision)
}
return addCharm(c, st, series, ch)
}
示例9: TestBundleToWithBadType
func (s *DirSuite) TestBundleToWithBadType(c *C) {
charmDir := testing.Charms.ClonedDirPath(c.MkDir(), "dummy")
badFile := filepath.Join(charmDir, "hooks", "badfile")
// Symlink targeting a path outside of the charm.
err := os.Symlink("../../target", badFile)
c.Assert(err, IsNil)
dir, err := charm.ReadDir(charmDir)
c.Assert(err, IsNil)
err = dir.BundleTo(&bytes.Buffer{})
c.Assert(err, ErrorMatches, `symlink "hooks/badfile" links out of charm: "../../target"`)
// Symlink targeting an absolute path.
os.Remove(badFile)
err = os.Symlink("/target", badFile)
c.Assert(err, IsNil)
dir, err = charm.ReadDir(charmDir)
c.Assert(err, IsNil)
err = dir.BundleTo(&bytes.Buffer{})
c.Assert(err, ErrorMatches, `symlink "hooks/badfile" is absolute: "/target"`)
// Can't bundle special files either.
os.Remove(badFile)
err = syscall.Mkfifo(badFile, 0644)
c.Assert(err, IsNil)
dir, err = charm.ReadDir(charmDir)
c.Assert(err, IsNil)
err = dir.BundleTo(&bytes.Buffer{})
c.Assert(err, ErrorMatches, `file is a named pipe: "hooks/badfile"`)
}
示例10: TestUpgradesWithBundle
func (s *UpgradeCharmSuccessSuite) TestUpgradesWithBundle(c *C) {
dir, err := charm.ReadDir(s.path)
c.Assert(err, IsNil)
dir.SetRevision(42)
buf := &bytes.Buffer{}
err = dir.BundleTo(buf)
c.Assert(err, IsNil)
bundlePath := path.Join(s.SeriesPath, "riak.charm")
err = ioutil.WriteFile(bundlePath, buf.Bytes(), 0644)
c.Assert(err, IsNil)
err = runUpgradeCharm(c, "riak")
c.Assert(err, IsNil)
s.assertUpgraded(c, 42, false)
s.assertLocalRevision(c, 7, s.path)
}
示例11: TestBundleSetRevision
func (s *BundleSuite) TestBundleSetRevision(c *C) {
bundle, err := charm.ReadBundle(s.bundlePath)
c.Assert(err, IsNil)
c.Assert(bundle.Revision(), Equals, 1)
bundle.SetRevision(42)
c.Assert(bundle.Revision(), Equals, 42)
path := filepath.Join(c.MkDir(), "charm")
err = bundle.ExpandTo(path)
c.Assert(err, IsNil)
dir, err := charm.ReadDir(path)
c.Assert(err, IsNil)
c.Assert(dir.Revision(), Equals, 42)
}
示例12: bundle
func (s *DeployerSuite) bundle(c *C, customize func(path string)) *corecharm.Bundle {
base := c.MkDir()
dirpath := testing.Charms.ClonedDirPath(base, "dummy")
customize(dirpath)
dir, err := corecharm.ReadDir(dirpath)
c.Assert(err, IsNil)
bunpath := filepath.Join(base, "bundle")
file, err := os.Create(bunpath)
c.Assert(err, IsNil)
defer file.Close()
err = dir.BundleTo(file)
c.Assert(err, IsNil)
bun, err := corecharm.ReadBundle(bunpath)
c.Assert(err, IsNil)
return bun
}
示例13: step
func (s createCharm) step(c *C, ctx *context) {
base := coretesting.Charms.ClonedDirPath(c.MkDir(), "series", "wordpress")
for _, name := range charmHooks {
path := filepath.Join(base, "hooks", name)
good := true
for _, bad := range s.badHooks {
if name == bad {
good = false
}
}
ctx.writeHook(c, path, good)
}
if s.customize != nil {
s.customize(c, base)
}
dir, err := charm.ReadDir(base)
c.Assert(err, IsNil)
err = dir.SetDiskRevision(s.revision)
c.Assert(err, IsNil)
step(c, ctx, addCharm{dir, curl(s.revision)})
}
示例14: TestExpandToSetsHooksExecutable
func (s *BundleSuite) TestExpandToSetsHooksExecutable(c *C) {
charmDir := testing.Charms.ClonedDir(c.MkDir(), "all-hooks")
// Bundle manually, so we can check ExpandTo(), unaffected
// by BundleTo()'s behavior
bundlePath := filepath.Join(c.MkDir(), "bundle.charm")
s.prepareBundle(c, charmDir, bundlePath)
bundle, err := charm.ReadBundle(bundlePath)
c.Assert(err, IsNil)
path := filepath.Join(c.MkDir(), "charm")
err = bundle.ExpandTo(path)
c.Assert(err, IsNil)
_, err = charm.ReadDir(path)
c.Assert(err, IsNil)
for name := range bundle.Meta().Hooks() {
hookName := string(name)
info, err := os.Stat(filepath.Join(path, "hooks", hookName))
c.Assert(err, IsNil)
perm := info.Mode() & 0777
c.Assert(perm&0100 != 0, Equals, true, Commentf("hook %q is not executable", hookName))
}
}
示例15: TestReadDir
func (s *DirSuite) TestReadDir(c *C) {
path := testing.Charms.DirPath("dummy")
dir, err := charm.ReadDir(path)
c.Assert(err, IsNil)
checkDummy(c, dir, path)
}