From eabffed162a3331d8c400127e68d3a83c257155c Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:28:13 +0200 Subject: [PATCH 1/6] run tests with both backends --- test/runtests.jl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 92dc42fa..b5176a0b 100755 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -51,8 +51,18 @@ include("awss3.jl") # creates `s3path_tests(config)` # Set `AWSConfig` as the default for the following tests aws = global_aws_config(AWSConfig()) - @testset "S3" begin - awss3_tests(aws) - s3path_tests(aws) + + prev_backend = AWS.DownloadsBackend[] + for backend in (AWS.HTTPBackend, AWS.DownloadsBackend) + AWS.DEFAULT_BACKEND[] = backend() + try + @testset "S3 with $backend" begin + awss3_tests(aws) + s3path_tests(aws) + end + finally + AWS.DEFAULT_BACKEND[] = prev_backend + end end + end From 81bdd269c661307b30fc0d8bbd7c5ab6c7c7eca3 Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:28:51 +0200 Subject: [PATCH 2/6] fix typo --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index b5176a0b..b2ec12a2 100755 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -51,8 +51,8 @@ include("awss3.jl") # creates `s3path_tests(config)` # Set `AWSConfig` as the default for the following tests aws = global_aws_config(AWSConfig()) - - prev_backend = AWS.DownloadsBackend[] + + prev_backend = AWS.DEFAULT_BACKEND[] for backend in (AWS.HTTPBackend, AWS.DownloadsBackend) AWS.DEFAULT_BACKEND[] = backend() try From 0a65904adac0d36d51226daf42010ececc513547 Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:30:24 +0200 Subject: [PATCH 3/6] Update test/runtests.jl Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- test/runtests.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index b2ec12a2..8245bbd1 100755 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -64,5 +64,4 @@ include("awss3.jl") # creates `s3path_tests(config)` AWS.DEFAULT_BACKEND[] = prev_backend end end - end From 49b30df3434ec935142efb17913c1a102b74258d Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:42:44 +0200 Subject: [PATCH 4/6] add warning --- src/AWSS3.jl | 3 +++ test/awss3.jl | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/AWSS3.jl b/src/AWSS3.jl index c6129b2d..13362bad 100644 --- a/src/AWSS3.jl +++ b/src/AWSS3.jl @@ -217,6 +217,9 @@ end [HEAD Object](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) Retrieves metadata from an object without returning the object itself. + +!!! warning + This function returns the headers from `S3.head_object` as `Dict` of key-value pairs. [HTTP/1.1 headers are case insensitive](https://datatracker.ietf.org/doc/html/rfc2616#section-4.2) while [HTTP/2 headers must be lowercase](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.2). Therefore, the casing of the keys of the returned dict may depend on the HTTP client implementation (e.g. via `AWS.DownloadsBackend` vs `AWS.HTTPBackend`). """ function s3_get_meta( aws::AbstractAWSConfig, bucket, path; version::AbstractS3Version=nothing, kwargs... diff --git a/test/awss3.jl b/test/awss3.jl index 526a212a..4f005062 100644 --- a/test/awss3.jl +++ b/test/awss3.jl @@ -103,7 +103,7 @@ function awss3_tests(config) @testset "default Content-Type" begin # https://github.com/samoconnor/AWSS3.jl/issues/24 - ctype(key) = s3_get_meta(bucket_name, key)["Content-Type"] + ctype(key) = AWSS3.get_robust_case(s3_get_meta(bucket_name, key), "Content-Type") for k in ["file.foo", "file", "file_html", "file.d/html", "foobar.html/file.htm"] is_aws(config) && k == "file" && continue From efbaa2b056b1b2acfbba388958c2f45ad146772a Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:28:45 +0200 Subject: [PATCH 5/6] print error --- test/awss3.jl | 2 +- test/s3path.jl | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/awss3.jl b/test/awss3.jl index 4f005062..fa09ad6b 100644 --- a/test/awss3.jl +++ b/test/awss3.jl @@ -98,7 +98,7 @@ function awss3_tests(config) @testset "Check Metadata" begin meta = s3_get_meta(config, bucket_name, "key1") - @test meta["ETag"] == "\"68bc8898af64159b72f349b391a7ae35\"" + @test get_robust_case(meta, "ETag") == "\"68bc8898af64159b72f349b391a7ae35\"" end @testset "default Content-Type" begin diff --git a/test/s3path.jl b/test/s3path.jl index 7c082842..26c7c1a3 100644 --- a/test/s3path.jl +++ b/test/s3path.jl @@ -631,6 +631,7 @@ function s3path_tests(config) alt_region = prev_config.region == "us-east-2" ? "us-east-1" : "us-east-2" try global_aws_config(; region=alt_region) # this is the wrong region! + read(path, String) @test_throws AWS.AWSException read(path, String) # restore the right region From ca01dc9eee958c4506bb6ad2d55f6b4067c994e1 Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:41:11 +0200 Subject: [PATCH 6/6] make clearer --- test/awss3.jl | 2 +- test/s3path.jl | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/awss3.jl b/test/awss3.jl index fa09ad6b..919de251 100644 --- a/test/awss3.jl +++ b/test/awss3.jl @@ -98,7 +98,7 @@ function awss3_tests(config) @testset "Check Metadata" begin meta = s3_get_meta(config, bucket_name, "key1") - @test get_robust_case(meta, "ETag") == "\"68bc8898af64159b72f349b391a7ae35\"" + @test AWSS3.get_robust_case(meta, "ETag") == "\"68bc8898af64159b72f349b391a7ae35\"" end @testset "default Content-Type" begin diff --git a/test/s3path.jl b/test/s3path.jl index 26c7c1a3..13ddfa3a 100644 --- a/test/s3path.jl +++ b/test/s3path.jl @@ -631,6 +631,7 @@ function s3path_tests(config) alt_region = prev_config.region == "us-east-2" ? "us-east-1" : "us-east-2" try global_aws_config(; region=alt_region) # this is the wrong region! + println("Backend: $(AWS.DEFAULT_BACKEND[])") read(path, String) @test_throws AWS.AWSException read(path, String)