From 148ce423ea104daa005e67e48c714c553618cc67 Mon Sep 17 00:00:00 2001 From: Bruno Pinto <brunoferreirapinto@gmail.com> Date: Sat, 19 Dec 2015 12:26:51 +0000 Subject: [PATCH] Report duration of tests OSX `date` does not support milliseconds output, so @derekstavis created this `C` code to generate the time with milliseconds. --- pkg/fish-spec/basic_formatter.fish | 13 +++++++++++++ pkg/fish-spec/functions/fish-spec.fish | 19 +++++++++++++++++-- pkg/fish-spec/utils/epoch.c | 10 ++++++++++ pkg/fish-spec/utils/epoch.linux | Bin 0 -> 6832 bytes pkg/fish-spec/utils/epoch.osx | Bin 0 -> 8496 bytes 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 pkg/fish-spec/utils/epoch.c create mode 100755 pkg/fish-spec/utils/epoch.linux create mode 100755 pkg/fish-spec/utils/epoch.osx diff --git a/pkg/fish-spec/basic_formatter.fish b/pkg/fish-spec/basic_formatter.fish index 0632d1e..289a481 100644 --- a/pkg/fish-spec/basic_formatter.fish +++ b/pkg/fish-spec/basic_formatter.fish @@ -1,3 +1,16 @@ +function __fish-spec.all_specs_init -e all_specs_init -a spec + set -g __fish_spec_start_time (__fish-spec.current_time) +end + +function __fish-spec.all_specs_finished -e all_specs_finished -a spec + set -l __fish_spec_end_time (__fish-spec.current_time) + set -l diff (math "scale=3;($__fish_spec_end_time - $__fish_spec_start_time) / 1000") + + echo -en '\n\nFinished in ' + printf '%g' $diff + echo ' seconds' +end + function __fish-spec.spec_init -e spec_init -a spec set -g __current_spec_name (echo $spec | sed 's/^[0-9]*_//;s/_/ /g;s/^it/It/') set -e __current_spec_output diff --git a/pkg/fish-spec/functions/fish-spec.fish b/pkg/fish-spec/functions/fish-spec.fish index f8bdcd4..fc81fc9 100644 --- a/pkg/fish-spec/functions/fish-spec.fish +++ b/pkg/fish-spec/functions/fish-spec.fish @@ -1,7 +1,8 @@ function fish-spec + set -g __fish_spec_dir (dirname (dirname (status -f))) + # Source formatter - set -l fish_spec_dir (dirname (dirname (status -f))) - source $fish_spec_dir/basic_formatter.fish + source $__fish_spec_dir/basic_formatter.fish # Reset internal variables set -e __any_spec_failed @@ -14,9 +15,13 @@ function fish-spec # Load helper file source spec/helper.fish ^/dev/null + emit all_specs_init + # Run all specs __fish-spec.run_all_specs + emit all_specs_finished + not set -q __any_spec_failed end @@ -50,3 +55,13 @@ function __fish-spec.run_suite -a suite_name functions -e before_all before_each after_each after_all end + +function __fish-spec.current_time + if test (uname) = 'Darwin' + set filename 'epoch.osx' + else + set filename 'epoch.linux' + end + + eval $__fish_spec_dir/utils/$filename +end diff --git a/pkg/fish-spec/utils/epoch.c b/pkg/fish-spec/utils/epoch.c new file mode 100644 index 0000000..4daaf2b --- /dev/null +++ b/pkg/fish-spec/utils/epoch.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <sys/time.h> + +int main(int argc, char** argv) { + struct timeval time_struct; + gettimeofday(&time_struct, 0); + printf("%lld", (time_struct.tv_sec * 1000ll) + (time_struct.tv_usec / 1000ll)); + + return 0; +} diff --git a/pkg/fish-spec/utils/epoch.linux b/pkg/fish-spec/utils/epoch.linux new file mode 100755 index 0000000000000000000000000000000000000000..3898514e7a8c4fb0a9c12ccfbb570508a4562bc2 GIT binary patch literal 6832 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 literal 0 HcmV?d00001 diff --git a/pkg/fish-spec/utils/epoch.osx b/pkg/fish-spec/utils/epoch.osx new file mode 100755 index 0000000000000000000000000000000000000000..3d27ae9be2e6744fb1a69fd7af0e4c5147965fff GIT binary patch literal 8496 zcmeHMO=uHA7@e(uMT@4OQqe*bBkG~8;z1B0kuGjA_){y0phMDbO(022vcXmq0;PpT z3b_b+^<2cOH$hP=f<1Zikc$#Qu{Vo|@x9G#vYV=RVLq6A^Jczz`_0=KnC!g!@%7gh zA&d<|RJw!^J5a<XA?8JtHL(Z9LXq-f;;ebi9KFESuo+?aM?{{(cz~2+=GC!qh&MhG zZW9V4H>M*tt8OVBd&X(UcJi%m$7Il*S0Th3+u;P2Ae6G?l+&eFQzzdI2tvLd72#ul zK)2#+=SM!7v2)XQ5kZ}NImLHS5fD@NmaWTgyyO(Kg_|m%ldr1ys1c1gXd!NNNLeo2 z$`&SMwlF#6;qd!-p!oRCX~dlz&7S73ly*i=7E^iK$6>yj;_Fj`h_TlGYFsCE6e))j zV~Ic*)<bBW`0FLGPRQ%$DrF%jOSAd(R8CGi#lQ0TG+b}Ny!bwSE@mNRF7+?I2*xu% zpN}}m$8{WBhwXip965i^93JuaM6_d`z_cN6@<NbDRlW8D*tbKhMTO{w>xTEW1{6`? z!|)b7<2WbwSAe-@>hOHm+fXi|1dXvQ!FdGxSzn2^_hzsU+m0!D`)06QDh}qd>A{KF z+=L3+3(q{#ja~1%GN%qLd|Mt`dNfeuzJPQ{XscI_`j~An%%#F{+}A<l{yd4oKIUu~ z%aGd;t!Lx;muE|kogX+efIPBk1i=oW@Od-QrhZ2hras!V0$KsBfL1^&pcT*xXa)X% z1+G}`M{Dj&+*&ki$ClkUugssElzVs0a?7ih`^s|P*G;roi>IgIp4M^tb>CRoa*eg* zxLJ424@vi#<z88_9wzUZD<j|6EaT-9QQwJpaGG!3*Vf#N`1R-2Mr;Xfjo4%SV(?=B zeYnKsMr<CwnqlMTPmM++!=ax)pcczDkH`iZ_OTxp^gP@0?0W*9h5tustn-}SgEMag zMVUcj+J@Vs!kCE|k)AEx)mC@2FZg>${a;&9KG>)0S^=$qRzNGD70?Q31+)TM0j+>m zKr5gX&<gyY3iKX`j571yI4|eC%W#>-{V*=CFBL^q6eGQHdDC{BY~G%loJh^Gtq*O} zxRiD#fs`2%_laFHpON;AJzjQf+<~V^vp=887DTLhk+|Bg!u<-HcNpG{pZC>bw}+eG tIQ(xQ@U1TvyblcG;~lv9nATlu+{aPe;I7Y2dbx$?=g(}N9(a-vzX3(^_tF3W literal 0 HcmV?d00001 -- GitLab