github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/featuretests/package_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package featuretests 5 6 import ( 7 "flag" 8 "runtime" 9 "testing" 10 11 "github.com/juju/cmd" 12 "github.com/juju/cmd/cmdtesting" 13 "github.com/juju/loggo" 14 jc "github.com/juju/testing/checkers" 15 gc "gopkg.in/check.v1" 16 17 jujucmd "github.com/juju/juju/cmd/juju/commands" 18 "github.com/juju/juju/component/all" 19 coretesting "github.com/juju/juju/testing" 20 ) 21 22 var runFeatureTests = flag.Bool("featuretests", true, "Run long-running feature tests.") 23 24 func init() { 25 // Required for anything requiring components (e.g. resources). 26 if err := all.RegisterForServer(); err != nil { 27 panic(err) 28 } 29 30 flag.Parse() 31 32 if *runFeatureTests == false { 33 return 34 } 35 // Initialize all suites here. 36 gc.Suite(&annotationsSuite{}) 37 gc.Suite(&CmdApplicationSuite{}) 38 gc.Suite(&CloudAPISuite{}) 39 gc.Suite(&apiEnvironmentSuite{}) 40 gc.Suite(&apiLoggerSuite{}) 41 gc.Suite(&BakeryStorageSuite{}) 42 gc.Suite(&blockSuite{}) 43 gc.Suite(&cmdControllerSuite{}) 44 gc.Suite(&CmdCredentialSuite{}) 45 gc.Suite(&cmdJujuSuite{}) 46 gc.Suite(&cmdJujuSuiteNoCAAS{}) 47 gc.Suite(&cmdLoginSuite{}) 48 gc.Suite(&cmdModelSuite{}) 49 gc.Suite(&cmdRegistrationSuite{}) 50 gc.Suite(&cmdStorageSuite{}) 51 gc.Suite(&cmdSubnetSuite{}) 52 gc.Suite(&dblogSuite{}) 53 gc.Suite(&dumpLogsCommandSuite{}) 54 gc.Suite(&undertakerSuite{}) 55 gc.Suite(&upgradeSuite{}) 56 gc.Suite(&CmdRelationSuite{}) 57 gc.Suite(&debugLogDbSuite1{}) 58 gc.Suite(&debugLogDbSuite2{}) 59 gc.Suite(&remoteRelationsSuite{}) 60 gc.Suite(&crossmodelSuite{}) 61 gc.Suite(&ApplicationConfigSuite{}) 62 gc.Suite(&CharmUpgradeSuite{}) 63 gc.Suite(&ResourcesCmdSuite{}) 64 gc.Suite(&FirewallRulesSuite{}) 65 gc.Suite(&introspectionSuite{}) 66 gc.Suite(&debugLogDbSuite1{}) 67 gc.Suite(&debugLogDbSuite2{}) 68 gc.Suite(&InitiateSuite{}) 69 gc.Suite(&UserSuite{}) 70 gc.Suite(&cmdMetricsCommandSuite{}) 71 gc.Suite(&meterStatusIntegrationSuite{}) 72 gc.Suite(&CAASOperatorSuite{}) 73 gc.Suite(&StatusSuite{}) 74 gc.Suite(&cmdSetSeriesSuite{}) 75 gc.Suite(&CmdExportBundleSuite{}) 76 gc.Suite(&cmdDeploySuite{}) 77 gc.Suite(&CredentialManagerSuite{}) 78 79 // TODO (anastasiamac 2016-07-19) Bug#1603585 80 // These tests cannot run on windows - they require a bootstrapped controller. 81 if runtime.GOOS == "linux" { 82 gc.Suite(&cloudImageMetadataSuite{}) 83 gc.Suite(&cmdSpaceSuite{}) 84 gc.Suite(&cmdUpgradeSuite{}) 85 } 86 } 87 88 func TestPackage(t *testing.T) { 89 coretesting.MgoSSLTestPackage(t) 90 } 91 92 func runCommand(c *gc.C, args ...string) (*cmd.Context, error) { 93 // Writers need to be reset, because 94 // they are set globally in the juju/cmd package and will 95 // return an error if we attempt to run two commands in the 96 // same test. 97 loggo.ResetWriters() 98 ctx := cmdtesting.Context(c) 99 command := jujucmd.NewJujuCommand(ctx) 100 return cmdtesting.RunCommand(c, command, args...) 101 } 102 103 func runCommandExpectSuccess(c *gc.C, command string, args ...string) { 104 _, err := runCommand(c, append([]string{command}, args...)...) 105 c.Assert(err, jc.ErrorIsNil) 106 } 107 108 func runCommandExpectFailure(c *gc.C, command, expectedError string, args ...string) { 109 context, err := runCommand(c, append([]string{command}, args...)...) 110 c.Assert(err, gc.ErrorMatches, "cmd: error out silently") 111 c.Assert(cmdtesting.Stderr(context), jc.Contains, expectedError) 112 }