diff --git a/tests/wscript b/tests/wscript
index 3ecb2e0..5a21139 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -3,8 +3,8 @@
 
 def build(bld):
     bld.program(
-        target='../unit-tests',
+        target=f'{top}/unit-tests',
         name='unit-tests',
-        source=bld.path.ant_glob(['*.cpp'] + ['%s/**/*.cpp' % tool for tool in bld.env.BUILD_TOOLS]),
-        use=['core-objects'] + ['%s-objects' % tool for tool in bld.env.BUILD_TOOLS],
+        source=bld.path.ant_glob(['*.cpp'] + [f'{tool}/**/*.cpp' for tool in bld.env.BUILD_TOOLS]),
+        use=['core-objects'] + [f'{tool}-objects' for tool in bld.env.BUILD_TOOLS],
         install_path=None)
diff --git a/tools/wscript b/tools/wscript
index b374494..05041e7 100644
--- a/tools/wscript
+++ b/tools/wscript
@@ -6,12 +6,12 @@
 def options(opt):
     for subdir in opt.path.ant_glob('*', dir=True, src=False):
         tool = subdir.path_from(opt.path)
-        opt.add_option('--enable-%s' % tool,
-                       help='Build tool %s (enabled by default)' % tool,
-                       action='store_true', dest='enable_%s' % tool)
-        opt.add_option('--disable-%s' % tool,
-                       help='Do not build tool %s' % tool,
-                       action='store_true', dest='disable_%s' % tool)
+        opt.add_option(f'--enable-{tool}',
+                       help=f'Build tool {tool} (enabled by default)',
+                       action='store_true', dest=f'enable_{tool}')
+        opt.add_option(f'--disable-{tool}',
+                       help=f'Do not build tool {tool}',
+                       action='store_true', dest=f'disable_{tool}')
         opt.recurse(str(tool), mandatory=False)
 
 def configure(conf):
@@ -23,11 +23,11 @@
         tool = subdir.path_from(conf.path)
         all_tools.add(tool)
 
-        is_enabled = getattr(Options.options, 'enable_%s' % tool)
-        is_disabled = getattr(Options.options, 'disable_%s' % tool)
+        is_enabled = getattr(Options.options, f'enable_{tool}')
+        is_disabled = getattr(Options.options, f'disable_{tool}')
 
         if is_enabled and is_disabled:
-            conf.fatal('--enable-%s and --disable-%s cannot be both specified' % (tool, tool))
+            conf.fatal(f'--enable-{tool} and --disable-{tool} cannot be both specified')
 
         if is_enabled:
             enabled_tools.add(tool)
diff --git a/wscript b/wscript
index 99283ed..c6a2fa7 100644
--- a/wscript
+++ b/wscript
@@ -1,7 +1,8 @@
 # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
+import os
+import subprocess
 from waflib import Context, Logs, Utils
-import os, subprocess
 
 VERSION = '22.12'
 APPNAME = 'ndn-tools'
@@ -107,16 +108,16 @@
     # first, try to get a version string from git
     gotVersionFromGit = False
     try:
-        cmd = ['git', 'describe', '--always', '--match', '%s*' % GIT_TAG_PREFIX]
-        out = subprocess.check_output(cmd, universal_newlines=True).strip()
+        cmd = ['git', 'describe', '--always', '--match', f'{GIT_TAG_PREFIX}*']
+        out = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip()
         if out:
             gotVersionFromGit = True
             if out.startswith(GIT_TAG_PREFIX):
                 Context.g_module.VERSION = out.lstrip(GIT_TAG_PREFIX)
             else:
                 # no tags matched
-                Context.g_module.VERSION = '%s-commit-%s' % (VERSION_BASE, out)
-    except (OSError, subprocess.CalledProcessError):
+                Context.g_module.VERSION = f'{VERSION_BASE}-commit-{out}'
+    except (OSError, subprocess.SubprocessError):
         pass
 
     versionFile = ctx.path.find_node('VERSION.info')
@@ -134,14 +135,14 @@
                 # already up-to-date
                 return
         except EnvironmentError as e:
-            Logs.warn('%s exists but is not readable (%s)' % (versionFile, e.strerror))
+            Logs.warn(f'{versionFile} exists but is not readable ({e.strerror})')
     else:
         versionFile = ctx.path.make_node('VERSION.info')
 
     try:
         versionFile.write(Context.g_module.VERSION)
     except EnvironmentError as e:
-        Logs.warn('%s is not writable (%s)' % (versionFile, e.strerror))
+        Logs.warn(f'{versionFile} is not writable ({e.strerror})')
 
 def dist(ctx):
     ctx.algo = 'tar.xz'
