add test times to the JSON results
diff --git a/typ/json_results.py b/typ/json_results.py
index bb693a2..3f20531 100644
--- a/typ/json_results.py
+++ b/typ/json_results.py
@@ -90,8 +90,7 @@
     full_results['tests'] = OrderedDict()
 
     for test_name in all_test_names:
-        value = OrderedDict()
-        value['actual'] = _actual_results_for_test(test_name, results)
+        value = _results_for_test(test_name, results)
         if test_name in skipped_tests:
             value['expected'] = 'SKIP'
         else:
@@ -141,8 +140,10 @@
     return set(r.name for r in results.results if r.actual == ResultType.Pass)
 
 
-def _actual_results_for_test(test_name, results):
+def _results_for_test(test_name, results):
+    value = OrderedDict()
     actuals = []
+    times = []
     for r in results.results:
         if r.name == test_name:
             if r.actual == ResultType.Failure:
@@ -151,10 +152,18 @@
                 actuals.append('PASS')
             elif r.actual == ResultType.Skip:
                 actuals.append('SKIP')
+
+            # The time a test takes is a floating point number of seconds;
+            # if we were to encode this unmodified, then when we converted it
+            # to JSON it might make the file significantly larger. Instead
+            # we truncate the file to ten-thousandths of a second, which is
+            # probably more than good enough for most tests.
+            times.append(round(r.took, 4))
     if not actuals:  # pragma: untested
         actuals.append('SKIP')
-    return ' '.join(actuals)
-
+    value['actual'] = ' '.join(actuals)
+    value['times'] = times
+    return value
 
 def _add_path_to_trie(trie, path, value):
     if TEST_SEPARATOR not in path:
diff --git a/typ/tests/json_results_test.py b/typ/tests/json_results_test.py
index 5dfab61..76446f9 100644
--- a/typ/tests/json_results_test.py
+++ b/typ/tests/json_results_test.py
@@ -70,14 +70,14 @@
         result_set = json_results.ResultSet()
         result_set.add(
             json_results.Result('foo_test.FooTest.test_fail',
-                                json_results.ResultType.Failure, 0, 0, 0,
+                                json_results.ResultType.Failure, 0, 0.1, 0,
                                 unexpected=True))
         result_set.add(json_results.Result('foo_test.FooTest.test_pass',
                                            json_results.ResultType.Pass,
-                                           0, 0, 0))
+                                           0, 0.2, 0))
         result_set.add(json_results.Result('foo_test.FooTest.test_skip',
                                            json_results.ResultType.Skip,
-                                           0, 0, 0, unexpected=False))
+                                           0, 0.3, 0, unexpected=False))
 
         full_results = json_results.make_full_results(
             ['foo=bar'], 0, test_names, result_set)
@@ -96,12 +96,18 @@
                         'test_fail': {
                             'expected': 'PASS',
                             'actual': 'FAIL',
-                            'is_unexpected': True},
+                            'times': [0.1],
+                            'is_unexpected': True,
+                        },
                         'test_pass': {
                             'expected': 'PASS',
-                            'actual': 'PASS'},
+                            'actual': 'PASS',
+                            'times': [0.2],
+                        },
                         'test_skip': {
                             'expected': 'SKIP',
-                            'actual': 'SKIP'}}}},
+                            'actual': 'SKIP',
+                            'times': [0.3],
+                        }}}},
             'version': 3}
         self.assertEqual(full_results, expected_full_results)
diff --git a/typ/tests/main_test.py b/typ/tests/main_test.py
index 771e987..eb21ec4 100644
--- a/typ/tests/main_test.py
+++ b/typ/tests/main_test.py
@@ -706,6 +706,14 @@
         results = json.loads(files['results.json'])
         self.assertEqual(results['interrupted'], False)
         self.assertEqual(results['path_delimiter'], '.')
+
+        # The time it takes to run the test varies, so we test that
+        # we got a single entry greater than zero, but then delete it from
+        # the result so we can do an exact match on the rest of the trie.
+        result = results['tests']['pass_test']['PassingTest']['test_pass']
+        self.assertEqual(len(result['times']), 1)
+        self.assertGreater(result['times'][0], 0)
+        result.pop('times')
         self.assertEqual(results['tests'],
                          {u'pass_test': {
                              u'PassingTest': {