Merge lp:~wilhelm-hedman/texttest/texttest into lp:texttest

Proposed by Emily Bache
Status: Needs review
Proposed branch: lp:~wilhelm-hedman/texttest/texttest
Merge into: lp:texttest
Diff against target: 204 lines (+61/-9)
7 files modified
bin/texttest (+5/-1)
texttestlib/default/__init__.py (+1/-0)
texttestlib/default/batch/junitreport.py (+4/-1)
texttestlib/default/gtkgui/default_gui/fileviewers.py (+42/-3)
texttestlib/default/gtkgui/version_control/git.py (+4/-3)
texttestlib/etc/default_gui-dynamic.xml (+1/-0)
texttestlib/etc/default_gui.uimap (+4/-1)
To merge this branch: bzr merge lp:~wilhelm-hedman/texttest/texttest
Reviewer Review Type Date Requested Status
Geoff Bache Pending
Review via email: mp+299668@code.launchpad.net

Description of the change

Useful bugfixes

#1597207 - partial fix, some of the tests failed on ubuntu 16.04 because we were running with a swedish locale. This fixes that at least, although other failures remain.

The other useful fix is for git move when the path contains symlinks.

To post a comment you must log in.
lp:~wilhelm-hedman/texttest/texttest updated
5482. By Wilhelm Hedman

Added functionality to view uncollated PDFs

5483. By Wilhelm Hedman

Merge branches

Revision history for this message
Geoff Bache (geoff.bache) wrote :

Thanks for these! Apologies for delay, arrived when I was on holiday and then forgot about it...

1) The Git fix is very useful, I've merged that now.
2) The locale changes need to be done in the tests, we have various mechanisms for that. I'll look into it, but it's usually not a good idea to hardcode a locale in application code.
3) The viewing uncollated files functionality seems likely to be useful: however it's unfortunate that it assumes PDF. It should handle any file and use "view_program" (no need for a new config entry) to plug in a PDF viewer or whatever else. So that one needs some more work I think.

Unmerged revisions

5483. By Wilhelm Hedman

Merge branches

5482. By Wilhelm Hedman

Added functionality to view uncollated PDFs

5481. By Wilhelm Hedman

