diff --git a/scripts/unit-test.py b/scripts/unit-test.py
index 8895d11..71948d8 100755
--- a/scripts/unit-test.py
+++ b/scripts/unit-test.py
@@ -8,7 +8,7 @@
 """
 
 from git import Repo
-from mesonbuild import optinterpreter
+from mesonbuild import coredata, optinterpreter
 from urllib.parse import urljoin
 from subprocess import check_call, call, CalledProcessError
 import os
@@ -775,6 +775,23 @@
         oi.process(options_file)
         return oi.options
 
+    def _configure_boolean(self, val):
+        """
+        Returns the meson flag which signifies the value
+
+        True is true which requires the boolean.
+        False is false which disables the boolean.
+
+        Parameters:
+        val                 The value being converted
+        """
+        if val is True:
+            return 'true'
+        elif val is False:
+            return 'false'
+        else:
+            raise Exception("Bad meson boolean value")
+
     def _configure_feature(self, val):
         """
         Returns the meson flag which signifies the value
@@ -795,6 +812,23 @@
         else:
             raise Exception("Bad meson feature value")
 
+    def _configure_option(self, opts, key, val):
+        """
+        Returns the meson flag which signifies the value
+        based on the type of the opt
+
+        Parameters:
+        opt                 The meson option which we are setting
+        val                 The value being converted
+        """
+        if isinstance(opts[key], coredata.UserBooleanOption):
+            str_val = self._configure_boolean(val)
+        elif isinstance(opts[key], coredata.UserFeatureOption):
+            str_val = self._configure_feature(val)
+        else:
+            raise Exception('Unknown meson option type')
+        return "-D{}={}".format(key, str_val)
+
     def configure(self, build_for_testing):
         self.build_for_testing = build_for_testing
         meson_options = {}
@@ -810,10 +844,9 @@
         else:
             meson_flags.append('--buildtype=debugoptimized')
         if 'tests' in meson_options:
-            flag_args = self._configure_feature(build_for_testing)
-            meson_flags.append('-Dtests=' + flag_args)
+            meson_flags.append(self._configure_option(meson_options, 'tests', build_for_testing))
         if 'examples' in meson_options:
-            meson_flags.append('-Dexamples=' + str(build_for_testing).lower())
+            meson_flags.append(self._configure_option(meson_options, 'examples', build_for_testing))
         if MESON_FLAGS.get(self.package) is not None:
             meson_flags.extend(MESON_FLAGS.get(self.package))
         try:
