summary refs log tree commit diff
path: root/clients/tests/test-client.py
diff options
context:
space:
mode:
Diffstat (limited to 'clients/tests/test-client.py')
-rwxr-xr-xclients/tests/test-client.py377
1 files changed, 223 insertions, 154 deletions
diff --git a/clients/tests/test-client.py b/clients/tests/test-client.py
index 74225ccf..e8f1f7f2 100755
--- a/clients/tests/test-client.py
+++ b/clients/tests/test-client.py
@@ -141,6 +141,15 @@ class Util:
             t = basestring
         return isinstance(s, t)
 
+    @staticmethod
+    def memoize_nullary(nullary_func):
+        result = []
+        def closure():
+            if not result:
+                result.append(nullary_func())
+            return result[0]
+        return closure
+
     _find_unsafe = re.compile(r'[^\w@%+=:,./-]',
                               re.ASCII if sys.version_info[0] >= 3 else 0).search
 
@@ -235,7 +244,9 @@ class Util:
             for fmt in [[],
                         ['--pretty'],
                         ['--terse']]:
-                yield mode + fmt
+                for color in [[],
+                              ['--color', 'yes']]:
+                    yield mode + fmt + color
 
 ###############################################################################
 
@@ -417,13 +428,39 @@ class AsyncProcess():
 
 ###############################################################################
 
-file_list = []
-
 class NmTestBase(unittest.TestCase):
     pass
 
 class TestNmcli(NmTestBase):
 
