| package testing | 
 |  | 
 | import ( | 
 | 	"errors" | 
 | 	"os" | 
 | 	"path/filepath" | 
 | 	"strings" | 
 | 	"testing" | 
 | 	"time" | 
 |  | 
 | 	"gerrit.mcp.mirantis.net/debian/gophercloud.git" | 
 | 	th "gerrit.mcp.mirantis.net/debian/gophercloud.git/testhelper" | 
 | ) | 
 |  | 
 | func TestWaitFor(t *testing.T) { | 
 | 	err := gophercloud.WaitFor(2, func() (bool, error) { | 
 | 		return true, nil | 
 | 	}) | 
 | 	th.CheckNoErr(t, err) | 
 | } | 
 |  | 
 | func TestWaitForTimeout(t *testing.T) { | 
 | 	if testing.Short() { | 
 | 		t.Skip("skipping test in short mode.") | 
 | 	} | 
 |  | 
 | 	err := gophercloud.WaitFor(1, func() (bool, error) { | 
 | 		return false, nil | 
 | 	}) | 
 | 	th.AssertEquals(t, "A timeout occurred", err.Error()) | 
 | } | 
 |  | 
 | func TestWaitForError(t *testing.T) { | 
 | 	if testing.Short() { | 
 | 		t.Skip("skipping test in short mode.") | 
 | 	} | 
 |  | 
 | 	err := gophercloud.WaitFor(2, func() (bool, error) { | 
 | 		return false, errors.New("Error has occurred") | 
 | 	}) | 
 | 	th.AssertEquals(t, "Error has occurred", err.Error()) | 
 | } | 
 |  | 
 | func TestWaitForPredicateExceed(t *testing.T) { | 
 | 	if testing.Short() { | 
 | 		t.Skip("skipping test in short mode.") | 
 | 	} | 
 |  | 
 | 	err := gophercloud.WaitFor(1, func() (bool, error) { | 
 | 		time.Sleep(4 * time.Second) | 
 | 		return false, errors.New("Just wasting time") | 
 | 	}) | 
 | 	th.AssertEquals(t, "A timeout occurred", err.Error()) | 
 | } | 
 |  | 
 | func TestNormalizeURL(t *testing.T) { | 
 | 	urls := []string{ | 
 | 		"NoSlashAtEnd", | 
 | 		"SlashAtEnd/", | 
 | 	} | 
 | 	expected := []string{ | 
 | 		"NoSlashAtEnd/", | 
 | 		"SlashAtEnd/", | 
 | 	} | 
 | 	for i := 0; i < len(expected); i++ { | 
 | 		th.CheckEquals(t, expected[i], gophercloud.NormalizeURL(urls[i])) | 
 | 	} | 
 |  | 
 | } | 
 |  | 
 | func TestNormalizePathURL(t *testing.T) { | 
 | 	baseDir, _ := os.Getwd() | 
 |  | 
 | 	rawPath := "template.yaml" | 
 | 	basePath, _ := filepath.Abs(".") | 
 | 	result, _ := gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected := strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "template.yaml"}, "/") | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "http://www.google.com" | 
 | 	basePath, _ = filepath.Abs(".") | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = "http://www.google.com" | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml" | 
 | 	basePath, _ = filepath.Abs(".") | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "very/nested/file.yaml"}, "/") | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml" | 
 | 	basePath = "http://www.google.com" | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = "http://www.google.com/very/nested/file.yaml" | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml/" | 
 | 	basePath = "http://www.google.com/" | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = "http://www.google.com/very/nested/file.yaml" | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml" | 
 | 	basePath = "http://www.google.com/even/more" | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = "http://www.google.com/even/more/very/nested/file.yaml" | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml" | 
 | 	basePath = strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "only/file/even/more"}, "/") | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "only/file/even/more/very/nested/file.yaml"}, "/") | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | 	rawPath = "very/nested/file.yaml/" | 
 | 	basePath = strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "only/file/even/more"}, "/") | 
 | 	result, _ = gophercloud.NormalizePathURL(basePath, rawPath) | 
 | 	expected = strings.Join([]string{"file:/", filepath.ToSlash(baseDir), "only/file/even/more/very/nested/file.yaml"}, "/") | 
 | 	th.CheckEquals(t, expected, result) | 
 |  | 
 | } |