Exemple #1
0
    def __OnSaveAs(self, e):
        # contains some of the same code as in FRunConfigDialog
        if (not os.path.isdir(RUNS_FOLDER)):
            print("<FTestSuiteGUI> No test procedures directory... " +
                  "this is weird... returning")
            return

        dialog = wx.TextEntryDialog(self, "Name to save test procedure.",
                                    "Save Test Procedure As", "",
                                    wx.OK | wx.CANCEL | wx.CENTER)

        while (True):
            if (dialog.ShowModal() == wx.ID_OK):
                value = dialog.GetValue()
                if (value == ""):
                    FUtils.ShowWarning(self, "Enter a non empty name.")
                    continue

                if (value == self.__testProcedure.GetName()):
                    FUtils.ShowWarning(
                        self, "Entered name is same as current name.")
                    continue

                if (not FUtils.IsValidFilename(value)):
                    FUtils.ShowWarning(
                        self, "Not valid title for test " +
                        "procedure; cannot contain the following " +
                        "characters: \n" + FUtils.GetInvalidString())
                    continue

                if (os.path.isdir(os.path.join(RUNS_FOLDER, value))):
                    message = ("A test procedure with name \"" + value +
                               "\" already exists. Overwrite?")
                    if (not FUtils.ShowConfirmation(self, message, False)):
                        continue

                break
            else:
                return

        busyInfo = wx.BusyInfo("Saving test procedure. Please wait...")

        src = os.path.normpath(
            os.path.join(RUNS_FOLDER, self.__testProcedure.GetName()))
        dest = os.path.normpath(os.path.join(RUNS_FOLDER, value))

        if (os.path.isdir(dest)):
            try:
                print "removing " + dest
                shutil.rmtree(dest)
            except OSError, e:
                text = (str(dest) + " is in use. Select another name for " +
                        "the run or close any application using that " +
                        "directory.")
                self.__ShowWarning(text)
                return
Exemple #2
0
    def OpenTestProcedure(self, filename):
        testProcedure = self.__BusyInfoOpenTestProcedure(filename)
        recovered = testProcedure.GetRecoveredTestIds()
        if (recovered != ""):
            FUtils.ShowWarning(
                self, "Encountered unfinished test " +
                "executions. Recovering to previous finished execution " +
                "for these tests:\n\n" + recovered)

        for regExId in testProcedure.GetRegExIdGenerator():
            dataSets = self.__BusyInfoCheckForNewTests(testProcedure, regExId)
            if (len(dataSets) == 0): continue

            displayDataSets = ""
            for dataSet in dataSets:
                displayDataSets = (
                    displayDataSets +
                    FUtils.GetRelativePath(dataSet, MAIN_FOLDER) + "\n")

            if (FUtils.ShowConfirmation(
                    self, "Found these missing data sets for " +
                    "Regular Expression " + str(regExId) + ": \n" +
                    testProcedure.GetRegExString(regExId) + "\n\n\n" +
                    displayDataSets + "\n\n" +
                    "Do you want to add them to the test procedure? " +
                    "Selecting \"No\" will also ignore them from future " +
                    "confirmations.", False)):
                settings = testProcedure.GetRegExSettings(regExId)
                for dataSet in dataSets:
                    testProcedure.AddTest(dataSet, settings)
            else:
                ignored = testProcedure.GetIgnoredRegExList(regExId)
                if (len(ignored) == 0):
                    ignored.append("")  # len(dataSet) != 0
                for dataSet in dataSets:
                    displayedFilename = FUtils.GetRelativePath(
                        dataSet, MAIN_FOLDER)
                    regExPath = FUtils.NormalizeRegEx(displayedFilename)
                    newIgnored = ignored[-1]
                    if (newIgnored != ""):
                        newIgnored = newIgnored + "|"
                    newIgnored = newIgnored + regExPath
                    if (len(newIgnored) < 30000):
                        ignored[-1] = newIgnored
                    else:
                        ignored.append(regExPath)
                testProcedure.SetRegEx(regExId,
                                       testProcedure.GetRegExList(regExId),
                                       ignored)

        busyInfo = wx.BusyInfo("Opening test procedure: Creating grid. " +
                               "Please wait...")

        child = RunTable(self.__MDIparent, wx.ID_ANY, testProcedure)
        child.Maximize(True)
        child.Show(True)
