Jump to content

Module talk:Template test case

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Jonesey95 (talk | contribs) at 23:34, 14 January 2023 (format=columns + inline hybrid: more). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
WikiProject iconTemplates
WikiProject iconThis module is within the scope of WikiProject Templates, a group dedicated to improving the maintenance of Wikipedia's templates. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Note icon
This template should only be transcluded in the Wikipedia talk, Help talk, or Category talk namespace(s).

Multiple automatic sandbox versions

Can we please extend the automatic addition of a /sandbox variant to all _templateis if there is no _template++i? — Christoph Päper 11:14, 20 September 2019 (UTC)[reply]

Table with many tests

For some templates, especially inline templates like {{frac}}, it makes sense to have all or most test cases in a single table with one combination of parameters per row. It would be nice if this could be handled by a single function call by passing multiple parameter sets, e.g.:

{{test case|_template1=frac|_template3=sfrac
|_test1={1}      |_label1=single anonymous parameter, numeric
|_test2={1,2}    |_label2=two anonymous parameters, all numeric
|_test3={1,2,3}  |_label3=three anonymous parameters, all numeric
|_test4={1=1}    |_label4=single, first parameter
|_test5={2=1}    |_label5=single, second parameter
|_test6={3=1}    |_label6=single, third parameter
|_test7={1,3=2}  |_label7=first and third parameter
|_test8={2=1,3=2}|_label8=second and third parameter
|_test9={a}      |_label9=single anonymous parameter, alphabetic
|_test10={1,1}   |_label10=two equal parameters
}}

11:14, 20 September 2019 (UTC)

Alternatively, there should be an additional rendering mode cells. It would put the code and each result for all templates and sandbox versions into adjacent cells in a single table row, but the user would have to provide the surrounding table code (but possibly not the rows |-). — Christoph Päper 10:16, 1 January 2020 (UTC)[reply]
{| class="wikitable sortable"
|+ Test cases
|-
! Test case description !! Template call 
! {{tl|frac}} !! {{tl|frac/sandbox}} !! {{tl|sfrac}} !! {{tl|sfrac/sandbox}}
|-
{{test case|_format=cells|_template1=frac|_template3=sfrac|1|_label=single anonymous parameter, numeric}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|1|2|_label=two anonymous parameters, all numeric}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|1|2|3|_label=three anonymous parameters, all numeric}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|1=1|_label=single, first parameter}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|2=1|_label=single, second parameter}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|3=1|_label=single, third parameter}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|1|3=2|_label=first and third parameter}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|2=1|3=2|_label=second and third parameter}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|a|_label=single anonymous parameter, alphabetic}}
{{test case|_format=cells|_template1=frac|_template3=sfrac|1|1|_label=two equal parameters}}
|}

