gdb/testsuite: use with_cwd where possible
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 22 Apr 2022 13:16:59 +0000 (09:16 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Wed, 27 Apr 2022 00:16:03 +0000 (20:16 -0400)
I learned about with_cwd today.  I spotted a few spots that could use
it, to make the code more robust.

Change-Id: Ia23664cb827f25e79d31948e0c006a8dc61c33e1

gdb/testsuite/gdb.base/completion.exp
gdb/testsuite/gdb.base/fullname.exp
gdb/testsuite/gdb.base/fullpath-expand.exp
gdb/testsuite/gdb.base/settings.exp
gdb/testsuite/gdb.base/source-dir.exp
gdb/testsuite/gdb.linespec/break-ask.exp
gdb/testsuite/gdb.linespec/macro-relative.exp
gdb/testsuite/lib/ada.exp

index 34a16af14916f527b55b9529402014eee1ac8027..0c58a1ab6b7e11f9b7e483e6150b649d20ad9bd7 100644 (file)
@@ -675,10 +675,9 @@ gdb_test "complete whatis &values\[0\]->z" \
 
 # ${srcdir} may be a relative path.  We want to make sure we end up
 # in the right directory - so make sure we know where it is.
-set mydir [pwd]
-cd ${srcdir}
-set fullsrcdir [pwd]
-cd ${mydir}
+with_cwd $srcdir {
+    set fullsrcdir [pwd]
+}
 
 # If the directory name contains a '+' we must escape it, adding a backslash.
 # If not, the test below will fail because it will interpret the '+' as a 
index a264dc75322789e4c7758a3cba130825a52f6596..f9faca87423bbda553a32cbee4718ee128e9d5c4 100644 (file)
@@ -99,14 +99,12 @@ if { [gdb_breakpoint [standard_output_file tmp-${srcfile}]:${line} {no-message}]
 # Build the test executable using relative paths not relative to the directory
 # we'll run GDB from.
 
-set save_pwd [pwd]
-cd [standard_output_file {}]
-if  { [gdb_compile [standard_output_file tmp-${srcfile}] "${testfile}" \
-          executable {debug}] != "" } {
-    cd $save_pwd
-    return -1
+with_cwd [standard_output_file {}] {
+    if  { [gdb_compile [standard_output_file tmp-${srcfile}] "${testfile}" \
+              executable {debug}] != "" } {
+       return -1
+    }
 }
-cd $save_pwd
 
 gdb_exit
 gdb_start
index efa8d63b1d4475b40f19f463ddde793815c8a100..b38902449978b038bea16b88dfd0730d0b1c9663 100644 (file)
@@ -25,13 +25,13 @@ if { [file pathtype $objdir] != "absolute" } {
     return -1
 }
 
-set saved_pwd [pwd]
-cd $srcdir
-set err [gdb_compile "${subdir}/${srcfile} ${subdir}/${srcfile2}" $binfile executable {debug}]
-cd $saved_pwd
-if { $err != "" } {
-    untested "${srcfile} or ${srcfile2} compilation failed"
-    return -1
+with_cwd $srcdir {
+    set err [gdb_compile "${subdir}/${srcfile} ${subdir}/${srcfile2}" $binfile executable {debug}]
+
+    if { $err != "" } {
+       untested "${srcfile} or ${srcfile2} compilation failed"
+       return -1
+    }
 }
 
 set result [catch "exec realpath ${srcdir}/${subdir}/${srcfile2}" realsrcfile2]
index efd7f17d5cf4095c1d5cfb373be7d5b2d0704e09..dafc5e4d8fdb7a7c6e2dd4e02a9627923d5c6f5d 100644 (file)
@@ -585,11 +585,9 @@ proc test-string {variant} {
        # ${srcdir} may be a relative path.  We want to make sure we
        # end up in the right directory - so make sure we know where
        # it is.
-       global srcdir
-       set mydir [pwd]
-       cd ${srcdir}
-       set fullsrcdir [pwd]
-       cd ${mydir}
+       with_cwd $::srcdir {
+           set fullsrcdir [pwd]
+       }
 
        gdb_test "cd ${fullsrcdir}" \
            "Working directory [string_to_regexp ${fullsrcdir}].*" \
index 21d4831688f43ac37bc442203ed09519ac635531..fff1c1f8717d5d85c91d75d59df3f392ab359e06 100644 (file)
@@ -87,31 +87,28 @@ proc test_truncated_comp_dir {} {
         return
     }
 
-    set original_dir [pwd]
     set working_dir [standard_output_file ""]
-    cd ${working_dir}
-
-    set strip_dir [file normalize "${working_dir}/../.."]
-
-    set new_srcfile [standard_output_file ${srcfile}]
-    set fd [open "$new_srcfile" w]
-    puts $fd "int
-    main ()
-    {
-      return 0;
-    }"
-    close $fd
-
-    set options \
-       "debug additional_flags=-fdebug-prefix-map=${strip_dir}="
-    if  { [gdb_compile "${srcfile}" "${binfile}" \
-              executable ${options}] != "" } {
-       untested "failed to compile"
-       return -1
+    with_cwd $working_dir {
+       set strip_dir [file normalize "${working_dir}/../.."]
+
+       set new_srcfile [standard_output_file ${srcfile}]
+       set fd [open "$new_srcfile" w]
+       puts $fd "int
+       main ()
+       {
+         return 0;
+       }"
+       close $fd
+
+       set options \
+           "debug additional_flags=-fdebug-prefix-map=${strip_dir}="
+       if  { [gdb_compile "${srcfile}" "${binfile}" \
+                  executable ${options}] != "" } {
+           untested "failed to compile"
+           return -1
+       }
     }
 
-    cd ${original_dir}
-
     clean_restart ${binfile}
 
     if { [ishost *-*-mingw*] } {
index d73172de596c800a172ee3a90db482367ab8fb8f..120c399acf250250aa63db6bbbf3d3d07d8290ab 100644 (file)
@@ -28,16 +28,19 @@ if { [file pathtype $objdir] == "relative" } {
     untested "objdir $objdir should be absolute"
     return
 }
-set saved_pwd [pwd]
-cd $srcdir/${subdir}/base/one
-set err1 [gdb_compile "thefile.cc" $objfile1 object $opts]
-cd $saved_pwd
-cd $srcdir/${subdir}/base/two
-set err2 [gdb_compile "thefile.cc" $objfile2 object $opts]
-cd $saved_pwd
-if { $err1 != "" || $err2 != "" } {
-    untested "compilation failed"
-    return -1
+
+with_cwd $srcdir/${subdir}/base/one {
+    if { [gdb_compile "thefile.cc" $objfile1 object $opts] != "" } {
+       untested "compilation failed"
+       return
+    }
+}
+
+with_cwd $srcdir/${subdir}/base/two {
+    if { [gdb_compile "thefile.cc" $objfile2 object $opts] != "" } {
+       untested "compilation failed"
+       return
+    }
 }
 
 if { [gdb_compile "$srcdir/${subdir}/$srcfile $objfile1 $objfile2" \
index 609f290d8fbe4cfbf4cc15a14f8e992b0170f635..67b779f5896deab50707433e55237b55de28621e 100644 (file)
@@ -32,13 +32,12 @@ if { [file pathtype $objdir] == "relative" } {
     untested "objdir $objdir should be absolute"
     return
 }
-set saved_pwd [pwd]
-cd $srcdir/${subdir}/base/two
-set err [gdb_compile "../../${srcfile}" "${binfile}" executable $opts]
-cd $saved_pwd
-if { $err != "" } {
-    untested "compilation failed"
-    return -1
+
+with_cwd $srcdir/${subdir}/base/two {
+    if { [gdb_compile "../../${srcfile}" "${binfile}" executable $opts] != "" } {
+       untested "compilation failed"
+       return
+    }
 }
 
 clean_restart ${testfile}
index 67581c89008e249a6ba77e5bad482727f4778677..25f8193c974324e0705e5e1c4ff685db9311cea1 100644 (file)
@@ -18,8 +18,6 @@
 # BUILDDIR.
 
 proc target_compile_ada_from_dir {builddir source dest type options} {
-    set saved_cwd [pwd]
-
     global board
     set board [target_info name]
     set save_multilib_flag [board_info $board multilib_flags]
@@ -39,10 +37,10 @@ proc target_compile_ada_from_dir {builddir source dest type options} {
     }
 
     catch {
-        cd $builddir
-        return [target_compile $source $dest $type $options]
+       with_cwd $builddir {
+           return [target_compile $source $dest $type $options]
+       }
     } result options
-    cd $saved_cwd
 
     if { $save_multilib_flag != "" } {
        unset_board_info "multilib_flags"