diff --git a/scripts/mbedtls_dev/test_data_generation.py b/scripts/mbedtls_dev/test_data_generation.py
index f8e86ed..36c9475 100644
--- a/scripts/mbedtls_dev/test_data_generation.py
+++ b/scripts/mbedtls_dev/test_data_generation.py
@@ -141,8 +141,7 @@
 class TestGenerator:
     """Generate test cases and write to data files."""
     def __init__(self, options) -> None:
-        self.test_suite_directory = self.get_option(options, 'directory',
-                                                    'tests/suites')
+        self.test_suite_directory = options.directory
         # Update `targets` with an entry for each child class of BaseTarget.
         # Each entry represents a file generated by the BaseTarget framework,
         # and enables generating the .data files using the CLI.
@@ -151,11 +150,6 @@
             for subclass in BaseTarget.__subclasses__()
         })
 
-    @staticmethod
-    def get_option(options, name: str, default: T) -> T:
-        value = getattr(options, name, None)
-        return default if value is None else value
-
     def filename_for(self, basename: str) -> str:
         """The location of the data file with the specified base name."""
         return posixpath.join(self.test_suite_directory, basename + '.data')
@@ -189,16 +183,24 @@
                         help='List available targets and exit')
     parser.add_argument('--list-for-cmake', action='store_true',
                         help='Print \';\'-separated list of available targets and exit')
+    # If specified explicitly, this option may be a path relative to the
+    # current directory when the script is invoked. The default value
+    # is relative to the mbedtls root, which we don't know yet. So we
+    # can't set a string as the default value here.
     parser.add_argument('--directory', metavar='DIR',
                         help='Output directory (default: tests/suites)')
-    # The `--directory` option is interpreted relative to the directory from
-    # which the script is invoked, but the default is relative to the root of
-    # the mbedtls tree. The default should not be set above, but instead after
-    # `build_tree.chdir_to_root()` is called.
     parser.add_argument('targets', nargs='*', metavar='TARGET',
                         help='Target file to generate (default: all; "-": none)')
     options = parser.parse_args(args)
+
+    # Change to the mbedtls root, to keep things simple. But first, adjust
+    # command line options that might be relative paths.
+    if options.directory is None:
+        options.directory = 'tests/suites'
+    else:
+        options.directory = os.path.abspath(options.directory)
     build_tree.chdir_to_root()
+
     generator = generator_class(options)
     if options.list:
         for name in sorted(generator.targets):
