Vincent Povirk : shell32: Test links to executable filenames lacking the extension.

Alexandre Julliard julliard at winehq.org
Tue Jan 25 12:01:40 CST 2011


Module: wine
Branch: master
Commit: 05ff15a75517a506ae5d35b7d9f8fd3fa3b5f22f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=05ff15a75517a506ae5d35b7d9f8fd3fa3b5f22f

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Mon Jan 24 13:46:29 2011 -0600

shell32: Test links to executable filenames lacking the extension.

---

 dlls/shell32/tests/shelllink.c |   63 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c
index f754efd..29b0dda 100644
--- a/dlls/shell32/tests/shelllink.c
+++ b/dlls/shell32/tests/shelllink.c
@@ -681,6 +681,24 @@ static void test_load_save(void)
     create_lnk(lnkfile, &desc, 0);
     check_lnk(lnkfile, &desc, 0x0);
 
+    /* Test omitting .exe from an absolute path */
+    p=strrchr(mypath, '.');
+    if (p)
+        *p='\0';
+
+    desc.description="absolute path without .exe";
+    desc.workdir=mydir;
+    desc.path=mypath;
+    desc.pidl=NULL;
+    desc.arguments="/option1 /option2 \"Some string\"";
+    desc.showcmd=SW_SHOWNORMAL;
+    desc.icon=mypath;
+    desc.icon_id=0;
+    desc.hotkey=0x1234;
+    create_lnk(lnkfile, &desc, 0);
+    desc.path = realpath;
+    check_lnk(lnkfile, &desc, 0x4);
+
     /* Overwrite the existing lnk file and test link to a command on the path */
     desc.description="command on path";
     desc.workdir=mypath;
@@ -697,6 +715,22 @@ static void test_load_save(void)
     desc.path=realpath;
     check_lnk(lnkfile, &desc, 0x0);
 
+    /* Test omitting .exe from a command on the path */
+    desc.description="command on path without .exe";
+    desc.workdir=mypath;
+    desc.path="rundll32";
+    desc.pidl=NULL;
+    desc.arguments="/option1 /option2 \"Some string\"";
+    desc.showcmd=SW_SHOWNORMAL;
+    desc.icon=mypath;
+    desc.icon_id=0;
+    desc.hotkey=0x1234;
+    create_lnk(lnkfile, &desc, 0);
+    /* Check that link is created to proper location */
+    SearchPathA( NULL, "rundll32", NULL, MAX_PATH, realpath, NULL);
+    desc.path=realpath;
+    check_lnk(lnkfile, &desc, 0x4);
+
     /* Create a temporary non-executable file */
     r=GetTempPath(sizeof(mypath), mypath);
     ok(r<sizeof(mypath), "GetTempPath failed (%d), err %d\n", r, GetLastError());
@@ -747,6 +781,35 @@ static void test_load_save(void)
     r = DeleteFileA(mypath);
     ok(r, "failed to delete file %s (%d)\n", mypath, GetLastError());
 
+    /* Create a temporary .bat file */
+    strcpy(mypath, mydir);
+    strcat(mypath, "\\test.bat");
+    hf = CreateFile(mypath, GENERIC_WRITE, 0, NULL,
+                    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+    CloseHandle(hf);
+
+    strcpy(realpath, mypath);
+
+    p=strrchr(mypath, '.');
+    if (p)
+        *p='\0';
+
+    /* Try linking to the .bat file without the extension */
+    desc.description="batch file";
+    desc.workdir=mydir;
+    desc.path=mypath;
+    desc.pidl=NULL;
+    desc.arguments="";
+    desc.showcmd=SW_SHOWNORMAL;
+    desc.icon=mypath;
+    desc.icon_id=0;
+    desc.hotkey=0x1234;
+    create_lnk(lnkfile, &desc, 0);
+    desc.path = realpath;
+    check_lnk(lnkfile, &desc, 0x4);
+
+    r = DeleteFileA(realpath);
+
     /* FIXME: Also test saving a .lnk pointing to a pidl that cannot be
      * represented as a path.
      */




More information about the wine-cvs mailing list