Skip to content

Commit

Permalink
🐛 [filesystem] Made LsRecursive global and changed some function na…
Browse files Browse the repository at this point in the history
…mes (#498)

<!--
Copyright (C) 2020-2022 Arm Limited or its affiliates and Contributors.
All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->
### Description
changed some names and made them global
<!--
Please add any detail or context that would be useful to a reviewer.
-->



### Test Coverage

<!--
Please put an `x` in the correct box e.g. `[x]` to indicate the testing
coverage of this change.
-->

- [x]  This change is covered by existing or additional automated tests.
- [ ] Manual testing has been performed (and evidence provided) as
automated testing was not feasible.
- [ ] Additional tests are not required for this change (e.g.
documentation update).
  • Loading branch information
ERICwangyiquan authored Sep 2, 2024
1 parent 0f57aae commit 6b4057b
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 46 deletions.
1 change: 1 addition & 0 deletions changes/20240902105601.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
:bug: `[filesystem]` Made LsRecursive global and changed some function names to avoid confusion
18 changes: 14 additions & 4 deletions utils/filesystem/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -1128,15 +1128,25 @@ func (fs *VFS) LsWithExclusionPatterns(dir string, exclusionPatterns ...string)
return
}

// LsRecursive lists all files recursively, including subdirectories
func LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error) {
return GetGlobalFileSystem().LsRecursive(ctx, dir, includeDirectories)
}

// LsRecursiveWithExclusionPatterns lists all files and directory (equivalent to ls) but exclude the ones matching the exclusion patterns.
func LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) {
return GetGlobalFileSystem().LsRecursiveWithExclusionPatterns(ctx, dir, includeDirectories, exclusionPatterns...)
}

func (fs *VFS) LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error) {
return fs.LsRecursiveWithExtensionPatternsAndLimits(ctx, dir, NoLimits(), includeDirectories)
return fs.LsRecursiveWithExclusionPatternsAndLimits(ctx, dir, NoLimits(), includeDirectories)
}

func (fs *VFS) LsRecursiveWithExtensionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) {
return fs.LsRecursiveWithExtensionPatternsAndLimits(ctx, dir, NoLimits(), includeDirectories, exclusionPatterns...)
func (fs *VFS) LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) {
return fs.LsRecursiveWithExclusionPatternsAndLimits(ctx, dir, NoLimits(), includeDirectories, exclusionPatterns...)
}

func (fs *VFS) LsRecursiveWithExtensionPatternsAndLimits(ctx context.Context, dir string, limits ILimits, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) {
func (fs *VFS) LsRecursiveWithExclusionPatternsAndLimits(ctx context.Context, dir string, limits ILimits, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) {
err = parallelisation.DetermineContextError(ctx)
if err != nil {
return
Expand Down
28 changes: 14 additions & 14 deletions utils/filesystem/files_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2108,7 +2108,7 @@ func TestLsRecursive(t *testing.T) {
}
}

func TestLsRecursiveWithExtensionPatterns(t *testing.T) {
func TestLsRecursiveWithExclusionPatterns(t *testing.T) {
for _, fsType := range FileSystemTypes {
t.Run("Test LsRecursiveWithExtensionPatterns includes directories with exclusion patterns", func(t *testing.T) {
fs := NewFs(fsType)
Expand All @@ -2122,7 +2122,7 @@ func TestLsRecursiveWithExtensionPatterns(t *testing.T) {
globToRegex("*.jar"),
}

result, err := fs.LsRecursiveWithExtensionPatterns(context.Background(), rootDir, true, exclusionPatterns...)
result, err := fs.LsRecursiveWithExclusionPatterns(context.Background(), rootDir, true, exclusionPatterns...)
require.NoError(t, err)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir3", "dir4", "test1.txt"),
Expand Down Expand Up @@ -2151,7 +2151,7 @@ func TestLsRecursiveWithExtensionPatterns(t *testing.T) {
globToRegex("*.jar"),
}

result, err := fs.LsRecursiveWithExtensionPatterns(context.Background(), rootDir, false, exclusionPatterns...)
result, err := fs.LsRecursiveWithExclusionPatterns(context.Background(), rootDir, false, exclusionPatterns...)
require.NoError(t, err)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir3", "dir4", "test1.txt"),
Expand All @@ -2172,7 +2172,7 @@ func TestLsRecursiveWithExtensionPatterns(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
cancel()

result, err := fs.LsRecursiveWithExtensionPatterns(ctx, rootDir, true)
result, err := fs.LsRecursiveWithExclusionPatterns(ctx, rootDir, true)
errortest.AssertError(t, err, commonerrors.ErrCancelled, commonerrors.ErrTimeout)
assert.Empty(t, result, "Expected no results when context is canceled")
})
Expand All @@ -2182,14 +2182,14 @@ func TestLsRecursiveWithExtensionPatterns(t *testing.T) {

nonExistentDir := filepath.Join(t.TempDir(), "non_existent_dir")

result, err := fs.LsRecursiveWithExtensionPatterns(context.Background(), nonExistentDir, true)
result, err := fs.LsRecursiveWithExclusionPatterns(context.Background(), nonExistentDir, true)
errortest.AssertError(t, err, os.ErrNotExist)
assert.Empty(t, result, "Expected no results when directory does not exist")
})
}
}

func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
func TestLsRecursiveWithExclusionPatternsAndLimits(t *testing.T) {
for _, fsType := range FileSystemTypes {
t.Run("Test LsRecursiveWithExtensionPatternsAndLimits includes directories with enough max depth and enough max file count", func(t *testing.T) {
fs := NewFs(fsType)
Expand All @@ -2199,7 +2199,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
require.NoError(t, err)

limits := &Limits{MaxDepth: 4, MaxFileCount: 10, Recursive: true}
results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, limits, true)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, limits, true)
require.NoError(t, err)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir3", "dir4", "test1.txt"),
Expand All @@ -2226,7 +2226,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
require.NoError(t, err)

limits := &Limits{MaxDepth: 4, MaxFileCount: 10, Recursive: true}
results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, limits, false)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, limits, false)
require.NoError(t, err)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir3", "dir4", "test1.txt"),
Expand All @@ -2252,7 +2252,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
}

limits := &Limits{MaxDepth: 4, MaxFileCount: 5, Recursive: true}
results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, limits, false, exclusionPatterns...)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, limits, false, exclusionPatterns...)
require.NoError(t, err)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir3", "dir4", "test1.txt"),
Expand All @@ -2271,7 +2271,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
require.NoError(t, err)

