refactor: Disable broken symlink implementation for now to prepare for table-based reimplementation

This commit is contained in:
Felicitas Pojtinger
2022-01-20 23:48:59 +01:00
parent 204ed0b247
commit 9370ee4dd4
7 changed files with 867 additions and 868 deletions
+74 -73
View File
@@ -1472,93 +1472,94 @@ var readTests = []struct {
false,
false,
},
{
"Can not read /brokensymlink into non-empty buffer",
"/brokensymlink",
true,
func(f afero.Fs) error {
symFs, ok := f.(symFs)
if !ok {
return nil
}
// FIXME: Handle linkname
// {
// "Can not read /brokensymlink into non-empty buffer",
// "/brokensymlink",
// true,
// func(f afero.Fs) error {
// symFs, ok := f.(symFs)
// if !ok {
// return nil
// }
if err := symFs.SymlinkIfPossible("/mydir", "/brokensymlink"); err != nil {
return err
}
// if err := symFs.SymlinkIfPossible("/mydir", "/brokensymlink"); err != nil {
// return err
// }
return nil
},
func(f afero.File) error {
gotContent := make([]byte, 10)
// return nil
// },
// func(f afero.File) error {
// gotContent := make([]byte, 10)
if _, err := f.Read(gotContent); err != io.EOF {
return err
}
// if _, err := f.Read(gotContent); err != io.EOF {
// return err
// }
return nil
},
true,
true,
false,
false,
},
{
"Can read /existingsymlink into non-empty buffer without readlink",
"/existingsymlink",
false,
func(f afero.Fs) error {
symFs, ok := f.(symFs)
if !ok {
return nil
}
// return nil
// },
// true,
// true,
// false,
// false,
// },
// {
// "Can read /existingsymlink into non-empty buffer without readlink",
// "/existingsymlink",
// false,
// func(f afero.Fs) error {
// symFs, ok := f.(symFs)
// if !ok {
// return nil
// }
file, err := f.Create("/test.txt")
if err != nil {
return err
}
// file, err := f.Create("/test.txt")
// if err != nil {
// return err
// }
r := newDeterministicReader(1000)
// r := newDeterministicReader(1000)
if _, err := io.Copy(file, r); err != nil {
return err
}
// if _, err := io.Copy(file, r); err != nil {
// return err
// }
if err := file.Close(); err != nil {
return err
}
// if err := file.Close(); err != nil {
// return err
// }
if err := symFs.SymlinkIfPossible("/test.txt", "/existingsymlink"); err != nil {
return err
}
// if err := symFs.SymlinkIfPossible("/test.txt", "/existingsymlink"); err != nil {
// return err
// }
return nil
},
func(f afero.File) error {
wantHash := "HTUi7GuNreHASha4hhl1xwuYk03pyTJ0IJbFLv04UdccT9m_NA2oBFTrnMxJhEu3VMGxDYk_04Th9C0zOj5MyA=="
wantLength := int64(32800768)
// return nil
// },
// func(f afero.File) error {
// wantHash := "HTUi7GuNreHASha4hhl1xwuYk03pyTJ0IJbFLv04UdccT9m_NA2oBFTrnMxJhEu3VMGxDYk_04Th9C0zOj5MyA=="
// wantLength := int64(32800768)
hasher := sha512.New()
gotLength, err := io.Copy(hasher, f)
if err != nil {
return err
}
gotHash := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
// hasher := sha512.New()
// gotLength, err := io.Copy(hasher, f)
// if err != nil {
// return err
// }
// gotHash := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
if gotLength != wantLength {
return fmt.Errorf("invalid read length, got %v, want %v", gotLength, wantLength)
}
// if gotLength != wantLength {
// return fmt.Errorf("invalid read length, got %v, want %v", gotLength, wantLength)
// }
if gotHash != wantHash {
return fmt.Errorf("invalid read hash, got %v, want %v", gotHash, wantHash)
}
// if gotHash != wantHash {
// return fmt.Errorf("invalid read hash, got %v, want %v", gotHash, wantHash)
// }
return nil
},
true,
false, // FIXME: This should not be required and BasePathFs fails if it is used
false, // FIXME: Allow resolving symlinks without using readlink`, which is what `BasePathFs` supports`
true,
},
// return nil
// },
// true,
// false, // FIXME: This should not be required and BasePathFs fails if it is used
// false, // FIXME: Allow resolving symlinks without using readlink`, which is what `BasePathFs` supports`
// true,
// },
}
func TestFile_Read(t *testing.T) {
+726 -726
View File
File diff suppressed because it is too large Load Diff
+16 -11
View File
@@ -6,6 +6,7 @@ package persisters
import (
"context"
"database/sql"
"errors"
"fmt"
"path"
"path/filepath"
@@ -218,17 +219,21 @@ func (p *MetadataPersister) GetHeader(ctx context.Context, name string) (*config
}
func (p *MetadataPersister) GetHeaderByLinkname(ctx context.Context, linkname string) (*config.Header, error) {
linkname = p.getSanitizedPath(ctx, linkname)
return nil, errors.New("not implemented")
hdr, err := models.Headers(
qm.Where(models.HeaderColumns.Linkname+" = ?", linkname),
qm.Where(models.HeaderColumns.Deleted+" != 1"),
).One(ctx, p.sqlite.DB)
if err != nil {
return nil, err
}
// FIXME: Handle linkname
return converters.DBHeaderToConfigHeader(hdr), nil
// linkname = p.getSanitizedPath(ctx, linkname)
// hdr, err := models.Headers(
// qm.Where(models.HeaderColumns.Linkname+" = ?", linkname),
// qm.Where(models.HeaderColumns.Deleted+" != 1"),
// ).One(ctx, p.sqlite.DB)
// if err != nil {
// return nil, err
// }
// return converters.DBHeaderToConfigHeader(hdr), nil
}
func (p *MetadataPersister) GetHeaderChildren(ctx context.Context, name string) ([]*config.Header, error) {
@@ -290,7 +295,7 @@ func (p *MetadataPersister) GetHeaderDirectChildren(ctx context.Context, name st
getHeaders := func(prefix string) ([]*config.Header, error) {
query := fmt.Sprintf(
`select %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v,
`select %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v,
length(replace(%v, ?, '')) - length(replace(replace(%v, ?, ''), '/', '')) as depth
from %v
where %v like ?
@@ -310,7 +315,7 @@ where %v like ?
models.HeaderColumns.Deleted,
models.HeaderColumns.Typeflag,
models.HeaderColumns.Name,
models.HeaderColumns.Linkname,
// models.HeaderColumns.Linkname, // FIXME: Handle linkname
models.HeaderColumns.Size,
models.HeaderColumns.Mode,
models.HeaderColumns.UID,