~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/utils/shell/renderer_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2015 Canonical Ltd.
 
2
// Licensed under the LGPLv3, see LICENCE file for details.
 
3
 
 
4
package shell_test
 
5
 
 
6
import (
 
7
        "runtime"
 
8
 
 
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"
 
14
 
 
15
        "github.com/juju/utils/shell"
 
16
)
 
17
 
 
18
type rendererSuite struct {
 
19
        testing.IsolationSuite
 
20
 
 
21
        unix    *shell.BashRenderer
 
22
        windows *shell.PowershellRenderer
 
23
}
 
24
 
 
25
var _ = gc.Suite(&rendererSuite{})
 
26
 
 
27
func (s *rendererSuite) SetUpTest(c *gc.C) {
 
28
        s.IsolationSuite.SetUpTest(c)
 
29
 
 
30
        s.unix = &shell.BashRenderer{}
 
31
        s.windows = &shell.PowershellRenderer{}
 
32
}
 
33
 
 
34
func (s rendererSuite) checkRenderer(c *gc.C, renderer shell.Renderer, expected string) {
 
35
        switch expected {
 
36
        case "powershell":
 
37
                c.Check(renderer, gc.FitsTypeOf, s.windows)
 
38
        case "bash":
 
39
                c.Check(renderer, gc.FitsTypeOf, s.unix)
 
40
        default:
 
41
                c.Errorf("unknown kind %q", expected)
 
42
        }
 
43
}
 
44
 
 
45
func (s rendererSuite) TestNewRendererDefault(c *gc.C) {
 
46
        // All possible values of runtime.GOOS should be supported.
 
47
        renderer, err := shell.NewRenderer("")
 
48
        c.Assert(err, jc.ErrorIsNil)
 
49
 
 
50
        switch runtime.GOOS {
 
51
        case "windows":
 
52
                s.checkRenderer(c, renderer, "powershell")
 
53
        default:
 
54
                s.checkRenderer(c, renderer, "bash")
 
55
        }
 
56
}
 
57
 
 
58
func (s rendererSuite) TestNewRendererGOOS(c *gc.C) {
 
59
        // All possible values of runtime.GOOS should be supported.
 
60
        renderer, err := shell.NewRenderer(runtime.GOOS)
 
61
        c.Assert(err, jc.ErrorIsNil)
 
62
 
 
63
        switch runtime.GOOS {
 
64
        case "windows":
 
65
                s.checkRenderer(c, renderer, "powershell")
 
66
        default:
 
67
                s.checkRenderer(c, renderer, "bash")
 
68
        }
 
69
}
 
70
 
 
71
func (s rendererSuite) TestNewRendererWindows(c *gc.C) {
 
72
        renderer, err := shell.NewRenderer("windows")
 
73
        c.Assert(err, jc.ErrorIsNil)
 
74
 
 
75
        s.checkRenderer(c, renderer, "powershell")
 
76
}
 
77
 
 
78
func (s rendererSuite) TestNewRendererUnix(c *gc.C) {
 
79
        for _, os := range utils.OSUnix {
 
80
                c.Logf("trying %q", os)
 
81
                renderer, err := shell.NewRenderer(os)
 
82
                c.Assert(err, jc.ErrorIsNil)
 
83
 
 
84
                s.checkRenderer(c, renderer, "bash")
 
85
        }
 
86
}
 
87
 
 
88
func (s rendererSuite) TestNewRendererDistros(c *gc.C) {
 
89
        distros := []string{"ubuntu"}
 
90
        for _, distro := range distros {
 
91
                c.Logf("trying %q", distro)
 
92
                renderer, err := shell.NewRenderer(distro)
 
93
                c.Assert(err, jc.ErrorIsNil)
 
94
 
 
95
                s.checkRenderer(c, renderer, "bash")
 
96
        }
 
97
}
 
98
 
 
99
func (s rendererSuite) TestNewRendererUnknown(c *gc.C) {
 
100
        _, err := shell.NewRenderer("<unknown OS>")
 
101
 
 
102
        c.Check(err, jc.Satisfies, errors.IsNotFound)
 
103
}