Skip to content

Commit 54a5f67

Browse files
committed
fix(s3): Update operator tests to work with full key paths
1 parent d4bfa3d commit 54a5f67

File tree

3 files changed

+13
-18
lines changed

3 files changed

+13
-18
lines changed

airflow_dbt_python/hooks/backends/s3.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def push_many(
121121
all_files = Path(source).glob("**/*")
122122

123123
if delete_before:
124-
keys = self.hook.list_keys(bucket_name)
124+
keys = self.hook.list_keys(bucket_name, prefix=key)
125125
self.hook.delete_objects(bucket_name, keys)
126126

127127
if key.endswith(".zip"):
@@ -230,6 +230,10 @@ def load_file_handle_replace_error(
230230
success = True
231231

232232
if bucket_name is None:
233+
# We can't call S3Hook.load_file with bucket_name=None as it checks for the
234+
# presence of the parameter to decide whether setting a bucket_name is
235+
# required. By passing bucket_name=None, the parameter is set, and
236+
# 'None' will be used as the bucket name.
233237
bucket_name, key = self.hook.parse_s3_url(key)
234238

235239
self.log.info("Loading file %s to S3: %s", file_path, key)

tests/operators/test_dbt_clean.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ def test_dbt_clean_after_compile_in_s3(
100100
# Run compile first to ensure a target/ directory exists to be cleaned
101101
comp.execute({})
102102

103-
keys = s3_hook.list_keys(s3_bucket, f"s3://{s3_bucket}/project/target")
103+
keys = s3_hook.list_keys(s3_bucket, prefix="project/target")
104104
assert len(keys) > 0
105105

106106
clean_result = op.execute({})
107107

108108
assert clean_result is None
109109

110-
keys = s3_hook.list_keys(s3_bucket, f"s3://{s3_bucket}/project/target")
110+
keys = s3_hook.list_keys(s3_bucket, prefix="project/target")
111111
assert len(keys) == 0

tests/operators/test_dbt_docs_generate.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,13 @@ def test_dbt_docs_generate_push_to_s3(
9393
)
9494

9595
# Ensure we are working with an empty target in S3.
96-
keys = s3_hook.list_keys(
97-
s3_bucket,
98-
f"s3://{s3_bucket}/project/target/",
99-
)
96+
keys = s3_hook.list_keys(s3_bucket, "project/target")
10097
if keys is not None and len(keys) > 0:
10198
s3_hook.delete_objects(
10299
s3_bucket,
103100
keys,
104101
)
105-
keys = s3_hook.list_keys(
106-
s3_bucket,
107-
f"s3://{s3_bucket}/project/target/",
108-
)
102+
keys = s3_hook.list_keys(s3_bucket, "project/target")
109103
assert keys is None or len(keys) == 0
110104

111105
op = DbtDocsGenerateOperator(
@@ -117,10 +111,7 @@ def test_dbt_docs_generate_push_to_s3(
117111
results = op.execute({})
118112
assert results is not None
119113

120-
keys = s3_hook.list_keys(
121-
s3_bucket,
122-
f"s3://{s3_bucket}/project/target/",
123-
)
124-
assert f"s3://{s3_bucket}/project/target/manifest.json" in keys
125-
assert f"s3://{s3_bucket}/project/target/catalog.json" in keys
126-
assert f"s3://{s3_bucket}/project/target/index.html" in keys
114+
keys = s3_hook.list_keys(s3_bucket)
115+
assert f"project/target/manifest.json" in keys
116+
assert f"project/target/catalog.json" in keys
117+
assert f"project/target/index.html" in keys

0 commit comments

Comments
 (0)