Fixed shebang path

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/texttest'
2--- bin/texttest 2014-09-02 11:48:16 +0000
3+++ bin/texttest 2016-08-04 07:44:03 +0000
4@@ -1,4 +1,4 @@
5-#!/usr/bin/env python
6+#!/usr/bin/python
7
8 import sys, os
9
10@@ -34,3 +34,7 @@
11 sys.stderr.write("Could not start TextTest due to Python version problems :\n" + \
12 "TextTest " + texttest_version.version + " requires at least Python " + \
13 reqVersion + ": found version " + strVersion + ".\n")
14+
15+
16+import locale
17+locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
18\ No newline at end of file
19
20=== modified file 'texttestlib/default/__init__.py'
21--- texttestlib/default/__init__.py 2015-02-20 11:13:19 +0000
22+++ texttestlib/default/__init__.py 2016-08-04 07:44:03 +0000
23@@ -1335,6 +1335,7 @@
24 app.setConfigDefault("max_file_size", { "default": "-1" }, "The maximum file size to load into external programs, in bytes. -1 means no limit.")
25 app.setConfigDefault("text_diff_program_filters", { "default" : [], "diff" : [ "^<", "^>" ]}, "Filters that should be applied for particular diff tools to aid with grouping in dynamic GUI")
26 app.setConfigDefault("diff_program", { "default": "tkdiff" }, "External program to use for graphical file comparison")
27+ app.setConfigDefault("pdf_view_program", { "default": "zathura" }, "External program to use for viewing PDF files")
28 app.setConfigDefault("view_program", { "default": self.defaultViewProgram(homeOS) }, \
29 "External program(s) to use for viewing and editing text files")
30 app.setConfigDefault("view_file_on_remote_machine", { "default" : 0 }, "Do we try to start viewing programs on the test execution machine?")
31
32=== modified file 'texttestlib/default/batch/junitreport.py'
33--- texttestlib/default/batch/junitreport.py 2015-10-09 13:08:04 +0000
34+++ texttestlib/default/batch/junitreport.py 2016-08-04 07:44:03 +0000
35@@ -58,13 +58,16 @@
36 suite_name=self._suiteName(test),
37 encoding=getpreferredencoding(),
38 time=str(t))
39+
40 if not test.state.hasResults():
41 self._error(test, result)
42 elif test.state.hasSucceeded():
43 self._success(result)
44+ elif not test.state.hasSucceeded() and test.state.getTypeBreakdown()[0] == "success":
45+ self._success(result)
46 else:
47 self._failure(test, result)
48-
49+
50 self.testResults[test.getRelPath().replace("/", ".")] = result
51
52 def getResults(self):
53
54=== modified file 'texttestlib/default/gtkgui/default_gui/fileviewers.py'
55--- texttestlib/default/gtkgui/default_gui/fileviewers.py 2014-09-18 12:32:33 +0000
56+++ texttestlib/default/gtkgui/default_gui/fileviewers.py 2016-08-04 07:44:03 +0000
57@@ -2,6 +2,7 @@
58 """
59 The various classes that launch external programs to view files
60 """
61+from collections import OrderedDict
62
63 import os
64 from texttestlib import plugins
65@@ -188,7 +189,7 @@
66 checkOutput = cmdArgs[0] == "storytext_editor"
67 self.startViewer(cmdArgs, description=description, checkOutput=checkOutput, env=env,
68 exitHandler=exitHandler, exitHandlerArgs=exitHandlerArgs)
69-
70+
71 def getViewerEnvironment(self, cmdArgs):
72 # An absolute path to the viewer may indicate a custom tool, send the test environment along too
73 # Doing this is unlikely to cause harm in any case
74@@ -264,7 +265,6 @@
75 if suite.app is app:
76 return suite
77
78-
79 class ViewTestFileInEditor(ViewInEditor):
80 def _getTitle(self):
81 return "View File"
82@@ -359,6 +359,43 @@
83 def isActiveForFile(self, fileName, comparison):
84 return ViewFilteredTestFileInEditor.isActiveForFile(self, fileName, comparison) and \
85 self.unorderedFiltersActive(comparison)
86+
87+
88+class ViewOriginalPDF(FileViewAction):
89+ def _getTitle(self):
90+ return "View Original PDF"
91+
92+ def getViewToolName(self, *args):
93+ return self.getConfigValue(self.getToolConfigEntry(), "default")
94+
95+ def getToolConfigEntry(self):
96+ return "pdf_view_program"
97+
98+ def getToolDescription(self):
99+ return "PDF viewing program"
100+
101+ def viewFile(self, viewTool, fileName):
102+ fileName = self.get_path()
103+ self.startViewer([viewTool, fileName], description=viewTool)
104+
105+ def _performOnFile(self, viewTool, fileName, *args):
106+ return self.viewFile(viewTool, fileName)
107+
108+ def get_path(self):
109+ from texttestlib.default.sandbox import CollateFiles
110+ collate_files = CollateFiles()
111+ expanded_collations = collate_files.expandCollations(self.currTestSelection[0])
112+ current_test = self.currFileSelection[0][1]
113+ for stem, test_file in expanded_collations:
114+ if stem == current_test.stem:
115+ return test_file[0]
116+ return None
117+
118+ def isActiveForFile(self, fileName, *args):
119+ if fileName and not os.path.isdir(fileName):
120+ pdf_path = self.get_path()
121+ return pdf_path and ".pdf" in pdf_path
122+ return False
123
124
125 class ViewFilteredOrigFileInEditor(ViewFilteredTestFileInEditor):
126@@ -454,6 +491,8 @@
127 return "View Raw Differences (between tests)"
128
129
130+
131+
132 class ViewFilteredFileDifferences(ViewFileDifferences):
133 def _getTitle(self):
134 return "View Differences"
135@@ -592,7 +631,7 @@
136 def getInteractiveActionClasses(dynamic):
137 classes = [ ViewTestFileInEditor, EditTestFileInEditor]
138 if dynamic:
139- classes += [ ViewFilteredTestFileInEditor, ViewContentFilteredTestFileInEditor,
140+ classes += [ ViewFilteredTestFileInEditor, ViewContentFilteredTestFileInEditor, ViewOriginalPDF,
141 ViewOrigFileInEditor, EditOrigFileInEditor, ViewContentFilteredOrigFileInEditor, ViewFilteredOrigFileInEditor,
142 ViewFileDifferences, ViewContentFilteredFileDifferences, ViewFilteredFileDifferences,
143 ViewPairwiseDifferences, ViewContentFilteredPairwiseDifferences, ViewFilteredPairwiseDifferences,
144
145=== modified file 'texttestlib/default/gtkgui/version_control/git.py'
146--- texttestlib/default/gtkgui/version_control/git.py 2014-10-10 15:26:23 +0000
147+++ texttestlib/default/gtkgui/version_control/git.py 2016-08-04 07:44:03 +0000
148@@ -29,8 +29,10 @@
149 vcs_independent.VersionControlInterface.startGUIProcess(self, relArgs, **kw)
150
151 def parseDateTime(self, input):
152+ import locale
153+ locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
154 return time.strptime(input, "%b %d %H:%M:%S %Y")
155-
156+
157 def getStateFromStatus(self, output):
158 words = output.split()
159 if len(words) > 0:
160@@ -69,8 +71,7 @@
161
162 def callProgram(self, cmdName, fileArgs=[], **kwargs):
163 if fileArgs:
164- # Only switch the first argument, otherwise gets difficult to capture
165- fileArgs = [ self.makeRelPath(fileArgs[0]) ] + map(os.path.realpath, fileArgs[1:])
166+ fileArgs = map(os.path.realpath, fileArgs)
167 return vcs_independent.VersionControlInterface.callProgram(self, cmdName, fileArgs, cwd=self.vcsDirectory, **kwargs)
168
169 def getCombinedRevisionOptions(self, r1, r2):
170
171=== modified file 'texttestlib/etc/default_gui-dynamic.xml'
172--- texttestlib/etc/default_gui-dynamic.xml 2014-11-11 08:51:59 +0000
173+++ texttestlib/etc/default_gui-dynamic.xml 2016-08-04 07:44:03 +0000
174@@ -67,6 +67,7 @@
175 <menuitem action="View Original File"/>
176 <placeholder name="ExtraOrigViewers" />
177 <menuitem action="View Filtered Original File"/>
178+ <menuitem action="View Original PDF"/>
179 <separator/>
180 <menuitem action="View Differences"/>
181 <placeholder name="ExtraDiffViewers" />
182
183=== modified file 'texttestlib/etc/default_gui.uimap'
184--- texttestlib/etc/default_gui.uimap 2014-11-28 14:04:01 +0000
185+++ texttestlib/etc/default_gui.uimap 2016-08-04 07:44:03 +0000
186@@ -112,6 +112,9 @@
187 [Name=View File]
188 activate = view file
189
190+[Name=View Original PDF]
191+activate = view original PDF
192+
193 [Name=View In Editor]
194 activate = view in editor
195
196@@ -330,7 +333,7 @@
197 [Name=View Filtered Original File]
198 activate = view filtered original file
199
200-[Name=View Raw Differences]
201+[Name=View Raw Differencess]
202 activate = view raw differences
203
204 [Name=View Content-Filtered Differences]

Subscribers

People subscribed via source and target branches