Exemple #3
0
    def __OnContextDeleteExecution(self, e):
        keys = self.__grid.GetSelectedKeys()
        if (len(keys) == 0): return

        message = ("Permanently delete the latest execution from the " +
                   "following tests?\n")
        for key in keys:
            test = self.__testProcedure.GetTest(key)
            message = (message + "    " + test.GetSeparatedFilename() + "\n")
        if (FUtils.ShowConfirmation(self, message, True)):
            changed = False
            for key in keys:
                test = self.__testProcedure.GetTest(key)
                if (test.HasCurrentExecution()):
                    self.__grid.PartialRefreshRemove(test)
                    test.DeleteCurrentExecution()
                    self.__grid.ReplaceExecution(key, test,
                                                 test.GetCurrentExecution())
                    self.__grid.PartialRefreshAdd(test)
            self.__grid.PartialRefreshDone()
Exemple #4
0
class FSelectDataSetDialog(wx.wizard.WizardPageSimple, FDataSetParser):
    """The dialog to select the data set for new tests. 
    
    private members:
        self.__iconChecked -- index for the checked image in the ImageList for
        TreeCtrl.
        self.__iconUnchecked -- index for the unchecked image in the ImageList 
        for TreeCtrl.
        self.__treeCtrl -- the TreeCtrl to display the directory structure.
        
    """

    __CHECKED = True
    __UNCHECKED = False
    __FILE = True
    __FOLDER = False

    __TREE = 0
    __REGEX = 1

    def __init__(self, parent, testProcedure, settingsPage):
        """Creates this dialog.
        
        arguments:
            parent -- the parent frame for this dialog.
        
        """
        wx.wizard.WizardPageSimple.__init__(self, parent)
        FDataSetParser.__init__(self)

        self.__allPaths = []
        self.__settingsPage = settingsPage
        self.__testProcedure = testProcedure

        topSizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(topSizer)

        title = wx.StaticText(self, wx.ID_ANY, "Select Data Set")

        self.__treeRadio = wx.RadioButton(self, style=wx.RB_GROUP)
        self.__treeRadio.Bind(wx.EVT_RADIOBUTTON, self.__OnTreeButtonClicked)
        self.__commentsCtrl = None
        self.__iconUnchecked = None
        self.__iconChecked = None
        self.__treeCtrl = wx.TreeCtrl(self, wx.ID_ANY, wx.DefaultPosition,
                                      wx.Size(300, 250),
                                      wx.TR_HAS_BUTTONS | wx.TR_HIDE_ROOT)
        self.__treeCtrl.AssignImageList(self.__LoadImages())
        self.__PopulateTree(self.__treeCtrl)
        self.__treeCtrl.Bind(wx.EVT_LEFT_DOWN, self.__OnLeftDown)
        self.__treeCtrl.Bind(wx.EVT_LEFT_DCLICK, self.__OnLeftDouble)

        self.__regButton = wx.RadioButton(self)
        self.__regButton.Bind(wx.EVT_RADIOBUTTON, self.__OnRegExButtonClicked)
        self.__regExpLabel = wx.StaticText(self, -1, "Regular Expression")
        self.__regExpCtrl = wx.TextCtrl(self, -1)
        self.__regExpUpdateButton = wx.Button(self, wx.ID_ANY, "&Update")
        self.__regExpUpdateButton.Bind(wx.EVT_BUTTON, self.__OnUpdate)
        self.__regExpExample1 = wx.StaticText(
            self, wx.ID_ANY, "eg. For everything with \"animation\" in " +
            "StandardDataSets/Collada section:")
        self.__regExpExample1.SetOwnForegroundColour(wx.BLUE)
        self.__regExpExample2 = wx.StaticText(
            self, wx.ID_ANY,
            "StandardDataSets\\\\Collada\\\\[\\S]*animation[\\S]*")
        self.__regExpExample2.SetOwnForegroundColour(wx.BLUE)

        treeSizer = wx.BoxSizer(wx.HORIZONTAL)
        treeSizer.Add(self.__treeRadio, 0, wx.ALL, 5)
        treeSizer.Add(self.__treeCtrl, 1, wx.EXPAND | wx.ALL, 5)

        bottomOuterSizer = wx.BoxSizer(wx.VERTICAL)
        bottomSizer = wx.BoxSizer(wx.HORIZONTAL)
        bottomSizer.Add(self.__regButton, 0, wx.ALL, 5)
        bottomSizer.Add(self.__regExpLabel, 1, wx.EXPAND | wx.ALL, 5)
        bottomSizer.Add(self.__regExpCtrl, 2,
                        wx.EXPAND | wx.TOP | wx.RIGHT | wx.LEFT, 5)
        bottomSizer.Add(self.__regExpUpdateButton, 0, wx.ALL, 5)
        bottomOuterSizer.Add(bottomSizer)
        bottomOuterSizer.Add(self.__regExpExample1, 0,
                             wx.ALIGN_CENTER | wx.TOP, 2)
        bottomOuterSizer.Add(self.__regExpExample2, 0,
                             wx.ALIGN_CENTER | wx.TOP, 2)

        topSizer.Add(title, 0, wx.ALIGN_CENTER | wx.ALL, 5)
        topSizer.Add(treeSizer, 1, wx.EXPAND)
        topSizer.Add(self.__GetCommentsSizer(), 0,
                     wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 20)
        topSizer.Add(bottomOuterSizer, 0, wx.ALIGN_CENTER)

        self.__treeRadio.SetValue(True)
        self.__mode = FSelectDataSetDialog.__TREE
        self.__OnTreeButtonClicked(None)

        self.Bind(wx.wizard.EVT_WIZARD_PAGE_CHANGING, self.__OnFinish)

    def __OnFinish(self, e):
        settings = self.__settingsPage.GetSettings()
        regExId = self.__testProcedure.GetRegExId(settings)

        if (regExId == -1):
            concatRegEx = []
        else:
            concatRegEx = copy.deepcopy(
                self.__testProcedure.GetRegExList(regExId))
            if (concatRegEx[-1] != ""):
                concatRegEx[-1] = concatRegEx[-1] + "|"

        try:
            paths, regEx = self.__GetDataSets(concatRegEx)
        except re.error, ex:
            FUtils.ShowWarning(self, "Bad regular expression.")
            e.Veto()
            return

        if (regEx == []): return
        if (regExId == -1):
            self.__testProcedure.AddRegEx(settings, regEx)
        else:
            if (FUtils.ShowConfirmation(
                    self, "The following regular " +
                    "expression is already assigned to the selected " +
                    "settings:\n\n" +
                    self.__testProcedure.GetRegExString(regExId) + "\n\n" +
                    "Do you want to overwrite? No will append the new " +
                    "regular expression with the one above.", False)):
                self.__testProcedure.SetRegEx(
                    regExId, regEx,
                    self.__testProcedure.GetIgnoredRegExList(regExId))
            else:
                self.__testProcedure.SetRegEx(
                    regExId, concatRegEx,
                    self.__testProcedure.GetIgnoredRegExList(regExId))
Exemple #5
0
 def __DisplayDeleteTestMessage(self, keys, message):
     for key in keys:
         test = self.__testProcedure.GetTest(key)
         message = (message + "    " + test.GetSeparatedFilename() + "\n")
     return FUtils.ShowConfirmation(self, message, True)