+    @staticmethod
+    def _read_expected(filename):
+        results_expect = []
+        content_expect = Util.file_read(filename)
+        try:
+            base_idx = 0
+            size_prefix = 'size: '.encode('utf8')
+            while True:
+                if not content_expect[base_idx:base_idx + 10].startswith(size_prefix):
+                    raise Exception("Unexpected token")
+                j = base_idx + len(size_prefix)
+                i = j
+                if Util.python_has_version(3, 0):
+                    eol = ord('\n')
+                else:
+                    eol = '\n'
+                while content_expect[i] != eol:
+                    i += 1
+                i = i + 1 + int(content_expect[j:i])
+                results_expect.append(content_expect[base_idx:i])
+                if len(content_expect) == i:
+                    break
+                base_idx = i
+        except Exception as e:
+            results_expect = None
+
+        return content_expect, results_expect
+
     def call_nmcli_l(self,
                      args,
                      check_on_disk = _DEFAULT_ARG,
@@ -552,6 +589,7 @@ class TestNmcli(NmTestBase):
         env['LIBNM_USE_SESSION_BUS'] = '1'
         env['LIBNM_USE_NO_UDEV'] = '1'
         env['TERM'] = 'linux'
+        env['XDG_CONFIG_HOME'] = PathConfiguration.srcdir()
         if fatal_warnings is _DEFAULT_ARG or fatal_warnings:
             env['G_DEBUG'] = 'fatal-warnings'
 
@@ -616,56 +654,29 @@ class TestNmcli(NmTestBase):
                 if expected_returncode is None:
                    self.assertEqual(returncode, -5)
 
-            dirname = PathConfiguration.srcdir() + '/test-client.check-on-disk'
-            basename = test_name + '.expected'
-            filename = os.path.abspath(dirname + '/' + basename)
+            if check_on_disk:
+                cmd = '$NMCLI %s' % (' '.join([Util.quote(a) for a in args[1:]])),
 
-            if not check_on_disk:
-                if os.path.exists(filename):
-                    self.fail("The file '%s' exists, although we expect it not to." % (filename))
-                return
-
-            file_list.append(basename)
-
-            content_old = Util.file_read(filename)
-
-            content_new = ('location: %s\n' % (calling_location)).encode('utf8') + \
-                          ('cmd: $NMCLI %s\n' % (' '.join([Util.quote(a) for a in args[1:]]))).encode('utf8') + \
+                content = ('location: %s\n' % (calling_location)).encode('utf8') + \
+                          ('cmd: %s\n' % (cmd)).encode('utf8') + \
                           ('lang: %s\n' % (lang)).encode('utf8') + \
-                          ('returncode: %d\n' % (returncode)).encode('utf8') + \
-                          ('stdout: %d bytes\n>>>\n' % (len(stdout))).encode('utf8') + \
-                          stdout + \
-                          ('\n<<<\nstderr: %d bytes\n>>>\n' % (len(stderr))).encode('utf8') + \
-                          stderr + \
-                          '\n<<<\n'.encode('utf8')
-
-            w = conf.get(ENV_NM_TEST_REGENERATE)
-
-            if content_old is not None:
-                if content_old == content_new:
-                    return
-
-                if not w:
-                    if ignore_l10n_diff:
-                        self._skip_test_for_l10n_diff.append(test_name)
-                        return
-                    print("\n\n\nThe file '%s' does not have the expected content:" % (filename))
-                    print("ACTUAL OUTPUT:\n[[%s]]\n" % (content_new))
-                    print("EXPECT OUTPUT:\n[[%s]]\n" % (content_old))
-                    print("Let the test write the file by rerunning with NM_TEST_REGENERATE=1")
-                    print("See howto in %s for details.\n" % (PathConfiguration.canonical_script_filename()))
-                    raise AssertionError("Unexpected output of command, expected %s. Rerun test with NM_TEST_REGENERATE=1 to regenerate files" % (filename))
-            else:
-                if not w:
-                    self.fail("The file '%s' does not exist. Let the test write the file by rerunning with NM_TEST_REGENERATE=1" % (filename))
-
-            try:
-                if not os.path.exists(dirname):
-                    os.makedirs(dirname)
-                with open(filename, 'wb') as content_file:
-                    content_file.write(content_new)
-            except Exception as e:
-                self.fail("Failure to write '%s': %s" % (filename, e))
+                          ('returncode: %d\n' % (returncode)).encode('utf8')
+                if len(stdout) > 0:
+                    content += ('stdout: %d bytes\n>>>\n' % (len(stdout))).encode('utf8') + \
+                               stdout + \
+                               '\n<<<\n'.encode('utf8')
+                if len(stderr) > 0:
+                    content += ('stderr: %d bytes\n>>>\n' % (len(stderr))).encode('utf8') + \
+                               stderr + \
+                               '\n<<<\n'.encode('utf8')
+                content = ('size: %s\n' % (len(content))).encode('utf8') + \
+                          content
+
+                self._results.append({
+                    'test_name'        : test_name,
+                    'ignore_l10n_diff' : ignore_l10n_diff,
+                    'content'          : content,
+                })
 
         async_job = AsyncProcess(args = args,
                                  env = env,
@@ -688,31 +699,94 @@ class TestNmcli(NmTestBase):
             self.async_start()
             self._async_jobs.pop(0).wait()
 
-    def setUp(self):
-        if not dbus_session_inited:
-            self.skipTest("Own D-Bus session for testing is not initialized. Do you have dbus-run-session available?")
-        if NM is None:
-            self.skipTest("gi.NM is not available. Did you build with introspection?")
-        self.srv = NMStubServer(self._testMethodName)
+    def _nm_test_pre(self):
         self._calling_num = {}
         self._skip_test_for_l10n_diff = []
         self._async_jobs = []
+        self._results = []
+
+        self.srv = NMStubServer(self._testMethodName)
+
+    def _nm_test_post(self):
 
-    def tearDown(self):
         self.async_wait()
+
         self.srv.shutdown()
         self.srv = None
+
         self._calling_num = None
-        if self._skip_test_for_l10n_diff:
+
+        results = self._results
+        self._results = None
+
+        skip_test_for_l10n_diff = self._skip_test_for_l10n_diff
+        self._skip_test_for_l10n_diff = None
+
+        test_name = self._testMethodName
+
+        filename = os.path.abspath(PathConfiguration.srcdir() + '/test-client.check-on-disk/' + test_name + '.expected')
+
+        regenerate = conf.get(ENV_NM_TEST_REGENERATE)
+
+        content_expect, results_expect = self._read_expected(filename)
+
+        if results_expect is None:
+            if not regenerate:
+                self.fail("Failed to parse expected file '%s'. Let the test write the file by rerunning with NM_TEST_REGENERATE=1" % (filename))
+        else:
+            for i in range(0, min(len(results_expect), len(results))):
+                n = results[i]
+                if results_expect[i] == n['content']:
+                    continue
+                if regenerate:
+                    continue
+                if n['ignore_l10n_diff']:
+                    skip_test_for_l10n_diff.append(n['test_name'])
+                    continue
+                print("\n\n\nThe file '%s' does not have the expected content:" % (filename))
+                print("ACTUAL OUTPUT:\n[[%s]]\n" % (results_expect[i]))
+                print("EXPECT OUTPUT:\n[[%s]]\n" % (n['content']))
+                print("Let the test write the file by rerunning with NM_TEST_REGENERATE=1")
+                print("See howto in %s for details.\n" % (PathConfiguration.canonical_script_filename()))
+                self.fail("Unexpected output of command, expected %s. Rerun test with NM_TEST_REGENERATE=1 to regenerate files" % (filename))
+            if len(results_expect) != len(results):
+                if not regenerate:
+                    print("\n\n\nThe number of tests in %s does not match the expected content (%s vs %s):" % (filename,  len(results_expect), len(results)))
+                    if len(results_expect) < len(results):
+                        print("ACTUAL OUTPUT:\n[[%s]]\n" % (results[len(results_expect)]['content']))
+                    else:
+                        print("EXPECT OUTPUT:\n[[%s]]\n" % (results_expect[len(results)]))
+                    print("Let the test write the file by rerunning with NM_TEST_REGENERATE=1")
+                    print("See howto in %s for details.\n" % (PathConfiguration.canonical_script_filename()))
+                    self.fail("Unexpected output of command, expected %s. Rerun test with NM_TEST_REGENERATE=1 to regenerate files" % (filename))
+
+        if regenerate:
+            content_new = ''.join([r['content'] for r in results])
+            if content_new != content_expect:
+                try:
+                    with open(filename, 'wb') as content_file:
+                        content_file.write(content_new)
+                except Exception as e:
+                    self.fail("Failure to write '%s': %s" % (filename, e))
+
+        if skip_test_for_l10n_diff:
             # nmcli loads translations from the installation path. This failure commonly
             # happens because you did not install the binary in the --prefix, before
             # running the test. Hence, translations are not available or differ.
-            msg = "Skipped asserting for localized tests %s. Set NM_TEST_CLIENT_CHECK_L10N=1 to force fail." % (','.join(self._skip_test_for_l10n_diff))
-            if Util.python_has_version(3):
-                # python2 does not suppot skipping the test during tearDown()
-                self.skipTest(msg)
-            print(msg + "\n")
-        self._skip_test_for_l10n_diff = None
+            self.skipTest("Skipped asserting for localized tests %s. Set NM_TEST_CLIENT_CHECK_L10N=1 to force fail." % (','.join(skip_test_for_l10n_diff)))
+
+    def nm_test(func):
+        def f(self):
+            self._nm_test_pre()
+            func(self)
+            self._nm_test_post()
+        return f
+
+    def setUp(self):
+        if not dbus_session_inited:
+            self.skipTest("Own D-Bus session for testing is not initialized. Do you have dbus-run-session available?")
+        if NM is None:
+            self.skipTest("gi.NM is not available. Did you build with introspection?")
 
     def init_001(self):
         self.srv.op_AddObj('WiredDevice',
@@ -747,6 +821,7 @@ class TestNmcli(NmTestBase):
                                     },
                                 })
 
