diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index f32cead41960832f9a7ec0c6ebf8018432ace5a9..84c1ab077fd7cea11659b9e6d5314c3af7e22b7b 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -645,7 +645,7 @@ jobs:
       - name: Process licenses
         run: |
           . venv/bin/activate
-          python -m script.licenses
+          python -m script.licenses licenses.json
 
   pylint:
     name: Check pylint
@@ -819,7 +819,7 @@ jobs:
       fail-fast: false
       matrix:
         python-version: ${{ fromJson(needs.info.outputs.python_versions) }}
-    name: Split tests for full run ${{ matrix.python-version }}
+    name: Split tests for full run Python ${{ matrix.python-version }}
     steps:
       - name: Install additional OS dependencies
         run: |
diff --git a/script/licenses.py b/script/licenses.py
index f39dcf13c143531f2c45570584c99939918cd377..7a2ddc814de0a9fb192c066ab1016f982d91738f 100644
--- a/script/licenses.py
+++ b/script/licenses.py
@@ -2,6 +2,8 @@
 
 from __future__ import annotations
 
+from argparse import ArgumentParser
+from collections.abc import Sequence
 from dataclasses import dataclass
 import json
 from pathlib import Path
@@ -174,11 +176,24 @@ TODO = {
 }
 
 
-def main() -> int:
+def main(argv: Sequence[str] | None = None) -> int:
     """Run the main script."""
-    raw_licenses = json.loads(Path("licenses.json").read_text())
-    package_definitions = [PackageDefinition.from_dict(data) for data in raw_licenses]
     exit_code = 0
+
+    parser = ArgumentParser()
+    parser.add_argument(
+        "path",
+        nargs="?",
+        metavar="PATH",
+        default="licenses.json",
+        help="Path to json licenses file",
+    )
+
+    argv = argv or sys.argv[1:]
+    args = parser.parse_args(argv)
+
+    raw_licenses = json.loads(Path(args.path).read_text())
+    package_definitions = [PackageDefinition.from_dict(data) for data in raw_licenses]
     for package in package_definitions:
         previous_unapproved_version = TODO.get(package.name)
         approved = False