At the moment, the test groups appear on the page in random order. Is there any way of getting them to appear in the order that they are defined? — Mr. Stradivarius ♪ talk ♪ 15:30, 3 April 2013 (UTC)
Hi UnitTesters. I'm failing to find the proper format for the nesting tests at Module:Delink/testcases function test_nesting. How do I do that? What I want is the expanded result to be compared to the non-expanded expected cases. Martijn Hoekstra (talk) 15:50, 3 April 2013 (UTC)
This module has several shortcomings:
I created an alternative test module in hu.wikipedia and would welcome any comments or feature requests. The module is at hu:Modul:Homokozó/Tgr/ScribuntoUnit, a usage example is at hu:Modul:Homokozó/Tgr/Set/tests (the documentation is in Hungarian, but comments and variable names are in English, and the code follows xUnit conventions, so understanding it shouldn't be a problem). It throws exceptions from failed assertions, builds a result table based on which tests throw exception/error, and can then present the results in any way; I believe the separation of actual testing and display code makes it more maintainable and reusable. --Tgr (talk) 15:17, 25 May 2013 (UTC)
Please see Module talk:ScribuntoUnit#Test a string contains expected text for an enhancement request. --Derbeth talk 21:41, 1 January 2014 (UTC)
When comparing template vs. module, going with "==" seems wrong. The template and module may differ in e.g. number and types of HTML whitespaces which don't matter, or HTML representations ( , etc..). I think this is a good sample: Module:Sandbox/Dts/testcases. At first stage, I'd suggest making first_difference a member function. If this member function returns nil then strings are considered identical. This will allow tests to define their own method. Second stage will be to offer some pre-created options.. Tsahee (talk) 20:44, 19 January 2014 (UTC)
nowiki
to show the wikitext only if the actual result does not contain a script errorI suggest making the nowiki
option support a string like "if no errors" as a value that would make mw.text.nowiki
not be applied on the actual result if a script error can be detected in it. If there's a script error, the wikitext is of no use (it will be the same regardless of the error), while the rendered result can be clicked on to show the error message, making it easier to fix. --Mark Otaris (talk) 16:42, 13 October 2015 (UTC)
Why {{#invoke:UnitTests/testcases/frame | _test}} give different result for direct #invoke vs. invoke via UnitTests module? --Ans (talk) 13:58, 11 October 2017 (UTC)
Module:Citation/CS1 supports some 25 live templates and Module:Citation/CS1/sandbox supports an equal number of sandbox templates. We could have added WP:TemplateStyles markup (<templatestyles src="<name>/styles.css" />
) 25× to the live templates and 25× to the sandboxen but that just seemed dumb so each of the modules concatenate template styles to the end of the cs1|2 template rendering using this (where styles
is the name of the appropriate css page):
frame:extensionTag ('templatestyles', '', {src=styles})})
and that works great.
Except in Module:Citation/CS1/testcases.
Where every test fails. 318 failures. There are differences between the live and sandbox modules but not that many.
Because of TemplateStyles. Why? Because TemplateStyles inserts a stripmarker at the end of every cs1|2 template rendering and each stripmarker has a unique id number. So, this always fails:
{{#ifeq:{{cite book |title=Title}}|{{cite book |title=Title}}|ok|FAIL}}
even though the two {{cite book}}
templates are identically written.
Here are two transclusions of identical templates; note the stripmakers at the ends:
'"`UNIQ--templatestyles-00000006-QINU`"'<cite class="citation book cs1"></cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{[[Template:cite book|cite book]]}}</code>: </span><span class="cs1-visible-error citation-comment">Empty citation ([[Help:CS1 errors#empty_citation|help]])</span>
'"`UNIQ--templatestyles-00000008-QINU`"'<cite class="citation book cs1"></cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{[[Template:cite book|cite book]]}}</code>: </span><span class="cs1-visible-error citation-comment">Empty citation ([[Help:CS1 errors#empty_citation|help]])</span>
To get round this, I have hacked Module:UnitTests function preprocess_equals_preprocess()
(called only by preprocess_equals_preprocess_many()
) to accept a new option.templatestyles
. When that option is set to true
, the code looks at the content of expected
and extracts the templatestyles
stripmarker identifier (an 8-digit hex number). It then overwrites the templatestyles
stripmarker identifier in actual
so that they both have the same identifier. Only then does preprocess_equals_preprocess()
compare actual
against expected
.
If you are looking to text changes in ~/sandbox/styles.css compared to ~/styles.css, this change won't help you – and Module:UnitTest is probably the wrong tool anyway because stripmarkers are replaced with their actual content after this module has run.
I suppose that there might be reasons that we might want to expand the capabilities of this functionality though I'm not sure just what those reasons might be. For example these possibilities:
none
– remove templatestyles
stripmarkers from both actual
and expected
; no styling applied to the renderingsactual
– replace templatestyles
stripmarker identifier in expected
with the templatestyles
stripmarker identifier from actual
; both use ~/sandbox/styles.css for stylingPerhaps there are others.
—Trappist the monk (talk) 19:27, 28 March 2019 (UTC)
What about generating a table of contents? Trigenibinion (talk) 14:54, 12 March 2021 (UTC)
A handful of functions in this module are not marked 'local', but could and (arguably) should be. --86.143.105.15 (talk) 10:36, 27 January 2022 (UTC)
I'm creating testcases for Module:GetShortDescription and Module:Annotated link and due to my own derping, left some copy-pasta typos which should have caused a series of tests to fail, but they did not. I fixed the typos but purposefully altered one test to fail and it sailed through running {{#invoke:AnnotatedLink/testcases|run_tests}}
. Am I doing something wrong, or is there a problem with this module? Fred Gandt · talk · contribs
09:42, 27 January 2023 (UTC)
Fred Gandt · talk · contribs
09:45, 27 January 2023 (UTC)Fred Gandt · talk · contribs
11:18, 27 January 2023 (UTC)
Fred Gandt · talk · contribs
13:01, 27 January 2023 (UTC)Currently it appears that nowiki
is a boolean option; could we have a third option to display both the <nowiki>...</nowiki>
and parsed results? We could of course double all tests where this might be desirable, but 1) they might not end up anywhere near each other, and 2) it'd be inefficient. Suggest: {nowiki = 2}
(semantically nice and easy math) for the third state. Fred Gandt · talk · contribs
20:36, 27 January 2023 (UTC)
=1
in the doc is probably because its shorter than typing =true
), does something like a seperate nowikiplus
or combined
option sound better? I'll probably have to standardise the module a little to make adding this not mean pasting the same code in 5 different functions, but it should be doable (I'll just have to think about how to lay it out in the output). Aidan9382 (talk) 09:37, 28 January 2023 (UTC)
combined
is better. Thank you for your consideration 😊 Fred Gandt · talk · contribs
09:46, 28 January 2023 (UTC)
preprocess_equals(_many)
and preprocess_equals_preprocess(_many)
running under the new system idea in the sandbox) - Does the format I've given seen fine in your testcases? I don't want to start working on the more complicated to convert functions unless it's all working fine. You can test these by changing require('Module:UnitTests')
to require('Module:UnitTests/sandbox')
and specifying combined
instead of nowiki
. Aidan9382 (talk) 14:41, 28 January 2023 (UTC)
Fred Gandt · talk · contribs
16:07, 28 January 2023 (UTC)Another suggestion: present all failed tests at the top of the results. This might be achieved multiple ways and someone with greater familiarity with the code might be best suited to decide exact what approach is best. As a user; seeing two sections – the uppermost for failed and the next for passed tests – would be ideal. Section depth should be unimportant unless the results are substed (but who would do that?); lvl 3 sections should be fine since the whole lot can be placed under a standard lvl 2 section for posterity. Diverting the results as their condition becomes known to the appropriate section should be trivial (easy for me to say right? I'm a tad busy right now but will tackle it myself if necessary). Fred Gandt · talk · contribs
09:24, 28 January 2023 (UTC)
Fred Gandt · talk · contribs
09:46, 28 January 2023 (UTC)Fred Gandt · talk · contribs
16:13, 28 January 2023 (UTC)
#invoke:
(maybe |highlight=
, a bit like |differs_at=
).
Fred Gandt · talk · contribs
16:44, 28 January 2023 (UTC)
class="wikitable module-unit-tests-result"
so the script can be more particular? I nearly went ahead and stuck it in there myself, but considered that might be a bit rude. I should have the script to pick out sets of tables where results of multiple invocations are present... Fred Gandt · talk · contribs
01:51, 29 January 2023 (UTC)
unit-tests-result
. I don't think it would've been rude to add the class yourself, it's a simple minor improvement and it doesn't screw with the existing layout, so it's completely fine. Aidan9382 (talk) 06:07, 29 January 2023 (UTC)
Fred Gandt · talk · contribs
07:48, 29 January 2023 (UTC)@Pppery Hello, I noticed you reverted my edit. Could you share an example of a test that should be failing passing. Thanks, – BrandonXLF (talk) 16:34, 25 May 2023 (UTC)
congratulations ! Thanks. -- Wladek92 (talk) 08:43, 16 June 2025 (UTC)