+    @nm_test
     def test_001(self):
 
         self.call_nmcli_l([])
@@ -760,6 +835,7 @@ class TestNmcli(NmTestBase):
         for mode in Util.iter_nmcli_output_modes():
             self.call_nmcli_l(mode + ['general', 'permissions'])
 
+    @nm_test
     def test_002(self):
         self.init_001()
 
@@ -782,12 +858,13 @@ class TestNmcli(NmTestBase):
 
         self.call_nmcli_l(['c', 's', 'con-1'])
 
+    @nm_test
     def test_003(self):
         self.init_001()
 
         replace_stdout = []
 
-        replace_stdout.append((lambda: self.srv.findConnectionUuid('con-xx1'), 'UUID-con-xx1-REPLACED-REPLACED-REPLA'))
+        replace_stdout.append((Util.memoize_nullary(lambda: self.srv.findConnectionUuid('con-xx1')), 'UUID-con-xx1-REPLACED-REPLACED-REPLA'))
 
         self.call_nmcli(['c', 'add', 'type', 'ethernet', 'ifname', '*', 'con-name', 'con-xx1'],
                         replace_stdout = replace_stdout)
@@ -795,7 +872,12 @@ class TestNmcli(NmTestBase):
         self.call_nmcli_l(['c', 's'],
                           replace_stdout = replace_stdout)
 
