1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the LGPLv3, see LICENCE file for details.
9
"github.com/juju/errors"
10
"github.com/juju/testing"
11
jc "github.com/juju/testing/checkers"
12
"github.com/juju/utils"
13
gc "gopkg.in/check.v1"
15
"github.com/juju/utils/filepath"
18
type filepathSuite struct {
19
testing.IsolationSuite
21
unix *filepath.UnixRenderer
22
windows *filepath.WindowsRenderer
25
var _ = gc.Suite(&filepathSuite{})
27
func (s *filepathSuite) SetupTest(c *gc.C) {
28
s.IsolationSuite.SetUpTest(c)
30
s.unix = &filepath.UnixRenderer{}
31
s.windows = &filepath.WindowsRenderer{}
34
func (s filepathSuite) checkRenderer(c *gc.C, renderer filepath.Renderer, expected string) {
37
c.Check(renderer, gc.FitsTypeOf, s.windows)
39
c.Check(renderer, gc.FitsTypeOf, s.unix)
41
c.Errorf("unknown kind %q", expected)
45
func (s filepathSuite) TestNewRendererDefault(c *gc.C) {
46
// All possible values of runtime.GOOS should be supported.
47
renderer, err := filepath.NewRenderer("")
48
c.Assert(err, jc.ErrorIsNil)
52
s.checkRenderer(c, renderer, "windows")
54
s.checkRenderer(c, renderer, "unix")
58
func (s filepathSuite) TestNewRendererGOOS(c *gc.C) {
59
// All possible values of runtime.GOOS should be supported.
60
renderer, err := filepath.NewRenderer(runtime.GOOS)
61
c.Assert(err, jc.ErrorIsNil)
65
s.checkRenderer(c, renderer, "windows")
67
s.checkRenderer(c, renderer, "unix")
71
func (s filepathSuite) TestNewRendererWindows(c *gc.C) {
72
renderer, err := filepath.NewRenderer("windows")
73
c.Assert(err, jc.ErrorIsNil)
75
s.checkRenderer(c, renderer, "windows")
78
func (s filepathSuite) TestNewRendererUnix(c *gc.C) {
79
for _, os := range utils.OSUnix {
80
c.Logf("trying %q", os)
81
renderer, err := filepath.NewRenderer(os)
82
c.Assert(err, jc.ErrorIsNil)
84
s.checkRenderer(c, renderer, "unix")
88
func (s filepathSuite) TestNewRendererDistros(c *gc.C) {
89
distros := []string{"ubuntu"}
90
for _, distro := range distros {
91
c.Logf("trying %q", distro)
92
renderer, err := filepath.NewRenderer(distro)
93
c.Assert(err, jc.ErrorIsNil)
95
s.checkRenderer(c, renderer, "unix")
99
func (s filepathSuite) TestNewRendererUnknown(c *gc.C) {
100
_, err := filepath.NewRenderer("<unknown OS>")
102
c.Check(err, jc.Satisfies, errors.IsNotFound)