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  }