winetest: ask for a tag (take 3)

Ferenc Wagner wferi at tba.elte.hu
Thu Mar 31 04:29:31 CST 2005


ChangeLog: Ask for a tag if one was not given on the command line.

Now with a global variable.

Thanks,
Feri.

Index: programs/winetest/gui.c
===================================================================
RCS file: /home/wine/wine/programs/winetest/gui.c,v
retrieving revision 1.6
diff -u -r1.6 gui.c
--- programs/winetest/gui.c	15 Jun 2004 22:45:15 -0000	1.6
+++ programs/winetest/gui.c	31 Mar 2005 10:25:18 -0000
@@ -176,6 +176,23 @@
     return 0;
 }
 
+/* report (R_TAG) */
+int
+textTag (va_list ap)
+{
+    fputs ("Tag: ", stderr);
+    fputs (tag, stderr);
+    fputc ('\n', stderr);
+    return 0;
+}
+
+int
+guiTag (va_list ap)
+{
+    SetDlgItemText (dialog, IDC_TAG, tag);
+    return 0;
+}
+
 /* report (R_DIR, fmt, ...) */
 int
 textDir (va_list ap)
@@ -301,6 +318,39 @@
     return ret;
 }
 
+BOOL CALLBACK
+AskTagProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    int len;
+
+    switch (msg) {
+    case WM_COMMAND:
+        switch (LOWORD (wParam)) {
+        case IDOK:
+            len = GetWindowTextLengthA (GetDlgItem (hwnd, IDC_TAG));
+            if (len <= 20) {    /* keep it consistent with IDD_TAG */
+                tag = xmalloc (len+1);
+                GetDlgItemTextA (hwnd, IDC_TAG, tag, len+1);
+                if (!badtagchar (tag)) EndDialog (hwnd, IDOK);
+                else free (tag);
+            }
+            return TRUE;
+        case IDABORT:
+            EndDialog (hwnd, IDABORT);
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+int
+guiAskTag (void)
+{
+    return DialogBox (GetModuleHandle (NULL),
+                      MAKEINTRESOURCE (IDD_TAG),
+                      dialog, AskTagProc);
+}
+
 /* Quiet functions */
 int
 qNoOp (va_list ap)
@@ -403,15 +453,15 @@
     int ret = 0;
     static r_fun_t * const text_funcs[] =
         {textStatus, textProgress, textStep, textDelta,
-         textDir, textOut,
+         textTag, textDir, textOut,
          textWarning, textError, textFatal, textAsk};
     static r_fun_t * const GUI_funcs[] =
         {guiStatus, guiProgress, guiStep, guiDelta,
-         guiDir, guiOut,
+         guiTag, guiDir, guiOut,
          guiWarning, guiError, guiFatal, guiAsk};
     static r_fun_t * const quiet_funcs[] =
         {qNoOp, qNoOp, qNoOp, qNoOp,
-         qNoOp, qNoOp,
+         qNoOp, qNoOp, qNoOp,
          qNoOp, qNoOp, qFatal, qAsk};
     static r_fun_t * const * funcs = NULL;
 
Index: programs/winetest/main.c
===================================================================
RCS file: /home/wine/wine/programs/winetest/main.c,v
retrieving revision 1.32
diff -u -r1.32 main.c
--- programs/winetest/main.c	29 Mar 2005 19:51:49 -0000	1.32
+++ programs/winetest/main.c	31 Mar 2005 10:25:18 -0000
@@ -55,6 +55,7 @@
     const char* rev;
 };
 
+char *tag = NULL;
 static struct wine_test *wine_tests;
 static struct rev_info *rev_infos = NULL;
 static const char whitespace[] = " \t\r\n";
@@ -429,7 +431,7 @@
 }
 
 char *
