Esempio n. 1
0
// mockShellCommand creates a new command with the given
// name and contents, and patches $PATH so that it will be
// executed by preference. It returns the name of a file
// that is written by each call to the command - mockShellCalls
// can be used to retrieve the calls.
func mockShellCommand(c *gc.C, s *testing.CleanupSuite, name string) string {
	dir := c.MkDir()
	s.PatchEnvPathPrepend(dir)

	// Note the shell script produces output of the form:
	// +arg1+\n
	// +arg2+\n
	// ...
	// +argn+\n
	// -
	//
	// It would be nice if there was a simple way of unambiguously
	// quoting shell arguments, but this will do as long
	// as no argument contains a newline character.
	outputFile := filepath.Join(dir, name+".out")
	contents := `#!/bin/sh
{
	for i in "$@"; do
		echo +"$i"+
	done
	echo -
} >> ` + utils.ShQuote(outputFile) + `
`
	err := ioutil.WriteFile(filepath.Join(dir, name), []byte(contents), 0755)
	c.Assert(err, gc.IsNil)
	return outputFile
}
Esempio n. 2
0
func PatchCreateContainer(s *testing.CleanupSuite, c *gc.C, expectedURL string) startInstanceFunc {
	mockFunc := func(_ *localEnviron, args environs.StartInstanceParams) (instance.Instance, *instance.HardwareCharacteristics, error) {
		c.Assert(args.Tools, gc.HasLen, 1)
		c.Assert(args.Tools[0].URL, gc.Equals, expectedURL)
		return &mockInstance{id: "mock"}, nil, nil
	}
	s.PatchValue(&createContainer, mockFunc)
	return mockFunc
}
Esempio n. 3
0
func PatchGenerateCertificate(s *testing.CleanupSuite, cert, key string) {
	s.PatchValue(&generateCertificate, func() ([]byte, []byte, error) {
		return []byte(cert), []byte(key), nil
	})
}
Esempio n. 4
0
File: testing.go Progetto: bac/juju
// PatchOfficialDataSources is used by tests.
// We replace one of the urls with the supplied value
// and prevent the other from being used.
func PatchOfficialDataSources(s *testing.CleanupSuite, url string) {
	s.PatchValue(&imagemetadata.DefaultUbuntuBaseURL, "")
	s.PatchValue(&imagemetadata.DefaultJujuBaseURL, url)
}