-        replace_stdout.append((lambda: self.srv.findConnectionUuid('ethernet'), 'UUID-ethernet-REPLACED-REPLACED-REPL'))
+        replace_stdout.append((Util.memoize_nullary(lambda: self.srv.findConnectionUuid('con-gsm1')), 'UUID-con-gsm1-REPLACED-REPLACED-REPL'))
+
+        self.call_nmcli(['connection', 'add', 'type', 'gsm', 'autoconnect', 'no', 'con-name', 'con-gsm1', 'ifname', '*', 'apn', 'xyz.con-gsm1', 'serial.baud', '5', 'serial.send-delay', '100', 'serial.pari', '1'],
+                        replace_stdout = replace_stdout)
+
+        replace_stdout.append((Util.memoize_nullary(lambda: self.srv.findConnectionUuid('ethernet')), 'UUID-ethernet-REPLACED-REPLACED-REPL'))
 
         self.call_nmcli(['c', 'add', 'type', 'ethernet', 'ifname', '*'],
                         replace_stdout = replace_stdout)
@@ -810,6 +892,9 @@ class TestNmcli(NmTestBase):
                           replace_stdout = replace_stdout,
                           sort_lines_stdout = True)
 
+        self.call_nmcli_l(['con', 's', 'con-gsm1'],
+                          replace_stdout = replace_stdout)
+
         # activate the same profile on multiple devices. Our stub-implmentation
         # is fine with that... although NetworkManager service would reject
         # such a configuration by deactivating the profile first. But note that
@@ -867,45 +952,29 @@ class TestNmcli(NmTestBase):
                 self.async_wait()
                 self.srv.op_ConnectionSetVisible(False, con_id = 'ethernet')
 
-            self.call_nmcli_l(['-f', 'ALL', 'con'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['-f', 'UUID,TYPE', 'con'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', 'con'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--terse', 'con'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'multiline', '--pretty', 'con'],
-                              replace_stdout = replace_stdout)
+            for mode in Util.iter_nmcli_output_modes():
+                self.call_nmcli_l(mode + ['-f', 'ALL', 'con'],
+                                  replace_stdout = replace_stdout)
 
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', 'con'],
-                              replace_stdout = replace_stdout)
+                self.call_nmcli_l(mode + ['-f', 'UUID,TYPE', 'con'],
+                                  replace_stdout = replace_stdout)
 
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--terse', 'con'],
-                              replace_stdout = replace_stdout)
+                self.call_nmcli_l(mode + ['con', 's', 'ethernet'],
+                                  replace_stdout = replace_stdout)
 
-            self.call_nmcli_l(['-f', 'UUID,TYPE', '--mode', 'tabular', '--pretty', 'con'],
-                              replace_stdout = replace_stdout)
+                self.call_nmcli_l(mode + ['c', 's', '/org/freedesktop/NetworkManager/ActiveConnection/1'],
+                                  replace_stdout = replace_stdout)
 
-            self.call_nmcli_l(['con', 's', 'ethernet'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['c', 's', '/org/freedesktop/NetworkManager/ActiveConnection/1'],
-                              replace_stdout = replace_stdout)
-
-            self.call_nmcli_l(['-f', 'all', 'dev', 'show', 'eth0'],
-                              replace_stdout = replace_stdout)
+                self.call_nmcli_l(mode + ['-f', 'all', 'dev', 'show', 'eth0'],
+                                  replace_stdout = replace_stdout)
 
+    @nm_test
     def test_004(self):
         self.init_001()
 
         replace_stdout = []
 
-        replace_stdout.append((lambda: self.srv.findConnectionUuid('con-xx1'), 'UUID-con-xx1-REPLACED-REPLACED-REPLA'))
+        replace_stdout.append((Util.memoize_nullary(lambda: self.srv.findConnectionUuid('con-xx1')), 'UUID-con-xx1-REPLACED-REPLACED-REPLA'))
 
         self.call_nmcli(['c', 'add', 'type', 'wifi', 'ifname', '*', 'ssid', 'foobar', 'con-name', 'con-xx1'],
                         replace_stdout = replace_stdout)
@@ -921,7 +990,7 @@ class TestNmcli(NmTestBase):
 
         self.async_wait()
 
-        replace_stdout.append((lambda: self.srv.findConnectionUuid('con-vpn-1'), 'UUID-con-vpn-1-REPLACED-REPLACED-REP'))
+        replace_stdout.append((Util.memoize_nullary(lambda: self.srv.findConnectionUuid('con-vpn-1')), 'UUID-con-vpn-1-REPLACED-REPLACED-REP'))
 
         self.call_nmcli(['connection', 'add', 'type', 'vpn', 'con-name', 'con-vpn-1', 'ifname', '*', 'vpn-type', 'openvpn', 'vpn.data', 'key1 = val1,   key2  = val2, key3=val3'],
                         replace_stdout = replace_stdout)
@@ -947,59 +1016,72 @@ class TestNmcli(NmTestBase):
                              'VpnState',
                              dbus.UInt32(NM.VpnConnectionState.ACTIVATED))
 