-run_tests (char *logname, const char *tag)
+run_tests (char *logname)
 {
     int nr_of_files = 0, nr_of_tests = 0, i;
     char *tempdir, *shorttempdir;
@@ -480,7 +482,7 @@
     xprintf ("Archive: ");
     if (strres) xprintf ("%.*s", strsize, strres);
     else xprintf ("-\n");
-    xprintf ("Tag: %s\n", tag?tag:"");
+    xprintf ("Tag: %s\n", tag);
     xprintf ("Build info:\n");
     strres = extract_rcdata (BUILD_INFO, STRINGRES, &strsize);
     while (strres) {
@@ -556,8 +558,9 @@
                     LPSTR cmdLine, int cmdShow)
 {
     char *logname = NULL;
-    const char *cp, *submit = NULL, *tag = NULL;
+    const char *cp, *submit = NULL;
     int reset_env = 1;
+    int interactive = 1;
 
     /* initialize the revision information first */
     extract_rev_infos();
@@ -572,6 +575,7 @@
         switch (cmdLine[1]) {
         case 'c':
             report (R_TEXTMODE);
+            interactive = 0;
             break;
         case 'e':
             reset_env = 0;
@@ -581,6 +585,7 @@
             exit (0);
         case 'q':
             report (R_QUIET);
+            interactive = 0;
             break;
         case 's':
             submit = strtok (NULL, whitespace);
@@ -608,10 +613,10 @@
         cmdLine = strtok (NULL, whitespace);
     }
     if (!submit) {
-        if (!running_on_visible_desktop ()) {
-            report (R_ERROR, "Tests must be run on a visible desktop");
-            exit (2);
-        }
+        report (R_STATUS, "Starting up");
+
+        if (!running_on_visible_desktop ())
+            report (R_FATAL, "Tests must be run on a visible desktop");
 
         if (reset_env && (putenv ("WINETEST_PLATFORM=windows") ||
                           putenv ("WINETEST_DEBUG=1") || 
@@ -619,15 +624,22 @@
                           putenv ("WINETEST_REPORT_SUCCESS=0")))
             report (R_FATAL, "Could not reset environment: %d", errno);
 
-        report (R_STATUS, "Starting up");
+        if (!tag) {
+            if (!interactive)
+                report (R_FATAL, "Please specify a tag (-t option) if "
+                        "running noninteractive!");
+            if (guiAskTag () == IDABORT) exit (1);
+        }
+        report (R_TAG);
+
         if (!logname) {
-            logname = run_tests (NULL, tag);
+            logname = run_tests (NULL);
             if (report (R_ASK, MB_YESNO, "Do you want to submit the "
                         "test results?") == IDYES)
                 if (!send_file (logname) && remove (logname))
                     report (R_WARNING, "Can't remove logfile: %d.", errno);
             free (logname);
-        } else run_tests (logname, tag);
+        } else run_tests (logname);
         report (R_STATUS, "Finished");
     }
     exit (0);
Index: programs/winetest/resource.h
===================================================================
RCS file: /home/wine/wine/programs/winetest/resource.h,v
retrieving revision 1.1
diff -u -r1.1 resource.h
--- programs/winetest/resource.h	15 Jun 2004 22:45:15 -0000	1.1
+++ programs/winetest/resource.h	31 Mar 2005 10:25:18 -0000
@@ -22,6 +22,7 @@
 
 #define IDD_STATUS 100
 #define IDD_ABOUT  101
+#define IDD_TAG    102
 
 #define IDC_ST0 1000
 #define IDC_PB0 1001
@@ -32,6 +33,7 @@
 
 #define IDC_DIR 2000
 #define IDC_OUT 2001
+#define IDC_TAG 2002
 
 #define IDC_SB  3000
 
Index: programs/winetest/winetest.h
===================================================================
RCS file: /home/wine/wine/programs/winetest/winetest.h,v
retrieving revision 1.5
diff -u -r1.5 winetest.h
--- programs/winetest/winetest.h	15 Jun 2004 22:45:15 -0000	1.5
+++ programs/winetest/winetest.h	31 Mar 2005 10:25:18 -0000
@@ -46,6 +46,7 @@
     R_PROGRESS,
     R_STEP,
     R_DELTA,
+    R_TAG,
     R_DIR,
     R_OUT,
     R_WARNING,
@@ -56,6 +57,8 @@
     R_QUIET
 };
 
+extern char *tag;
+int guiAskTag (void);
 int report (enum report_type t, ...);
 
 #endif /* __WINETESTS_H */
Index: programs/winetest/winetest.rc
===================================================================
RCS file: /home/wine/wine/programs/winetest/winetest.rc,v
retrieving revision 1.1
diff -u -r1.1 winetest.rc
--- programs/winetest/winetest.rc	15 Jun 2004 22:45:15 -0000	1.1
+++ programs/winetest/winetest.rc	31 Mar 2005 10:25:18 -0000
@@ -23,7 +23,18 @@
 #include "resource.h"
 #include "tests.rc"
 
-IDD_STATUS DIALOG 0, 0, 160, 140
+IDD_TAG DIALOG 0, 0, 150, 65
+STYLE WS_POPUP
+CAPTION "No tag supplied"
+BEGIN
+    CTEXT "Please supply a tag for your report.  You can use letters, digits, dashes and periods."
+        IDC_STATIC, 10, 5, 130, 30
+    EDITTEXT IDC_TAG, 35, 30, 80, 10
+    DEFPUSHBUTTON "Start", IDOK, 25, 45, 40, 14
+    PUSHBUTTON    "Abort", IDABORT, 85, 45, 40, 14
+END
+
+IDD_STATUS DIALOG 0, 0, 160, 150
 STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
 CAPTION "Wine Test Shell"
 BEGIN
@@ -34,17 +45,20 @@
     LTEXT   "Network transfer:", IDC_ST2,        10,  60, 140, 10
     CONTROL "PB2", IDC_PB2, PROGRESS_CLASS, 0,    5,  70, 150, 10
                                                
-    LTEXT   "Working directory:", IDC_STATIC,    10,  89, 100, 10
-    EDITTEXT                      IDC_DIR,       71,  88,  79, 10,
+    LTEXT   "Tag:",               IDC_STATIC,    10,  89, 100, 10
+    EDITTEXT                      IDC_TAG,       25,  88, 125, 10,
+             ES_READONLY
+    LTEXT   "Working directory:", IDC_STATIC,    10, 100, 100, 10
+    EDITTEXT                      IDC_DIR,       71,  99,  79, 10,
              ES_READONLY | ES_AUTOHSCROLL
-    LTEXT   "Output file:",       IDC_STATIC,    10, 100, 100, 10
-    EDITTEXT                      IDC_OUT,       46,  99, 104, 10,
+    LTEXT   "Output file:",       IDC_STATIC,    10, 111, 100, 10
+    EDITTEXT                      IDC_OUT,       46, 110, 104, 10,
              ES_READONLY | ES_AUTOHSCROLL
 
-    DEFPUSHBUTTON "About", IDHELP,               20, 113,  30, 14
-    PUSHBUTTON    "Edit",  IDCANCEL,             65, 113,  30, 14,
+    DEFPUSHBUTTON "About", IDHELP,               20, 123,  30, 14
+    PUSHBUTTON    "Edit",  IDCANCEL,             65, 123,  30, 14,
                    WS_DISABLED
-    PUSHBUTTON    "Stop",  IDABORT,             110, 113,  30, 14
+    PUSHBUTTON    "Stop",  IDABORT,             110, 123,  30, 14
 
     CONTROL "Created", IDC_SB, STATUSCLASSNAME, 0, 0,0,0,0
 END



More information about the wine-patches mailing list