Forum Discussion

Howard's avatar
Howard
New Contributor
15 years ago

unexpected result from aqFolderInfo.Rename

I'm trying to use the aqFolderInfo.Rename function to rename folders on the local disk, but I'm getting some unexpected results. What I'm trying to do is simple: rename an existing folder c:\dirA as c:\dirAA. I'm using a script like:




      Set OrigFolder = aqFileSystem.GetFolderInfo(OrigDir)              

      if OrigFolder.Rename(NewDir) Then

        Log.Message("Directory " + OrigDir + " renamed as " + NewDir)

      else

        Log.Message("Failed to rename " + OrigDir + " as " + NewDir)        

      end if 




but with OrigDir set to "C:\dirA" and NewDir set to "C:\dirAA" (and starting with a directory C:\dirA containing only some files) I end up with c:\dirAA\dirA (containing the same files). I just want to simply rename the directory - what's going wrong? I've tried using the functions for the trailing slash, but these either have no effect or cause the rename to fail (e.g. with OrigDir set to "C:\dirA\" and NewDir set to "C:\dirAA\"). Thanks for any help.

 

(using TestComplete 7.51 on Vista 64)




Howard


5 Replies

  • Howard's avatar
    Howard
    New Contributor
    NB replacing "OrigFolder.Rename(NewDir)" with "OrigFolder.Move(NewDir)" in the quoted script gives the same result, which makes sense for Move but not for Rename. Is this a bug with the Rename function?



    Howard




  • Hi Howard,




    Thank you for reporting the issue. Currently, we are investigating the situation.




    In the meantime, you can use the Utilities.RenameFile method to rename a folder. Please see the "Utilities.RenameFile" help topic for details.

  • Howard's avatar
    Howard
    New Contributor
    Thanks for the feedback. Do you have any further info on progress in tracking down or solving this issue?



    I'm currently using the Utilities.RenameFile as suggested, but this doesn't seem to work reliably. For example, when trying to rename "C:\dirA" to "C:\dirB", it sometimes fails - even when I confirm (before doing the rename) that "C:\dirA" exists and "C:\dirB" does NOT exist. Are there other reasons it could fail? Currently it works on some test runs, but fails a few times in others, with identical starting conditions.




    Howard

  • Howard's avatar
    Howard
    New Contributor
    I've come across some other problems with file/folder functions. I've been using aqFileSystem.GetFolderInfo to check whether a folder path (string) corresponds to an actual folder or not. I use something like:



    Set folder_obj = aqFileSystem.GetFolderInfo(folder_path)

    if folder_obj Is Not Nothing Then

      Log.Message("Folder name: " + folder_obj.name)

    else

      Log.Error("Not a valid folder")

    end if



    If folder_path is set to something like "c:\temp\file.txt" I was expecting this to trigger the error, but it runs fine and returns "file.txt" as the folder name. Is this expected behaviour? How else can I check that a folder path corresponds to a valid folder?



    thanks,



    Howard


  • Hi Howard,




    A fix for the Rename method related issue will be included in the next major version of the product.




    As for checking whether a path to a folder is valid, we'll improve this behavior in one of future versions. In the meantime, you can use the following workaround:




    Log.Message(aqFileSystem.CheckAttributes(folder_path, aqFileSystem.faDirectory) & aqFileSystem.Exists(folder_path));