})

		Context("when getting the data directories fails", func() {
			It("returns an error", func() {
				os.RemoveAll(tmpInstanceDataDir)

				_, err := repo.InstanceCount()
				Ω(err).To(HaveOccurred())
			})
		})
	})

	Describe("AllInstances", func() {
		Context("when there are no instances", func() {
			It("returns an empty instance slice", func() {
				instances, err := repo.AllInstances()
				Ω(err).ToNot(HaveOccurred())
				Ω(instances).To(BeEmpty())
			})
		})

		Context("when there are some instances", func() {
			It("contains created instances", func() {
				instance := newTestInstance(instanceID, repo)

				instances, err := repo.AllInstances()
				Ω(err).ToNot(HaveOccurred())
				Ω(instances).To(ContainElement(instance))
			})
		})
					Ω(instances).To(ContainElement(instance))
				})

				It("logs the instance count", func() {
					Expect(logger).To(gbytes.Say("1 shared Redis instance found"))
				})

				It("logs the ID of the instance", func() {
					Expect(logger).To(gbytes.Say(fmt.Sprintf("Found shared instance: %s", instance.ID)))
				})
			})

			Context("when getting one repo ID fails", func() {
				BeforeEach(func() {
					os.Remove(repo.InstanceConfigPath(instance.ID))
					_, errs = repo.AllInstances()
				})

				It("returns one error", func() {
					Expect(len(errs)).To(Equal(1))
					Expect(errs[0]).To(HaveOccurred())
				})

				It("logs the error", func() {
					Expect(logger).To(gbytes.Say(errs[0].Error()))
					Expect(logger).To(gbytes.Say(fmt.Sprintf("Error getting instance details for instance ID: %s", instanceID)))
				})
			})
		})

		Context("when there are several instances", func() {