testapi.gms : API 품질 보증 테스트

설명

이 모델은 API 라이브러리에 포함된 모든 모델을 실행합니다.

기고자: Lutz Westermann, 2014년 10월

소형 모델 유형 :슬롯


카테고리 : 슬롯 API 라이브러리


메인 파일 : testapi.gms 포함: apimod.inc[html]

$title 'API 품질 보증 테스트' (TESTAPI,SEQ=2)

$onText
이 모델은 API 라이브러리에 포함된 모든 모델을 실행합니다.

기고자: Lutz Westermann, 2014년 10월
$offText

* 테스터에게는 아무 것도 하지 마세요
$if %runAsTester%==1 $exit

테스트 설정 / Cex1
            Cex2
            CPPex1*CPPex3
            CPPtrseq
            DCex1
            DOex1
            DPex1
            DOex2
            FEX1
            펙스2
            gdxperf
            Jalias
            JBenders
            JClad
            JCutstock
            JDomainCheck
            젝스1
            젝스2
            J인터럽트
            JSpecial값
            Jtrseq
            JTsp
            J창고
            CSex1
            CSex2
            CSCalc역
            CStrseq
            CS별칭
            CSBenders
            CSClad
            CS컷스톡
            CSDomain검사 중
            CSNUnit
            CSSpecial값
            CSTsp
            CS인터럽트
            CS창고
            Pex1
            Pex2
            Pgamstransfer
            Pgams_engine
            프네오스
            Ptrseq
            PAlias
            PBenders
            PClad
            PCutstock
            PDomain검사 중
            P인터럽트
            P창고
            PTsp
            PSpecial값
            VBex1
            VBex2
            VBtrseq /

    모음곡 / C 'C 및 CPP'
            디'델파이'
            F '포트란'
            J '자바'
            N '.Net'
            피 '파이썬' /

    st(스위트, 테스트) / C.(Cex1, Cex2, CPPex1* CPPex3)
                       D.(DCex1, DOex1, DPex1, DOex2)
                       F.(Fex1, Fex2)
                       J.(JAlias, JBenders, JCutstock, JDomainCheck, Jex1, Jex2, JInterrupt, Jtrseq
$demosize가 설정되지 않은 경우, JWarehouse, JTsp, JSpecialValues, JClad
                         )
                       N.(CSex1, CSex2, CSCalcInverse, CStrseq, CSAlias, CSBenders, CSCutstock, CSDomainChecking, CSInterrupt, CSSpecialValues
$demosize,CSTsp,CSWarehouse, CSClad를 설정하지 않은 경우
$%system.filesys%가 아닌 경우 == UNIX ,CSNUnit ,VBex1, VBex2, VBtrseq, CPPtrseq
                         )
                       P.(Pex1, Pex2, Pgamstransfer, Pgams_engine, Pneos, Ptrseq, PAlias, PBenders, PCutstock, PDomainChecking, PInterrupt, gdxperf
$demosize,PWarehouse, PTsp, PSpecialValues, PClad를 설정하지 않은 경우
                         ) /

    pfsuite(*,suite) / (dac,deg,lag,leg,wei).(C,F,J,N,P)
                     /;

$onEmpty
set Skip(tests) 건너뛰기 목록 /
* 우리는 이것이 실패한다는 것을 알고 있습니다
* 일시적인 건너뛰기여야 합니다.
$if %system.buildcode% == DEG JClad 'pstree/kill 문제, #2824'
$if %system.buildcode% == DEG CPPex3 'Pete에 몇 가지 문제가 있습니다(이전 OS 때문에?), devel/슬롯-cpp#69'
/;
$off비어 있음

$set 플래그 lo=%슬롯lo%
$if 데모 크기 설정 $set FLAGS %FLAGS% --demosize=1

$설정되지 않은 경우 TEST $goTo checksuite
SET 실행 테스트(테스트) / %TEST% /;
$if 오류가 없으면 $goTo TEST_OK
$clearError
$log 지정된 테스트 모델(--TEST=%TEST%)이 모두 유효하지 않습니다.
$ 중단

$label 체크 스위트
$설정되지 않은 경우 SUITE $goTo alltests
SET 스위트(suite) / %SUITE% /;
$if 오류가 없으면 $goTo SUITE_OK
$clearError
$log 지정된 제품군(--SUITE=%SUITE%)이 모두 유효하지 않습니다.
$ 중단
$label SUITE_OK
SET 실행 테스트(테스트);
runtests(테스트) = sumst(suite,tests),yes;
$goTo TEST_OK

$label 모든 테스트
SET 실행 테스트(테스트);
runtests(테스트) = 예;
$라벨 TEST_OK

스칼라
  ~ / 0 /,
  오류 / 0 /,
  cnt / 0 /;

파일 가을 / 'all_api.gms' /
     ferr / 'failures_api.gms' /
     rmme / 'rmme.gms' /
     로그 / '' /
     FX;

putclose fall '* 이것이 우리가 실행한 테스트입니다.' /;
putclose ferr '* 실패한 테스트입니다.' /;
fall.ap = 1;
ferr.ap = 1;

$prefix가 설정되지 않은 경우 $set PREFIX %system.buildcode%
$set DIRNAME "'%PREFIX%_api_' 테스트.tl:0 "

loop(runtests(tests)$(sum(pfsuite('%system.buildcode%',suite)$st(suite,tests),1) 건너뛰지 않음(테스트)),
  tot = tot + 1;
  put_utility fx 'shell' / 'rm -rf ' %DIRNAME%;
  put_utility fx 'shell' / 'mkdir ' %DIRNAME%;
  put_utility fx 'shell' / 'cd ' %DIRNAME% ' && apilib ' 테스트.tl:0 ' && 슬롯 ' 테스트.tl:0 ' %FLAGS% > stdout.txt 2>stderr.txt';
  if(오류수준,
    오류 = 오류 + 1;
    putclose ferr '$call =슬롯 testapi --test=' test.tl:0 ' %FLAGS% --dir='%DIRNAME% /;
 그렇지 않으면
    put_utility fx 'shell' / 'rm -rf ' %DIRNAME%;
  );
  putclose fall '$call =슬롯 testapi --test=' test.tl:0 ' %FLAGS% --dir='%DIRNAME% /;
);

putclose ferr '*총 테스트 수: ', tot:0:0, ' 실패한 테스트 수: ', err:0:0 ;

로그를 넣어;
(err > 0)인 경우,
  put '오류가 있었습니다: ', err:0:0, ' out of ',
       tot:0:0, ' 테스트가 실패했습니다.' /;
  put '실패한 실행을 재현하려면 failures_api.gms 파일을 참조하세요.'/;
  put '당신은 몇 가지 실패를 겪었습니다. 자세한 내용은 failures_api.gms를 참조하세요.';
그렇지 않으면
  '축하해요!  모든 ', tot:0:0, ' 테스트가 통과되었습니다.'/;
;

put '모든 실행을 재현하려면 all_api.gms 파일을 참조하세요.'/;