Skip to content

Commit

Permalink
Try #129:
Browse files Browse the repository at this point in the history
  • Loading branch information
bors[bot] authored Jan 12, 2021
2 parents b6e0251 + 40d986f commit acac342
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/s3path.jl
Original file line number Diff line number Diff line change
Expand Up @@ -322,17 +322,23 @@ function FilePathsBase.sync(f::Function, src::AbstractPath, dst::S3Path; delete=
end
end

function Base.readdir(fp::S3Path)
function Base.readdir(fp::S3Path; join=false)
if isdir(fp)
k = fp.key
# Only list the files and "dirs" within this S3 "dir"
objects = s3_list_objects(fp.config, fp.bucket, k; delimiter="")

# Only list the basename and not the full key
basenames = unique!([s3_get_name(k, string(o["Key"])) for o in objects])
names = unique!([s3_get_name(k, string(o["Key"])) for o in objects])

# Lexographically sort the results
return sort!(filter!(!isempty, basenames))
sort!(filter!(!isempty, names))

if join
names = [ FilePathsBase.join(fp, name) for name in names]
end

return names
else
throw(ArgumentError("\"$fp\" is not a directory"))
end
Expand Down
10 changes: 10 additions & 0 deletions test/s3path.jl
Original file line number Diff line number Diff line change
Expand Up @@ -272,18 +272,28 @@ end

function verify_files(path::S3Path)
@test readdir(path) == ["emptydir/", "subdir1/", "test_01.txt"]
@test readdir(path; join=true) == [path / "emptydir/", path / "subdir1/", path / "test_01.txt"]
@test readdir(path / "emptydir/") == []
@test readdir(path / "emptydir/"; join=true) == []
@test readdir(path / "subdir1/") == ["subdir2/", "test_02.txt", "test_03.txt"]
@test readdir(path / "subdir1/"; join=true) == [path / "subdir1/" / "subdir2/", path / "subdir1/" / "test_02.txt", path / "subdir1/" / "subdir1/test_03.txt"]
@test readdir(path / "subdir1/subdir2/") == ["subdir3/", "test_04.txt"]
@test readdir(path / "subdir1/subdir2/"; join=true) == [path / "subdir1/subdir2/" / "subdir3/", path / "subdir1/subdir2/" / "test_04.txt"]
@test readdir(path / "subdir1/subdir2/subdir3/") == []
@test readdir(path / "subdir1/subdir2/subdir3/"; join=true) == []
end

function verify_files(path::AbstractPath)
@test readdir(path) == ["emptydir", "subdir1", "test_01.txt"]
VERSION >= v"1.4.0" && @test readdir(path; join=true) == [path / "emptydir", path / "subdir1", path / "test_01.txt"]
@test readdir(path / "emptydir/") == []
VERSION >= v"1.4.0" && @test readdir(path / "emptydir/"; join=true) == []
@test readdir(path / "subdir1/") == ["subdir2", "test_02.txt", "test_03.txt"]
VERSION >= v"1.4.0" && @test readdir(path / "subdir1/"; join=true) == [path / "subdir1" / "subdir2", path / "subdir1" / "test_02.txt", path / "subdir1/" / "subdir1/test_03.txt"]
@test readdir(path / "subdir1/subdir2/") == ["subdir3", "test_04.txt"]
VERSION >= v"1.4.0" && @test readdir(path / "subdir1/subdir2/"; join=true) == [path / "subdir1/subdir2/" / "subdir3", path / "subdir1/subdir2/" / "test_04.txt"]
@test readdir(path / "subdir1/subdir2/subdir3/") == []
VERSION >= v"1.4.0" && @test readdir(path / "subdir1/subdir2/subdir3/"; join=true) == []
end

initialize()
Expand Down

0 comments on commit acac342

Please sign in to comment.