suite_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package resource_test
  2. import (
  3. "encoding/json"
  4. "os"
  5. "testing"
  6. "github.com/google/go-containerregistry/pkg/name"
  7. "github.com/google/go-containerregistry/pkg/v1/remote"
  8. . "github.com/onsi/ginkgo"
  9. . "github.com/onsi/gomega"
  10. "github.com/onsi/gomega/gexec"
  11. )
  12. var bins struct {
  13. In string `json:"in"`
  14. Out string `json:"out"`
  15. Check string `json:"check"`
  16. }
  17. var _ = SynchronizedBeforeSuite(func() []byte {
  18. var err error
  19. b := bins
  20. if _, err := os.Stat("/opt/resource/in"); err == nil {
  21. b.In = "/opt/resource/in"
  22. } else {
  23. b.In, err = gexec.Build("github.com/concourse/registry-image-resource/cmd/in")
  24. Expect(err).ToNot(HaveOccurred())
  25. }
  26. if _, err := os.Stat("/opt/resource/out"); err == nil {
  27. b.Out = "/opt/resource/out"
  28. } else {
  29. b.Out, err = gexec.Build("github.com/concourse/registry-image-resource/cmd/out")
  30. Expect(err).ToNot(HaveOccurred())
  31. }
  32. if _, err := os.Stat("/opt/resource/check"); err == nil {
  33. b.Check = "/opt/resource/check"
  34. } else {
  35. b.Check, err = gexec.Build("github.com/concourse/registry-image-resource/cmd/check")
  36. Expect(err).ToNot(HaveOccurred())
  37. }
  38. j, err := json.Marshal(b)
  39. Expect(err).ToNot(HaveOccurred())
  40. return j
  41. }, func(bp []byte) {
  42. err := json.Unmarshal(bp, &bins)
  43. Expect(err).ToNot(HaveOccurred())
  44. })
  45. var _ = AfterSuite(func() {
  46. gexec.CleanupBuildArtifacts()
  47. })
  48. func TestRegistryImageResource(t *testing.T) {
  49. RegisterFailHandler(Fail)
  50. RunSpecs(t, "RegistryImageResource Suite")
  51. }
  52. func latestDigest(ref string) string {
  53. n, err := name.ParseReference(ref, name.WeakValidation)
  54. Expect(err).ToNot(HaveOccurred())
  55. image, err := remote.Image(n)
  56. Expect(err).ToNot(HaveOccurred())
  57. digest, err := image.Digest()
  58. Expect(err).ToNot(HaveOccurred())
  59. return digest.String()
  60. }