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