From adecb13ed706370e1e0b33a195210da1047cce4f Mon Sep 17 00:00:00 2001 From: Samuel Date: Thu, 16 Apr 2026 23:48:22 -0400 Subject: [PATCH] Fix trailing hyphen in resource_filename when name ends with slugified extension --- ckanapi/datapackage.py | 3 +-- ckanapi/tests/test_datapackage.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ckanapi/datapackage.py b/ckanapi/datapackage.py index f3e1a00..5fe91dc 100644 --- a/ckanapi/datapackage.py +++ b/ckanapi/datapackage.py @@ -81,12 +81,11 @@ def create_datapackage(record, base_path, stderr, apikey): def resource_filename(dres): - # prefer resource names from datapackage metadata, because those have been - # made unique name = dres['name'] ext = slugify.slugify(dres['format']) if name.endswith(ext): name = name[:-len(ext)] + name = name.rstrip('-.') # fix: remove trailing hyphen or dot return name + '.' + ext diff --git a/ckanapi/tests/test_datapackage.py b/ckanapi/tests/test_datapackage.py index 3984ab9..7e68cff 100644 --- a/ckanapi/tests/test_datapackage.py +++ b/ckanapi/tests/test_datapackage.py @@ -258,7 +258,29 @@ def test_simple(self): filename = resource_filename(dres=datapackage_resource) assert filename == u'image-1.png' + +class TestResourceFilename(unittest.TestCase): + def test_simple(self): + datapackage_resource = { + u'title': u'Image 1', + u'name': u'image-1', + u'format': u'PNG' + } + + filename = resource_filename(dres=datapackage_resource) + + assert filename == u'image-1.png' + + def test_no_trailing_hyphen_before_extension(self): + datapackage_resource = { + u'title': u'S_ptarmigan_counts_readme.pdf', + u'name': u's-ptarmigan-counts-readme-pdf', + u'format': u'PDF' + } + + filename = resource_filename(dres=datapackage_resource) + assert filename == u's-ptarmigan-counts-readme.pdf' class TestPopulateSchemaFromDatastore(unittest.TestCase): def test_simple(self):