This came up when I was working on Template:Graphical timeline/testcases. At Special:Permalink/958740301 it can be observed that parameter |note3-at= gets a broken value. First character, hyphen, is correct, however, the first opening brace { of {{Period start}} is converted into an HTML entity for some reason. This results in an error Expression error: Unrecognized punctuation character "&" somewhere deep inside the template's internals. I've added a test case to demonstrate the issue on a smaller example. —⁠andrybak (talk) 13:38, 25 May 2020 (UTC)[reply]

See phab:T168759 * Pppery * it has begun... 20:45, 25 May 2020 (UTC)[reply]

Something just changed

From yesterday to today, the boxes at Template:Spoken Wikipedia/testcases changed from yellow to green, became collapsed, and introduced an error where they now don't seem to be able to embed audio files properly. I'm not sure where the edit that caused this was made, though. Does anyone know? {{u|Sdkb}}talk 21:20, 9 July 2020 (UTC)[reply]

Sdkb, user Izno has responded to the edit request. That would explain the change from yellow to green on /testcases. Templates {{Spoken Wikipedia}} and {{Spoken Wikipedia/sandbox}} now produce the same output. Audio player is also broken for me. —⁠andrybak (talk) 22:13, 9 July 2020 (UTC)[reply]
I've changed the output of /sandbox, and the audio players are now fixed. Perhaps the player doesn't survive in a collapsed state? —⁠andrybak (talk) 22:17, 9 July 2020 (UTC)[reply]
Andrybak, hmm, interesting. I just checked a few live instances, and it's not causing any problems there. {{u|Sdkb}}talk 22:18, 9 July 2020 (UTC)[reply]
(edit conflict)
Tests for media player
Collapsed Not collapsed
Audio player inside

Video player inside

Audio player is broken, but video is fine. —⁠andrybak (talk) 22:18, 9 July 2020 (UTC)[reply]

Sdkb, I suggest to move this discussion to WP:VPT. Module:Template test case is not at fault, it's wider issue. —⁠andrybak (talk) 22:23, 9 July 2020 (UTC)[reply]

How to specify page name?

I looked through the documentation, but I was unable to find a way to specify the page name (magic word PAGENAME) in a template test case. For templates that use Wikidata calls, for example, the Wikidata call checks the PAGENAME and retrieves the appropriate bit of data from the corresponding Wikidata page. Is there a way to do this? The result would be to render the template as it would appear when processed by Special:ExpandTemplates with the appropriate PAGENAME entered in the upper text field. – Jonesey95 (talk) 22:55, 23 July 2020 (UTC)[reply]

Partial answer, still looking for a real answer: A possible workaround is to use |qid= in your infobox. See Template:Ordination/testcases for an example. – Jonesey95 (talk) 01:23, 3 August 2020 (UTC)[reply]
I don't think this is possible. * Pppery * it has begun... 02:24, 4 August 2020 (UTC)[reply]

Paragraph break when using {{inline test case}}

This is probably something silly I am doing, but I can't figure out what. I am using {{inline test case}} in the testcase page of Template:Cite certification and from some reason I am sometimes (rarely) getting an extra paragraph break between results. I created an example: Template:Cite certification/testcases-example. I was worried that there is something wrong with the {{Cite certification}}, but as you can see from the code in the example, the paragraph break does not appear when running either the stable or the (identical) sandbox versions. Any ideas? --Muhandes (talk) 14:46, 31 December 2020 (UTC)[reply]

There was an invisible character (a Left-to-right mark) on your testcases example page. I copied the whole page to a text editor, told it to show the invisible characters, and deleted it. – Jonesey95 (talk) 16:51, 31 December 2020 (UTC)[reply]
Thanks, I must have wasted five hours of my time finding that one. I now have a good way to test it in the future. --Muhandes (talk) 19:36, 31 December 2020 (UTC)[reply]

Sandbox2, Test case2, and wrapperConfig

I'd like the ability to use a second sandbox, say, 'sandbox2', to enable simultaneous testing of different sets of changes in parallel tracks for the same template. Having browsed Module:Template test case, I believe a better method is available than the obvious brute force method of duplicating template FOO to FOO2, then FOO2/sandbox, and testcases to FOO2/testcases. Afaict the key seems to have something to do with wrapperConfig unless I'm mistaken, only I don't see how to use it, and the /doc doesn't have much to say about it.

This use case comes up occasionally in RL on complex templates that may need extended testing of some feature, while someone else desires to test another feature, or where different scenarios are being tried out. (For a RW case of the former type see Template talk:Find sources#Missing redirect detection bug.) I get the feeling I can just create Template:Find sources/sandbox2 with my changes, and then create a "wrapper config" somewhere, and set it as param2 to the invoke.

For example, can I just duplicate Module:Template test case/config to Template:Find general sources/MySandbox2Config, edit it to set sandboxSubpage = 'sandbox2', and then in Template:Find general sources/sandbox2 invoke like this: {{#invoke:Find sources|Find general sources, MySandbox2Config}}? Or am I misconstruing how this is supposed to work, and I should go back to the brute force method? Or something else? Pinging @Mr. Stradivarius and Trialpears:.

Either way, param2 of the module appears to be a config of some kind, so whether my assumptions above are right or wrong, it would be nice if someone could add a == Params == section to Module:Template test case/doc to describe what this param is and how to use it. (please Reply to icon mention me on reply; thanks!) Mathglot (talk) 22:28, 25 December 2021 (UTC)[reply]

@Mathglot: You can use a second sandbox by setting the |_template1=, |_template2= and |_template3= arguments. For example, {{test case|_template1=Find sources|_template2=Find sources/sandbox|_template3=Find sources/sandbox2|Foo}} outputs the following:

{{test case|_template1=Find sources|_template2=Find sources/sandbox|_template3=Find sources/sandbox2|Foo}}

The module is built so that the default value for _template1 is the base page of the current page, and the default value for _template2 is its sandbox subpage. In fact, if you are calling the module from Template:Find sources/testcases, you could omit the |_template1= and |_template2= arguments, and just specify |_template3=Find sources/sandbox2 to get the same results. — Mr. Stradivarius ♪ talk ♪ 01:17, 26 December 2021 (UTC)[reply]
As for the config file, this is not intended to be specified by users. I believe I allowed the config to be passed to the main function so that it can be more easily tested, but this ability is not currently used by Module:Template test case/testcases. I probably only used it in the console during initial development. Also, the config cannot be passed from wikitext; it needs to be passed from another Lua module. From wikitext you can only influence the contents of the first parameter (the frame object) to the function called from #invoke; you can't influence the contents of subsequent parameters. — Mr. Stradivarius ♪ talk ♪ 01:45, 26 December 2021 (UTC)[reply]
Thanks, Mr. Stradivarius, this was very helpful. Mathglot (talk) 17:26, 26 December 2021 (UTC)[reply]

format=columns + inline hybrid

I've a bunch of test cases for a template that takes lots of complicated parameters, but whose output is a relatively short text. Think {{cite book}} and you're in the ballpark. I want to see the code up top in a nowiki block like {{test case nowiki|format=columns}} or |format=rows gives me, but I'd like to see the output arranged vertically like {{test case nowiki|format=inline}} gives me.

Something like:

Example of desired output
{{example
 |first-argument = has a value
 |second-argument = does too
 |veni-vidi-vici = yes
 |lipsum = lorem
}}
  • Veni, vidi, vici
  • Lorem ipsum dolor sit amet

Any takers? Mr. Stradivarius? --Xover (talk) 08:45, 13 January 2023 (UTC)[reply]

{{Testcase table}} with |_format=? – Jonesey95 (talk) 22:26, 14 January 2023
Example:
{{code}}
{{code|foo}}

foo

foo

How's that? You can tweak the underscore parameters to your liking. – Jonesey95 (talk) 23:34, 14 January 2023 (UTC)[reply]