limits := &Limits{MaxDepth: 3, MaxFileCount: 5, Recursive: true}
results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, limits, false)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, limits, false)
expectedFiles := []string{
filepath.Join(rootDir, "dir2", "dir5", "test4.txt"),
filepath.Join(rootDir, "dir2", "dir5", "test5.jar"),
Expand All @@ -2289,7 +2289,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
require.NoError(t, err)

limits := &Limits{MaxDepth: 4, MaxFileCount: 2, Recursive: true}
results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, limits, false)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, limits, false)
expectedFilesSize := 2

assert.Equal(t, expectedFilesSize, len(results))
Expand All @@ -2303,7 +2303,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
err := generateTestTree(fs, rootDir)
require.NoError(t, err)

results, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), rootDir, nil, true)
results, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), rootDir, nil, true)

errortest.AssertError(t, err, commonerrors.ErrUndefined)
assert.Empty(t, results)
Expand All @@ -2320,7 +2320,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
cancel()

limits := &Limits{MaxDepth: 4, MaxFileCount: 5, Recursive: true}
result, err := fs.LsRecursiveWithExtensionPatternsAndLimits(ctx, rootDir, limits, true)
result, err := fs.LsRecursiveWithExclusionPatternsAndLimits(ctx, rootDir, limits, true)
errortest.AssertError(t, err, commonerrors.ErrCancelled, commonerrors.ErrTimeout)
assert.Empty(t, result, "Expected no results when context is canceled")
})
Expand All @@ -2331,7 +2331,7 @@ func TestLsRecursiveWithExtensionPatternsAndLimits(t *testing.T) {
nonExistentDir := filepath.Join(t.TempDir(), "non_existent_dir")

limits := &Limits{MaxDepth: 4, MaxFileCount: 5, Recursive: true}
result, err := fs.LsRecursiveWithExtensionPatternsAndLimits(context.Background(), nonExistentDir, limits, true)
result, err := fs.LsRecursiveWithExclusionPatternsAndLimits(context.Background(), nonExistentDir, limits, true)
errortest.AssertError(t, err, os.ErrNotExist)
assert.Empty(t, result, "Expected no results when directory does not exist")
})
Expand Down
8 changes: 4 additions & 4 deletions utils/filesystem/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,10 +204,10 @@ type FS interface {
LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error)
// LsWithExclusionPatterns lists all files and directory (equivalent to ls) but exclude the ones matching the exclusion patterns.
LsWithExclusionPatterns(dir string, exclusionPatterns ...string) (files []string, err error)
// LsRecursiveWithExtensionPatterns lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns.
LsRecursiveWithExtensionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error)
// LsRecursiveWithExtensionPatternsAndLimits lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns and add some limits for recursion
LsRecursiveWithExtensionPatternsAndLimits(ctx context.Context, dir string, limit ILimits, includeDirectories bool, exclusionPatterns ...string) (files []string, err error)
// LsRecursiveWithExclusionPatterns lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns.
LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error)
// LsRecursiveWithExclusionPatternsAndLimits lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns and add some limits for recursion
LsRecursiveWithExclusionPatternsAndLimits(ctx context.Context, dir string, limit ILimits, includeDirectories bool, exclusionPatterns ...string) (files []string, err error)
// LsFromOpenedDirectory lists all files and directories (equivalent to ls)
LsFromOpenedDirectory(dir File) (files []string, err error)
// LsRecursiveFromOpenedDirectory lists all files recursively
Expand Down
48 changes: 24 additions & 24 deletions utils/mocks/mock_filesystem.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6b4057b

Please sign in to comment.