-        self.call_nmcli_l(['con', 's', 'con-vpn-1'],
-                          replace_stdout = replace_stdout)
-        self.call_nmcli_l(['-t', 'con', 's', 'con-vpn-1'],
-                          replace_stdout = replace_stdout)
+        for mode in Util.iter_nmcli_output_modes():
 
-        self.call_nmcli_l(['-f', 'ALL', 'con', 's', 'con-vpn-1'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['con', 's', 'con-vpn-1'],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['con', 's', 'con-vpn-1'],
+                              replace_stdout = replace_stdout)
 
-        # This only filters 'vpn' settings from the connection profile.
-        # Contrary to '-f GENERAL' below, it does not show the properties of
-        # the activated VPN connection. This is a nmcli bug.
-        self.call_nmcli_l(['-f', 'VPN', 'con', 's', 'con-vpn-1'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'ALL', 'con', 's', 'con-vpn-1'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'GENERAL', 'con', 's', 'con-vpn-1'],
-                          replace_stdout = replace_stdout)
+            # This only filters 'vpn' settings from the connection profile.
+            # Contrary to '-f GENERAL' below, it does not show the properties of
+            # the activated VPN connection. This is a nmcli bug.
+            self.call_nmcli_l(mode + ['-f', 'VPN', 'con', 's', 'con-vpn-1'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['dev', 'show', 'wlan0'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'GENERAL', 'con', 's', 'con-vpn-1'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'all', 'dev', 'show', 'wlan0'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['dev', 's'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', 'dev', 'show', 'wlan0'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'all', 'dev', 'status'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', '-t', 'dev', 'show', 'wlan0'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['dev', 'show'],
+                              replace_stdout = replace_stdout)
 
-        self.call_nmcli_l(['-f', 'DEVICE,TYPE,DBUS-PATH', 'dev'],
-                          replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'all', 'dev', 'show'],
+                              replace_stdout = replace_stdout)
 
-        for mode in Util.iter_nmcli_output_modes():
-             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list' ],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list' ],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
-                               'device', 'wifi', 'list'],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
-                               'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'show', 'wlan0' ],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'show', 'wlan0' ],
-                               replace_stdout = replace_stdout)
-             self.call_nmcli_l(mode + ['-f', 'GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS', 'device', 'show', 'wlan0' ],
-                               replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['dev', 'show', 'wlan0'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(mode + ['-f', 'all', 'dev', 'show', 'wlan0'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(mode + ['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', 'dev', 'show', 'wlan0'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(mode + ['-f', 'GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES', 'dev', 'show', 'wlan0'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(mode + ['-f', 'DEVICE,TYPE,DBUS-PATH', 'dev'],
+                              replace_stdout = replace_stdout)
+
+            self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list' ],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list' ],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
+                              'device', 'wifi', 'list'],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
+                              'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'show', 'wlan0' ],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'COMMON', 'device', 'show', 'wlan0' ],
+                              replace_stdout = replace_stdout)
+            self.call_nmcli_l(mode + ['-f', 'GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS', 'device', 'show', 'wlan0' ],
+                              replace_stdout = replace_stdout)
 
 ###############################################################################
 
@@ -1045,19 +1127,6 @@ def main():
 
     r = unittest.main(exit = False)
 
-    if conf.get(ENV_NM_TEST_REGENERATE):
-        make_filename = PathConfiguration.srcdir() + '/test-client.check-on-disk/Makefile.am'
-        s_new = '# generated with `NM_TEST_REGENERATE=1 make check`\n' + \
-                '# See howto in "' + PathConfiguration.canonical_script_filename() + '"\n' + \
-                '\n' + \
-                'clients_tests_expected_files = \\\n' + \
-                ''.join([('\tclients/tests/test-client.check-on-disk/%s \\\n' % f) for f in sorted(file_list)]) + \
-                '\t$(NULL)\n'
-        s_new = s_new.encode('utf-8')
-        if s_new != Util.file_read(make_filename):
-            with open(make_filename, 'wb') as f:
-                f.write(s_new)
-
     sys.exit(not r.result.wasSuccessful())
 
 if __name__ == '__main__':