package Ġjet brains . build Server . dotnet . test . script Ċ Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġjet brains . build Server . agent .* Ċ import Ġjet brains . build Server . agent . runner . Build Info Ċ import Ġjet brains . build Server . agent . runner . Build Options Ċ import Ġjet brains . build Server . agent . runner . Workflow Ċ import Ġjet brains . build Server . agent . runner . Workflow Context Ċ import Ġjet brains . build Server . rx . Observer Ċ import Ġjet brains . build Server . rx . empty Disposable Ċ import Ġjet brains . build Server . script . CSharp Script Workflow Composer Ċ import Ġjet brains . build Server . script . CommandLine Factory Ċ import Ġjet brains . build Server . script . Script Constants Ċ import Ġorg . testng . Assert Ċ import Ġorg . testng . annotations . Before Method Ċ import Ġorg . testng . annotations . Test Ċ import Ġjava . io . File Ċ Ċ class ĠCSharp Script Workflow Composer Test Ġ{ ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ build Info : ĠBuild Info ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ command Line Factory : ĠCommandLine Factory ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ context : ĠWorkflow Context ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ build Options : ĠBuild Options ĊĠĠĠ Ġprivate Ġval Ġ_ events Ġ= Ġmutable ListOf < Command Result Event >() ĊĊĠĠĠ Ġ@ Before Method ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Options . fail Build On ExitCode Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ context . abort ( Build Finished Status . FINISHED _ FAILED ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ context . subscribe ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġarg < Observer < Command Result Event >>( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġ_ events ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . onNext ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Disposable () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Compose W ok flow () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcomposer Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Info . run Type Ġ} Ġreturns ĠScript Constants . RUN NER _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠCommandLine ( null , ĠTarget Type . Tool , ĠPath (" Ab c "), ĠPath (" Wd ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ command Line Factory . create () Ġ} Ġreturns Ġcommand Line ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Workflow Ġ= Ġcomposer . compose (_ context , ĠUnit , ĠWorkflow ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Workflow . command Lines . single (), Ġcommand Line ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġ_ context . abort ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Not Compose W ok flow When Unsupported Runner Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcomposer Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Info . run Type Ġ} Ġreturns Ġ" Ab c " ĊĠĠĠĠĠĠĠ Ġval Ġactual Workflow Ġ= Ġcomposer . compose (_ context , ĠUnit , ĠWorkflow ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Workflow . command Lines . count (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Abort When ExitCode IsNot Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcomposer Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Info . run Type Ġ} Ġreturns ĠScript Constants . RUN NER _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠCommandLine ( null , ĠTarget Type . Tool , ĠPath (" Ab c "), ĠPath (" Wd ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ command Line Factory . create () Ġ} Ġreturns Ġcommand Line ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġ_ events . add ( Command Result ExitCode ( 1 , Ġcommand Line . Id )) ĊĠĠĠĠĠĠĠ Ġval Ġactual Workflow Ġ= Ġcomposer . compose (_ context , ĠUnit , ĠWorkflow ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Workflow . command Lines . single (), Ġcommand Line ) ĊĠĠĠĠĠĠĠ Ġverify { Ġ_ context . abort ( Build Finished Status . FINISHED _ FAILED ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Not Abort When ExitCode IsNot Zero But Fail Build On ExitCode IsFalse () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcomposer Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Info . run Type Ġ} Ġreturns ĠScript Constants . RUN NER _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠCommandLine ( null , ĠTarget Type . Tool , ĠPath (" Ab c "), ĠPath (" Wd ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ command Line Factory . create () Ġ} Ġreturns Ġcommand Line ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġ_ events . add ( Command Result ExitCode ( 1 , Ġcommand Line . Id )) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ build Options . fail Build On ExitCode Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġactual Workflow Ġ= Ġcomposer . compose (_ context , ĠUnit , ĠWorkflow ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Workflow . command Lines . single (), Ġcommand Line ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ){ Ġ_ context . abort ( Build Finished Status . FINISHED _ FAILED ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Instance () Ġ= ĠCSharp Script Workflow Composer (_ build Info , Ġ_ command Line Factory , Ġ_ build Options ) Ċ }