When adding a debug print here in index-cache.exp:
...
 proc_with_prefix test_cache_disabled { cache_dir } {
     lassign [ls_host $cache_dir] ret files_before
+    puts "before: '$files_before'"
+    exit
...
we have:
...
files_before: ''
...
When further adding:
...
 proc_with_prefix test_cache_disabled { cache_dir } {
+    exec touch $cache_dir/foo.1 $cache_dir/foo.2 $cache_dir/foo.3
...
we have:
...
files_before: 'foo.1'
...
while we're expecting file_before to contain foo.[123].
Fix this by making the return statement in ls_host return a list rather than a
string (in accordance with the ls_host documentation), after which we have:
...
files_before: 'foo.1 foo.2 foo.3'
...
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2019-05-07  Tom de Vries  <tdevries@suse.de>
	* gdb.base/index-cache.exp (ls_host): Fix return statement.
+2019-05-07  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.base/index-cache.exp (ls_host): Fix return statement.
+
 2019-05-07  Tom de Vries  <tdevries@suse.de>
 
        PR testsuite/24522
 
        }
     }
 
-    return "0 $filtered"
+    return [list 0 $filtered]
 }
 
 # Execute "show index-cache stats" and verify the output against expected