Describe gina#process Before all let Path = vital#gina#import('System.Filepath') let slit1 = Slit(tempname(), 1) call slit1.write('A/foo.txt', []) call slit1.write('B/foo.txt', []) call slit1.write('C/foo.txt', []) call slit1.execute('add %s', slit1.path('A/foo.txt')) call slit1.execute('commit --quiet -m "First"') call slit1.execute('checkout -b develop') call slit1.execute('add %s', slit1.path('B/foo.txt')) call slit1.execute('commit --quiet -m "Second"') call slit1.execute('checkout master') call slit1.execute('add %s', slit1.path('C/foo.txt')) call slit1.execute('commit --quiet -m "Thrid"') End After all %bwipeout! End Before %bwipeout! End Describe #open({git}, {args} [, {options}]) Before let options = {'stdout': [''], 'stderr': ['']} function! options.on_stdout(data) abort let self.stdout[-1] .= a:data[0] call extend(self.stdout, a:data[1:]) endfunction function! options.on_stderr(data) abort let self.stderr[-1] .= a:data[0] call extend(self.stderr, a:data[1:]) endfunction End It opens an {args} of {git} and returns a job instance execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let job = gina#process#open(git, ['branch'], options) Assert Equals(job.wait(2000), 0) Assert Equals(job.stdout, [' develop', '* master', '']) Assert Equals(job.stderr, ['']) End End Describe #call({git}, {args} [, {options}]) It calls an {args} of {git} and returns a result instance execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let result = gina#process#call(git, ['branch']) Assert Equals(result.status, 0) Assert Equals(result.stdout, [' develop', '* master']) Assert Equals(result.stderr, []) Assert Equals(result.content, [' develop', '* master']) End End Describe #call_or_fail({git}, {args} [, {options}]) It calls an {args} of {git} and returns a result instance execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let result = gina#process#call_or_fail(git, ['branch']) Assert Equals(result.status, 0) Assert Equals(result.stdout, [' develop', '* master']) Assert Equals(result.stderr, []) Assert Equals(result.content, [' develop', '* master']) End It throws an exception when the command fail execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() Throws /vital: App.Revelator: ERROR: Fail:/ \ gina#process#call_or_fail(git, ['false']) End End Describe #inform({result}) Before sleep 100m End It shows a result content when success execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let result = gina#process#call(git, ['branch']) let output = split(execute('call gina#process#inform(result)'), '\r\?\n') Assert Equals(output, [ \ '[gina] develop', \ '[gina] * master', \]) End It shows an args as well when fail execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let result = gina#process#call(git, ['unknown-command']) let output = split(execute('call gina#process#inform(result)'), '\r\?\n') Assert Match(output[0], '^\[gina\] Fail:.* git .* unknown-command$') Assert Equals(output[1], '[gina] git: ''unknown-command'' is not a git command. See ''git --help''.') End End Describe #error({result}) Before sleep 100m End It returns an error message for the {result} execute 'edit' fnameescape(Path.join(slit1.worktree, 'foo.txt')) let git = gina#core#get() let result = gina#process#call(git, ['unknown-command']) let output = split(gina#process#errormsg(result), '\r\?\n') Assert Match(output[0], '^vital: App.Revelator: ERROR: Fail:.* git .* unknown-command$') Assert Equals(output[1], 'git: ''unknown-command'' is not a git command. See ''git --help''.') End End End