// TODO(sgotti) when the TreeStore will use an interface, change it to a // test implementation without relying on store/imagestore func testStoreWriteACI(dir string, s *imagestore.Store) (string, error) { imj := ` { "acKind": "ImageManifest", "acVersion": "0.8.8", "name": "example.com/test01" } ` entries := []*aci.ACIEntry{ // An empty dir { Header: &tar.Header{ Name: "rootfs/a", Typeflag: tar.TypeDir, }, }, { Contents: "hello", Header: &tar.Header{ Name: "hello.txt", Size: 5, }, }, { Header: &tar.Header{ Name: "rootfs/link.txt", Linkname: "rootfs/hello.txt", Typeflag: tar.TypeSymlink, }, }, // dangling symlink { Header: &tar.Header{ Name: "rootfs/link2.txt", Linkname: "rootfs/missingfile.txt", Typeflag: tar.TypeSymlink, }, }, { Header: &tar.Header{ Name: "rootfs/fifo", Typeflag: tar.TypeFifo, }, }, } aci, err := aci.NewACI(dir, imj, entries) if err != nil { return "", err } defer aci.Close() // Rewind the ACI if _, err := aci.Seek(0, 0); err != nil { return "", err } // Import the new ACI key, err := s.WriteACI(aci, imagestore.ACIFetchInfo{Latest: false}) if err != nil { return "", err } return key, nil }