모듈:변환/테스터
Module:Convert/tester이 모듈은 템플릿 출력을 예상 텍스트와 비교하기 위해 장치 테스트를 실행한다.또한, 모듈은 확장 템플릿의 결과를 출력할 수 있다.
테스트 모듈용인 경우:변환, 테스터는 테스트 입력에 간단한 형식을 사용하여 많은 테스트를 필요로 하는 다른 템플릿에 유용해야 한다.
테스트 케이스 예제
- 모듈:변환/샌드박스/테스트 케이스 • 테스트할 템플릿(예상 출력 포함)
- 모듈 토크:변환/샌드박스/테스트 케이스 • 테스트 결과 보기
시험 결과를 보기 전에 시험장 페이지를 저장할 필요는 없다.예를 들어, 모듈:컨버터/샌드박스/테스트 케이스를 편집하여 테스트를 변경할 수 있다.해당 페이지를 계속 편집하는 동안 ""Module talk:Convert/sandbox/testcases (따옴표 없이)"를 "템플릿으로 페이지 미리 보기" 아래의 페이지 제목 상자에 붙여넣은 다음 "미리보기 표시"를 클릭하십시오.
테스트 케이스 대화 페이지(예: 모듈 대화:컨버터/샌드박스/테스트 케이스)에는 다음이 포함된다.
{{#8226:190/190/테스트케이스 run_190}}} 테스트 케이스 모듈 페이지(예: 모듈:변환기/샌드박스/테스트케이스)는 다음을 포함할 수 있다.
로컬 테스트 = [==] 테스트할 템플릿은 줄의 시작 부분에 있어야 한다.템플릿으로 시작하지 않는 선은 무시된다.{{convert/sandbox1에이커lk=on}}} 1 [[아크레](0.40 [[헥타레 ha]) {{콘버트/샌드박스 1m2에이커 lk=on}} 1 [제곱미터] (0.00025 [[acre]s)] {{콘버트/샌드박스 0.16/l 2 disp=table align="오른쪽" 0.16\n ]정렬="오른쪽"0.61 ] 로컬 p = 요구('모듈:변환/테스터') p.tests = 테스트 반환 p 원하는 경우 테스트에 지정된 템플릿과 다른 템플릿을 사용하여 테스트를 실행할 수 있다.예를 들어, 다음은 모듈에서 테스트를 실행한다.변환/샌드박스/테스트케이스는 해당 페이지에서 찾은 각 템플릿의 이름을 ""로 변경함convert/sandbox2".
{{#8226:196/196/테스트케이스 run_filename template=message/message2}} 포맷
테스트는 여러 줄의 문자열에서 추출된다.템플릿으로 시작하지 않는 행은 무시된다.처리된 각 행은 템플릿으로 시작하고, 그 다음에 공백이 뒤따르며, 그 다음, 템플릿을 확장하여 발생하는 wikitxt가 뒤따른다.
예상 출력은 한 줄로 입력해야 한다.템플릿에서 여러 줄을 출력하는 경우 해당 선은 "\n"(2자 - 백슬래시)으로 결합되어야 한다.n).
템플릿이 같을 필요는 없다. 예를 들어 다음과 같은 테스트가 효과가 있을 것이다.
국소시험 = [=[ {{convert 12m}] 12m(39 ft) {{ {{/convert 12m(39 ft) {{age 1989년 7 23 2003년 7월 7일 14}} 13{{age in 2007년 5일 2008년 5일 24일 4시 335 ]==] 결과에서 템플릿의 출력이 예상 텍스트와 정확히 일치하면 상태 열에 "통과"가 표시된다.예상 텍스트가 없는 경우 템플릿 출력은 실제 열에 빈 상태로 표시된다.주어진 예상 텍스트가 템플릿 출력과 다를 경우 템플릿 출력은 실제 열에 "실패" 상태로 표시되고, 실패 횟수는 페이지 상단에 표시된다.페이지를 검색하여 "실패"를 검색하면 각 문제가 발견된다."실패" 결과는 노위키 실제 및 예상 위키텍스트를 보여주는 행이 뒤따른다.
검정 지정
(위의 예와 같이) 테스트 케이스 모듈을 사용하는 경우 테스트 텍스트는p.tests실행 전run_tests.
또는 시험 텍스트는 어느 페이지에서나 또는 어떤 페이지의 어떤 섹션에서나 읽을 수 있다.예를 들어 다음의 wikitxt를 샌드박스에 입력할 수 있다.
== 혼합시험 == <사전> 12m} 12m(39ft) {{컨버터/샌드박스 0.16/l 2 disp=table=}} 얼라이너="오른쪽" 0.16\n 얼라이너="오른쪽" 0.61"{{{{nage in 2007년 5일 24일 2008년 4월 23일 23일 335--- 다음 라인은 "실패"를 입증하기에 부정확하다.{{변환 12m lk=on}}} 12 [[mmm](39 [Foot ft]))다음 줄은 예상 텍스트가 제공되지 않을 때의 결과를 보여준다.{{convert/sandbox 1 - 5 in mm lk=on}}}</pre> 위와 같은 경우 다음 절과 같이 시험을 실시할 수 있다.
여러 줄 문자열을 사용하여 테스트를 지정하는 대신 테이블을 할당할 수 있다.p.tests다음 테스트 케이스 모듈에 표시된 바와 같이
local tests = { -- Each test item is of form { template, expected }. { '{{convert 12 m}}', '12 metres (39 ft)' }, { '{{convert/sandbox 0.16 /l 2 disp=table}}', 'align="right" 0.16\n align="right" 0.61' }, { '{{age in days 2007 5 24 2008 4 23}}', '335' }, { '{{convert 12 m lk=on}}', '12 [[meter metres]] (39 [[Foot ft]])' }, {'{{convert/sandbox 1 - 5 in mm lk=}}' }, {local p = required('Module:변환/테스터') p.tests = 테스트 반환 p 이 예는 위의 "혼합 테스트"에서 다중 행 문자열과 동일한 결과를 제공한다.
모든 페이지에서 테스트 실행
샌드박스나 토크 페이지에 다음 wikitxt 행 중 하나를 입력하면 지정된 위치에서 발견된 테스트가 실행된다.첫 번째 줄은 "템플릿 토크:예제"는 "혼합 테스트" 섹션에 있는 해당 페이지의 테스트만 보여주는 반면, 두 번째 테스트는 "혼합 테스트" 섹션에 있는 테스트만 보여준다.
{{#8226:192/192 run_192 페이지=템플릿 토크:예){{#invoke:convert/tester run_tests 페이지=템플릿 토크:예제 섹션=혼합 테스트} 데모로서, 아래 표의 제작에는 3개의 대시(dash)로 시작하는 코멘트를 포함하여 다음과 같은 라인을 사용한다.
{{#invoke:변환/테스터 run_tests 페이지=모듈:변환/테스터/doc 섹션=테스트 지정 show=all}} 테스트 2회 실패, 예상 텍스트가 비어 1회 테스트가 무시됨
| 템플릿 | 기대됨 | 실제(다른 경우) | 상태 |
|---|---|---|---|
| {{convert12m}}} | 12m(39ft) | 통과하다 | |
| {{convert/sandbox 0.16 /l 2 disp=테이블}}}} | align="오른쪽" 0.16 align="오른쪽" 0.61 | style="텍스트-텍스트:오른쪽;" 0.16 style="텍스트-텍스트:오른쪽;" 0.61 | 실패하다 |
| (위, 노위키) | align="오른쪽" 0.16 align="오른쪽" 0.61 | style="텍스트-텍스트:오른쪽;" 0.16 style="텍스트-텍스트:오른쪽;" 0.61 | |
| 2007년 5월 24일 2008년 4월 23일 {{age in days 2007. | 335 | 통과하다 | |
| 다음 줄은 "실패"를 입증하기 위해 부정확하다. | Cmnt | ||
| {{convert 12m lk=on}}}} | 12m(39ft) | 12m(39ft) | 실패하다 |
| (위, 노위키) | 12 [[mmm](39 [ftft])) | 12 [[meter]s(39 [피트(단위) ft])) | |
| {{convert/sandbox 1 - 5 in mm lk=on}}}} | 1~5인치(25~155mm) | ||
예상 결과 만들기
함수make_tests다음에 의해 예상되는 형식의 시험을 만드는 데 사용될 수 있다.run_tests예를 들어 샌드박스에서 다음 중 하나를 미리 보면 지정된 페이지에서 발견된 각 템플릿을 확장한 결과가 표시된다.
{{#8226:192/192 make_192 페이지=템플릿 토크:예){{#invoke:convert/테스터 make_tests 페이지=템플릿 토크:예시 show=all}} 사용시make_tests입력에서 예상되는 결과는 무시된다.대신, 이 모듈은 각 템플릿과 실제 출력을 테스트 케이스 페이지를 만들기 위해 복사할 수 있는 일반 텍스트로 보여준다.처리할 템플릿은 설정을 통해 지정할 수 있다.p.tests또는 선택적인 섹션이 있는 페이지를 지정함으로써.
만약 show=all포함되며, 결과에 포함되지 않은 모든 라인이 포함된다.출력물을 복사하여 각 템플릿에 대한 예상 텍스트를 업데이트하기 위해 테스트로 페이지를 대체하는 데 사용할 수 있지만 템플릿이 아닌 행은 변경하지 않는다.
시연으로서, 아래의 행을 사용하여 아래와 같은 텍스트를 제작한다.
{{#invoke:변환/테스터 make_tests 페이지=모듈:변환/테스터/doc 섹션=테스트 지정} {{12m 옮기다}}12미터({{convert/sandbox 0.16/l 2disp=table}}style="text-align:오른쪽."0.16\n style="text-align:오른쪽."0.61{일에{나이 2007년 5242008년 423}}335{{12나 변환하 lk=on}}12[m-LSB-]]s({{convert/sandbox 1-5mm에 lk=on}}. 1–5 -LSB-는 경우인치](25–127 [Millimeter mm]]) show=all 사용
그 show=all옵션 사용 가능make_tests와 함께run_tests.
예제:make_tests이전 섹션에 나와 있다.
사용. show=all와 함께run_tests주석 라인이 출력 표에 표시될 수 있도록 허용 - 모든 라인이 표시되는 것은 아니며, 3개의 대시로 시작하는 라인만 표시할 수 있다.예를 들어 시험장에는 다음 사항이 포함될 수 있다.
2014년 1월 12일 추가됨. - - 다음 테스트에서는 위젯 옵션을 확인하십시오.{{example 1 2 위젯=on}}...(예상 출력)... 에 의해 생산된 테이블run_tests다음 테스트는 "위젯 옵션을 확인하십시오."를 주석 라인으로 표시하지만, 다음 테스트의 경우 show=all사용된다.코멘트는 배경색이 뚜렷하지만 상태 열에 'Cmnt'를 표시해 검색하면 찾을 수 있다.
모듈 및 해당 샌드박스 비교
모듈을 볼 때 문서 페이지가 표시되며, 모듈에 샌드박스가 있는 경우, 문서에는 모듈과 해당 샌드박스를 분산시키기 위한 링크가 포함된 "편집자가 이 모듈의 샌드박스에서 실험할 수 있다"가 포함된다.
테스터 모듈이 제공하는 것은compare일련의 모듈을 확인하고 샌드박스와 비교할 수 있는 기능.디프 링크가 있는, 내용이 다른지 여부를 보여주는 테이블이 표시된다.
예를 들어 다음과 같은 위키텍스트를 사용할 수 있다.
{{#invoke:변환/테스터 비교 예제/데이터}} "예" 및 "예/데이터" 이름에는 콜론이 포함되지 않는다.:() 따라서 "모듈:"를 가정한다.명령어 비교 모듈:모듈의 예:예제/샌드박스 및 모듈:모듈 예/데이터:예/데이터/샌드박스
또한 모듈이 다음에서 페이지 제목 쌍을 정의할 수도 있다.p.pairs(테이블), 그리고 테스터 모듈을 사용하여 각 타이틀 쌍에 대한 테이블을 생성한다.
편의상 특정 키워드를 정의한다.키워드가 인식되면 파라미터가 아닌 모듈에서 페어 리스트가 나온다.예를 들어, 다음은 "전환" 키워드를 사용하여 모듈 관련 페이지 쌍 목록을 얻는다.개종하다.
{{#8226:196/192 비교 변환}} 다음 텍스트는 위로부터 발생할 수 있는 출력을 보여주는 샘플이다.
- 모듈:변환 • 모듈:변환/샌드박스 • 다른 (디프)
- 모듈:변환/데이터 • 모듈:변환/데이터/샌드박스 • 동일한 내용
- 모듈:변환/텍스트 • 모듈:변환/텍스트/샌드박스 • 다른 (디프)
- 모듈:변환/추가 • 모듈:변환/추출/샌드박스 • 다른 (디프)
기본적으로 각 출력 라인은 '로 접두사가 되어 있다.*bulleted list를 주기 위해서.대체 접두사는 다음과 같이 지정할 수 있다.prefix매개 변수예를 들어, 다음은 들여쓰기된 글머리 기호 목록을 제공한다.
{{#8226:196/192 비교 변환 접두사=:*}}
-- 고정 텍스트와 비교하여 템플릿의 출력을 테스트하십시오. -- 예상 텍스트는 한 줄이어야 하지만 다음이 포함될 수 있음 - "\n"(2자)으로 뉴라인이 예상됨을 나타냄 -- 테스트는 p.tests(string 또는 테이블)를 설정하여 실행(또는 생성)하거나, -- 페이지=를 설정하여PAGE_TITLE(및 선택적으로 섹션=)섹션_TITLE), -- 그런 다음 run_reason(또는 make_reason)을 실행하십시오. 국부적 컬렉션 = {} 컬렉션.__index = 컬렉션 하다 기능을 하다 컬렉션:덧셈을(항목) 만일 항목 ~= 못을 박다 그때 자아의.n = 자아의.n + 1 자아의[자아의.n] = 항목 종지부를 찍다 종지부를 찍다 기능을 하다 컬렉션:합류하다(9월을 보내다) 돌아오다 table.classat(자아의, 9월을 보내다) 종지부를 찍다 기능을 하다 컬렉션.새로운() 돌아오다 설정 가능한({n = 0}, 컬렉션) 종지부를 찍다 종지부를 찍다 국부적 기능을 하다 텅 빈(문자 메시지를 보내다) -- 텍스트가 0이거나 비어 있으면 true로 반환( 문자열 추정) 돌아오다 문자 메시지를 보내다 == 못을 박다 또는 문자 메시지를 보내다 == '' 종지부를 찍다 국부적 기능을 하다 옷을 벗기다(문자 메시지를 보내다) -- 선행/트레이닝 공백 없이 텍스트 반환 돌아오다 문자 메시지를 보내다:짝을 맞추다("^%s*(^%)%s*$") 종지부를 찍다 국부적 기능을 하다 정상화하다(문자 메시지를 보내다) -- 스트립 마커를 교체하여 정규화된 텍스트 반환 - 고정된 값을 가진 고유 번호로 비교가 가능하다. 돌아오다 문자 메시지를 보내다:gsub('(\127[^\127]*UNIQ[^\127]*%-)(%x\+)(-QINU[^]\127]*\127)', '%100000000%3') 종지부를 찍다 국부적 기능을 하다 status_box(통계, 예상한, 실제의, 등화) 국부적 라벨을 붙이다, 색칠을 하다, 정렬시키다, 실패하다 만일 등화 그때 실제의 = '' 정렬시키다 = '중앙' 색칠을 하다 = 'silver' 라벨을 붙이다 = 'cmnt' 그렇지 않으면 예상한 == '' 그때 통계.무시한 = 통계.무시한 + 1 돌아오다 '', 실제의 그렇지 않으면 정상화하다(예상한) == 정상화하다(실제의) 그때 통계.통과하다 = 통계.통과하다 + 1 실제의 = '' 정렬시키다 = '중앙' 색칠을 하다 = '녹색' 라벨을 붙이다 = '통과' 다른 통계.실패하다 = 통계.실패하다 + 1 정렬시키다 = '중앙' 색칠을 하다 = '빨간색' 라벨을 붙이다 = '실패' 실패하다 = 진실의 종지부를 찍다 국부적 sbox = 'style="text-thead:' .. 정렬시키다 .. ';color:white;white:' .. 색칠을 하다 .. ';" ' .. 라벨을 붙이다 돌아오다 sbox, 실제의, 실패하다 종지부를 찍다 국부적 기능을 하다 status_text(통계) 국부적 색칠을 하다, discused_text, 음스그, t텍스트 만일 통계.템플릿 그때 t텍스트 = ""사용[템플릿:" .. 통계.템플릿 .. "]]:''' " 다른 t텍스트 = '' 종지부를 찍다 만일 통계.실패하다 == 0 그때 만일 통계.통과하다 == 0 그때 색칠을 하다 = 'salmon' 음스그 = '테스트 수행 없음' 다른 색칠을 하다 = '녹색' 음스그 = 문자열.format('모든 %d 테스트 합격', 통계.통과하다) 종지부를 찍다 다른 색칠을 하다 = '어두워진' 음스그 = 문자열.format('%d 테스트%s 실패', 통계.실패하다, 통계.실패하다 == 1 그리고 '' 또는 's) 종지부를 찍다 만일 통계.무시한 == 0 그때 discused_text = '' 다른 색칠을 하다 = 'salmon' discused_text = 문자열.format(', %d 테스트%s이(가) 무시됨(예상된 텍스트가 비어 있음, 통계.무시한, 통계.무시한 == 1 그리고 '' 또는 's) 종지부를 찍다 돌아오다 t텍스트 .. '<span style="font-size:120%;color:흰색;;-color:' .. 색칠을 하다 .. ';">' .. 음스그 .. discused_text .. '.[/span]' 종지부를 찍다 국부적 기능을 하다 run_beates(액자에 넣다, 템플릿, 아그, clush_multiline) -- 템플릿 "{예 2 = def abc name = ghi jkl }" -- xargs { "abc ", "def", 이름 = "ghi jkl" }. 만일 템플릿:후보선수(1, 2) == '{{' 그리고 템플릿:후보선수(-2, -1) == '}}' 그때 템플릿 = 템플릿:후보선수(3, -3) .. ' ' ­ 마지막 필드를 얻기 위한 보초 다른 돌아오다 '(기본 템플릿)' 종지부를 찍다 국부적 자르그 = {} 국부적 색인을 달다 = 1 국부적 템플리트 이름 국부적 기능을 하다 put_arg(k, v) -- 슬러지:모듈:Val은 모듈 사용:인수를 자르는 인수 및 - 빈 논쟁은 생략한다.여기서 시뮬레이션을 해보십시오. ­ 나중에 이것을 통제할 매개 변수가 필요하다. 만일 템플리트 이름:후보선수(1, 3) == '발' 그때 v = 옷을 벗기다(v) 만일 v == '' 그때 돌아오다 종지부를 찍다 종지부를 찍다 자르그[k] = v 종지부를 찍다 템플릿 = 템플릿:gsub('(%[%[[^%[%]]-) (.-%]%])', '%1\0%2') - 파이프 링크의 파이프를 0바이트로 교체 을 위해 밭을 갈다 에 템플릿:gmatch('(.-) ') 하다 밭을 갈다 = 밭을 갈다:gsub('%z', ' ') - 파이프 링크의 파이프 복원 만일 템플리트 이름 == 못을 박다 그때 템플리트 이름 = 아그.템플릿 또는 옷을 벗기다(밭을 갈다) 만일 템플리트 이름 == '' 그때 돌아오다 '(기본 템플릿)' 종지부를 찍다 다른 국부적 k, eq, v = 밭을 갈다:짝을 맞추다("^(.-)(=)(.*)$") 만일 eq 그때 k, v = 옷을 벗기다(k), 옷을 벗기다(v) -- k 및/또는 v는 비워 둘 수 있음 국부적 i = 톤넘버(k) 만일 i 그리고 i > 0 그리고 끈.매치(k, '^%d+