Commit graph

156 commits

Author SHA1 Message Date
Wladimir J. van der Laan
9df1a9c004 test: Remove travis checkout depth
Tests on branches of non-head commits are failing, because the depth of
1 doesn't allow checking them out.

Remove `depth` as was the case before fa44af5cd2,
so that Travis can determine the minimum depth to check out.
2018-03-30 14:54:56 +02:00
Karl-Johan Alm
bc308ba999 [CI]: bump travis timeout for make check to 50m 2018-03-23 15:58:43 -04:00
MarcoFalke
fa79016ab0
travis: Clone depth 1 unless $CHECK_DOC 2018-03-13 17:25:05 -04:00
MarcoFalke
0f58d7f3d6
Merge #12405: travis: Full clone for git subtree check
fa44af5cd2 travis: Full clone for git subtree check (MarcoFalke)

Pull request description:

  Lazy workaround and fix for #12388

Tree-SHA512: ef2843c07bfe00b91a6f7ee551172b54db62a7e0120c734be2fa5e8cb2cb232e34f69239cae3cb319734e321822040ee7dcff00b8f0387a01afa6b3d26cc1ca3
2018-03-13 12:37:49 -04:00
fanquake
cc879675e1 depends: Remove ccache 2018-03-06 10:37:42 -05:00
MarcoFalke
fa44af5cd2
travis: Full clone for git subtree check 2018-02-15 17:06:50 -05:00
Anthony Towns
a2808cf8a4 [tests] Fix names of excluded extended tests for travis 2018-01-29 20:09:15 +10:00
practicalswift
d60b320740 Add Travis check for unused Python imports 2017-12-10 11:49:43 +01:00
John Newbery
ff8a9b068a [tests] Add combinedlogslen argument to test_runner.py
Instead of calling combine_logs from test_runner when the environment variable
PYTHON_DEBUG is set, add a combinedlogslen argument. This makes it easier
to call when running locally, and allows a different length of combined logs
to be printed.
2017-11-29 15:10:51 -05:00
John Newbery
ec85248c48 [travis-ci] Only run linters on Pull Requests
Linters should only be run on pull request builds. Once bad code style
has been merged into master, it's too late. Master and other branches
should not fail to build because of linter warnings.
2017-11-15 17:20:07 -05:00
MarcoFalke
6e4e98ee8c
Merge #11394: Perform a weaker subtree check in Travis
487aff421 Check subtree consistency in Travis (Pieter Wuille)
e1d0cc23a Improve git-subtree-check.sh (Pieter Wuille)

Pull request description:

  Apparently many of our subtrees get modified by PRs in this repository, without getting noticed.

  To improve upon this:
  * Make git-subtree-check.sh capable of doing a weaker consistency check (that doesn't need access to external repositories), but which should be sufficient to detect unintended changes. It can be fooled by a fake subtree merge commit, but that would hopefully be obvious to reviewers.
  * Make Travis invoke this subtree check for each of our subtrees.

  Note that Travis is currently expected to fail on this PR, as 2 out of 4 subtrees (`src/secp156k1` and `src/univalue` have been modified directly in master).

Tree-SHA512: 465b680392d3daf38a8c1dda77d6f74b1d1c23324c378774777fb95aa673e119a8f7e3ccc124e41d97b5ac8975f3d79f3015797d2d309666582394364917ec4e
2017-11-09 17:06:20 -05:00
Cory Fields
3d1c31126b Revert "travis: filter out pyenv"
This reverts commit aa2e0f09ec.
2017-10-18 14:42:08 -04:00
Cory Fields
a86e81b78f travis: move back to the minimal image
The most recent update replaced the minimal image with a large one for the
'generic' image. Switching back to 'minimal' should reduce dependencies and
maybe speed us up some.

It should also eliminiate the need for aa2e0f09e.
2017-10-18 14:26:22 -04:00
Pieter Wuille
487aff4218 Check subtree consistency in Travis 2017-10-11 11:40:57 -07:00
Evan Klitzke
dd365612fd Add a lint check for trailing whitespace.
This adds a new CHECK_DOC check that looks for newly introduced trailing
whitespace. Existing trailing whitespace (of which there is plenty!)
will not trigger an error.

This is written in a generic way so that new lint-*.sh scripts can be
added to contrib/devtools/, as I'd like to contribute additional lint
checks in the future.
2017-09-14 10:49:48 +12:00
MarcoFalke
7fcd61b261
Merge #10753: test: Check RPC argument mapping
77aa9e59e test: Check RPC argument mapping (Wladimir J. van der Laan)

Pull request description:

  Parse the dispatch tables from the server implementation files, and the conversion table from the client (see #10751).

  Perform the following consistency checks:

  - Arguments defined in conversion table, must be present in dispatch table. If not, it was probably forgotten to add them to the dispatch table, and they will not work.

  - Arguments defined in conversion table must have the same names as in the dispatch table. If not, they will not work.

  - All aliases for an argument must either be present in the conversion table, or not. Anything in between means an oversight and some aliases won't work.

  Any of these results in an error.

  It also performs a consistency check to see if the same named argument is sometimes converted, and sometimes not. E.g. one RPC call might have a 'verbose' argument that is converted,
  another RPC call might have one that is not converted. This is not necessarily wrong, but points at a possible error (as well as makes the API harder to memorize) - so it is emitted as a warning (could upgrade this to error).

  This test is added to travis and run when `CHECK_DOC`. Currently fails with the following output:
  ```
  * Checking consistency between dispatch tables and vRPCConvertParams
  ERROR: createrawtransaction argument 3 (named optintorbf in vRPCConvertParams) is not defined in dispatch table
  ERROR: getblock argument ['verbosity', 'verbose'] has conflicts in vRPCConvertParams conversion specifier [True, False]
  WARNING: conversion mismatch for argument named verbose ([('getblock', False), ('getblockheader', True), ('getmempoolancestors', True), ('getmempooldescendants', True), ('getrawmempool', True), ('getrawtransaction', True)])
  ```
  - ~#10698 fixes the first ERROR~
  - #10747 fixes the second ERROR, as well as the WARNING

  Update: #10698 was merged, leaving:
  ```
  * Checking consistency between dispatch tables and vRPCConvertParams
  ERROR: getblock argument ['verbosity', 'verbose'] has conflicts in vRPCConvertParams conversion specifier [True, False]
  WARNING: conversion mismatch for argument named verbose ([('getblock', False), ('getblockheader', True), ('getmempoolancestors', True), ('getmempooldescendants', True), ('getrawmempool', True), ('getrawtransaction', True)])
  ```

Tree-SHA512: feabebfbeda5d4613b2b9d5265aa6bde4e1a0235297ffd48fa415ad7edc531d9ed7913fe76d191ac60d481a915a326f216bc93de3c671e45e1d14e97d07dea7a
2017-09-13 20:16:59 +02:00
MarcoFalke
cce94c518a
Merge #11311: travis: Revert default datadir check
fa4fad9d8 travis: Revert default datadir check (MarcoFalke)

Pull request description:

  This still breaks builds. The default datadir check needs more work to stay in master.

Tree-SHA512: b930df4ff8cb76089030aedb2ebbbc1ecc26f9e3d1aba29c78f9f03d7611c6ecaa27afb15ee643690643439d78b98aef9c0c5b2657c7f2fe0c28a3076d6913c2
2017-09-12 23:29:23 +02:00
MarcoFalke
fa4fad9d86 travis: Revert default datadir check 2017-09-12 22:59:48 +02:00
MarcoFalke
801dd40666
Merge #7142: Travis: Test build against system libs (& Qt4)
6d2aac8bb Travis: Test build against system libs (& Qt4) (Luke Dashjr)
8d82e1336 Travis: Remove bc tool from dependencies (Luke Dashjr)

Pull request description:

  Also removes now-unnecessary `bc` dependency from other builds.

Tree-SHA512: 815215994eeba0acf27774f57cf3a0bf77bbc22834d3242a227e0d90b5948a05f8b5ef846eb384e3ee575bec60880ae215ccc3882f13b60004a62549d3b3a28f
2017-09-12 21:16:32 +02:00
MeshCollider
b73628d5a8 Make sure ~/.bitcoin doesn't exist before build 2017-09-10 16:30:52 +12:00
MarcoFalke
638e6c59da
Merge #11271: travis: filter out pyenv
aa2e0f09e travis: filter out pyenv (Cory Fields)

Pull request description:

  Testing.

Tree-SHA512: e7abe9160e1050918a65eb4b362b6cf4fd0b8e61d1422cd78cf2018e42e1e1b88a8130c8980a61f8774222699a26b417a6ef3f5cf82915f47b44cb731b612c20
2017-09-07 15:15:24 -07:00
Wladimir J. van der Laan
77aa9e59ea test: Check RPC argument mapping
Parse the dispatch tables from the server implementation files,
and the conversion table from the client.

Perform the following consistency checks:

- Arguments defined in conversion table, must be present in dispatch
  table. If not, it was probably forgotten to add them to the
  dispatch table, and they will not work.

- Arguments defined in conversion table must have the same names as
  in the dispatch table. If not, they will not work.

- All aliases for an argument must either be present in the
  conversion table, or not. Anything in between means an oversight
  and some aliases won't work.

Any of these results in an error.

It also performs a consistency check to see if the same
named argument is sometimes converted, and sometimes not. E.g.
one RPC call might have a 'verbose' argument that is converted,
another RPC call might have one that is not converted. This is not
necessarily wrong, but points at a possible error (as well as
makes the API harder to memorize) - so it is emitted as a warning
(could upgrade this to error).
2017-09-07 22:34:18 +02:00
Cory Fields
aa2e0f09ec travis: filter out pyenv 2017-09-07 16:19:05 -04:00
MarcoFalke
fa40b0eb51 travis: Assert default datadir isn't created, Run scripted diff only once 2017-09-06 15:42:00 -07:00
practicalswift
a65e02803c Build with --enable-werror under OS X 2017-08-19 16:23:04 +02:00
Luke Dashjr
6d2aac8bb1 Travis: Test build against system libs (& Qt4) 2017-08-05 11:17:54 +00:00
Luke Dashjr
8d82e1336a Travis: Remove bc tool from dependencies 2017-08-05 11:17:28 +00:00
Wladimir J. van der Laan
1caafa6cde
Merge #10508: Run Qt wallet tests on travis
4f92b5f Run Qt wallet tests on travis (Russell Yanofsky)

Pull request description:

  Currently these test failures are not caught by travis leading to bugs like:
  https://github.com/bitcoin/bitcoin/pull/10506

Tree-SHA512: db1e4ff5b17bcd6fd000a3d21aa74f6b7e4c194e0663c1896a100612671910a7cdadd896b59642420ea016598895b54a8468914847ebefef105a3c47c311d4b2
2017-07-25 14:23:21 +02:00
John Newbery
bd00fa52a1 [test] don't run dbcrash.py on Travis 2017-07-04 17:27:46 +01:00
Russell Yanofsky
4f92b5fb30 Run Qt wallet tests on travis
Currently these test failures are not caught by travis leading to bugs like:
https://github.com/bitcoin/bitcoin/pull/10506
2017-06-05 11:47:25 -04:00
MarcoFalke
bea5b00cfe
Merge #10509: Remove xvfb configuration from travis
e4bc19f Remove xvfb configuration from travis (Russell Yanofsky)

Tree-SHA512: 802e2e4dc13bdf29ab276e9c9e3adfc5b00c04a18b8e8d82b5b1b1246e6ba35c159b955c1e00f6a30167d06c45704c1eab4af7f6f7c8136fcadf3afeb30ffca4
2017-06-05 17:47:25 +02:00
Russell Yanofsky
e4bc19f6f8 Remove xvfb configuration from travis
Should no longer be needed after #10142:

bf10264 "Run bitcoin_test-qt under minimal QPA platform"
2017-06-02 09:32:04 -04:00
Pieter Wuille
a5e02bc7f8 Increase travis unit test timeout 2017-06-01 13:15:25 -07:00
Cory Fields
e50c33ea27 devtools: add script to verify scriptable changes 2017-05-04 01:04:47 -04:00
John Newbery
16791c5e27 [trivial] remove unused line in Travis config 2017-04-04 14:37:01 -04:00
John Newbery
91f1f19674 Make all Travis test runs quiet, non just cron job runs 2017-03-28 08:47:18 -04:00
John Newbery
6d780b1b0c Update travis config to run rpc-tests.py in quiet mode 2017-03-27 11:55:52 -04:00
John Newbery
88e3aa0bcb Run extended tests once daily 2017-03-22 10:49:11 -04:00
John Newbery
a9bd622a65 Rename test/pull-tester/rpc-tests.py to test/functional/test_runner.py 2017-03-20 10:40:31 -04:00
John Newbery
c28ee91db0 Rename rpc-tests directory to functional 2017-03-20 10:40:31 -04:00
Jonas Schnelli
b9f930b383
Merge #9974: Add basic Qt wallet test
9576b01 Enable xvfb in travis to allow running test_bitcoin-qt (Russell Yanofsky)
9e6817e Add new test_bitcoin-qt static library dependencies (Russell Yanofsky)
2754ef1 Add simple qt wallet test sending a transaction (Russell Yanofsky)
b61b34c Add braces to if statements in Qt test_main (Russell Yanofsky)
cc9503c Make qt test compatible with TestChain100Setup framework (Russell Yanofsky)
91e3035 Make test_bitcoin.cpp compatible with Qt Test framework (Russell Yanofsky)

Tree-SHA512: da491181848b8c39138e997ae5ff2df0b16eef2d9cdd0a965229b1a28d4fa862d5f1ef314a1736e5050e88858f329124d15c689659fc6e50fefde769ba24e523
2017-03-17 14:31:22 +01:00
Russell Yanofsky
9576b015a1 Enable xvfb in travis to allow running test_bitcoin-qt
Avoids following error:

QXcbConnection: Could not connect to display
2017-03-15 13:02:02 -04:00
Matt Corallo
8ed849fbcd Fix travis failing to fetch keys from the sks keyserver pool
Just use the "subset" pool for now, at least none of those are
currently broken, AFAIK.
2017-03-09 09:53:19 -05:00
MarcoFalke
fa32a16c57 travis: Verify commits only for one target
This abuses the CHECK_DOC flag to serve as a general indicator to
execute platform independent sanity checks.
2017-02-28 14:19:24 +01:00
Matt Corallo
ba94426d53 Test that pushes to bitcoin/bitcoin are signed per verify-commits 2017-02-01 18:22:55 -05:00
MarcoFalke
faaf3ca0af travis: make distdir before make 2017-01-11 12:25:05 +01:00
MarcoFalke
fad632ed7a travis: make distdir 2016-12-20 22:54:13 +01:00
MarcoFalke
fa16991e7b [travis] cross-mac: explicitly enable gui 2016-09-22 13:00:56 +02:00
MarcoFalke
fa0afdee16 [travis] Drop java 2016-08-17 21:35:48 +02:00
Wladimir J. van der Laan
eb0c52ec1d travis: Remove hostname hack
This was required for java, and we no longer use java for the tests.
2016-08-17 12:03:33 +02:00
MarcoFalke
fa6ad56948 [travis] Update SDK_URL 2016-06-20 14:56:43 +02:00
Jonas Schnelli
59d063d076
Use runtime linking of QT libdbus, use custom/temp. SDK URL 2016-06-18 13:51:45 +02:00
Jonas Schnelli
6194d9a501
Fix bitcoin_qt.m4 and fix-xcb-include-order.patch 2016-06-17 15:56:05 +02:00
Wladimir J. van der Laan
3e4cf8fe26
Merge #8067: travis: use slim generic image, and some fixups
2ca8962 travis: use slim generic image, and some fixups (Cory Fields)
2016-06-10 15:41:00 +02:00
Cory Fields
142ffc7e61 travis: use out-of-tree build 2016-06-01 22:21:08 -04:00
Cory Fields
2ca8962a09 travis: use slim generic image, and some fixups
Now that caches are distinct (https://github.com/travis-ci/travis-ci/issues/4393),
we can use the Travis minimal image.
The minimal image should take less time to setup and lead to quicker builds.

Also addressed while I'm in here:
- No need to delete the broken google-chrome repo in the minimal image
- Set the hostname to work-around an openjdk bug
- Remove the non-functional apt-cache option
- Remove useless message at completion
- Install jre where the java tests are run
2016-05-21 10:04:35 +02:00
Cory Fields
401ae654b2 travis: 'make check' in parallel and verbose
- 'make check' in parallel, since the log will take care of clean output
- 'make check' verbose, so that test failure causes aren't hidden
2016-05-19 11:15:12 +02:00
MarcoFalke
fa389d4edc [qa] Switch to py3 2016-05-05 15:43:37 +02:00
Cory Fields
a33b7c9cb5 travis: temporarily disable qt to avoid timeouts
These builds take longer than they did on precise. Disable them now to keep
things working, we can re-enable them after experimentation
2016-04-26 02:25:22 -04:00
Cory Fields
174023c9b0 travis: Don't disable writing ccache for pull-requests
This was doing more harm than good. The original intention was to speed up
builds, since a PR's ccache results will be thrown away anyway.

However, each PR maintains its own cache, so disabling writes means that
subsequent pushes don't benefit from the fresh cache. This is significant when
(for example) many headers are touched in a PR, then the PR is updated. With
this change, the updated PR will take advantage of the cache generated during
the PR's previous build.
2016-04-26 02:25:22 -04:00
Cory Fields
cf77fcdb1f travis: drop MAKEJOBS=2 for windows compilers
These were only in place because of the old precice mingw toolchain
2016-04-25 23:48:29 -04:00
Cory Fields
06fdffd222 travis: switch to Trusty 2016-04-21 13:40:51 -04:00
MarcoFalke
fac9ca2ec6 [travis] echo $TRAVIS_COMMIT_RANGE 2016-04-05 12:40:05 +02:00
MarcoFalke
faef3b710f [travis] Print the commit which was evaluated 2016-04-03 14:50:49 +02:00
MarcoFalke
fa5f19319a [travis] Exit early when check-doc.py fails 2016-03-03 13:05:22 +01:00
Wladimir J. van der Laan
1b68de3525
Merge #7620: [travis] Only run check-doc.py once
fa1b80d [travis] Only run check-doc.py once (MarcoFalke)
2016-03-03 12:57:31 +01:00
Wladimir J. van der Laan
bf1e113311
Merge #7487: Workaround Travis-side CI issues
149641e Travis: Use Blue Box VMs for IPv6 loopback support (Luke Dashjr)
c01f08d Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl (Luke Dashjr)
5d1148c Travis: Use curl rather than wget for Mac SDK (Luke Dashjr)
1ecbb3b depends: Use curl for fetching on Linux (Luke Dashjr)
2016-02-15 12:57:01 +01:00
Luke Dashjr
149641e8fc Travis: Use Blue Box VMs for IPv6 loopback support 2016-02-09 22:17:09 +00:00
Luke Dashjr
c01f08db12 Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl 2016-02-09 22:15:28 +00:00
Luke Dashjr
5d1148cb79 Travis: Use curl rather than wget for Mac SDK 2016-02-09 05:53:39 +00:00
Luke Dashjr
a68bb9f5e7 Merge branch 'master' into single_prodname 2016-02-03 05:41:13 +00:00
MarcoFalke
fa1b80db88 [travis] Only run check-doc.py once 2016-02-01 18:09:04 +01:00
MarcoFalke
faeda0e677 [travis] Run contrib/devtools/check-doc.py early 2016-01-18 14:00:02 +01:00
MarcoFalke
fada0c90b6 [travis] Fail when documentation is outdated 2016-01-04 19:24:07 +01:00
Luke Dashjr
c39a6fffd7 Travis & gitian-osx: Use depends for ds_store and mac_alias modules 2015-12-22 04:37:47 +00:00
Luke Dashjr
e611b6e329 macdeploy: Use rsvg-convert rather than cairosvg 2015-12-22 04:37:45 +00:00
Luke Dashjr
63bcdc5227 More complicated package name substitution for Mac deployment 2015-12-22 03:24:21 +00:00
MarcoFalke
9999cb0626 Fix url in .travis.yml 2015-11-30 16:34:33 +01:00
James O'Beirne
b5cbd396ca Add basic coverage reporting for RPC tests
Thanks to @MarcoFalke @dexX7 @laanwj for review.
2015-11-11 10:33:43 -08:00
ptschip
5467820be5 Migrated rpc-tests.sh to all python rpc-tests.py
1) created rpc-tests.py
2) deleted rpc-tests.sh
3) travis.yml points to rpc-tests.py
4) Modified Makefile.am
5) Updated README.md
6) Added tests_config.py and deleted tests-config.sh
7) Modified configure.ac with script to set correct path in tests_config.py
2015-10-01 11:28:11 -07:00
Cory Fields
745f909925 travis: install a recent libzmq and pyzmq for tests 2015-10-01 15:40:57 +02:00
Jonas Schnelli
a9c27cdf55 [travis] add zmq python module 2015-10-01 14:02:26 +02:00
Cory Fields
10e469ae37 travis: bump wine to 1.7 2015-09-02 11:42:27 -04:00
Cory Fields
bfadae3374 travis: for travis generating an extra build 2015-09-01 21:45:23 -04:00
Cory Fields
cc602d0f83 travis: don't spew fixme messages when running wine tests 2015-05-04 11:05:25 -04:00
Suhas Daftuar
29bff0e684 Add some travis debugging for python scripts
Adds printing to the console before/after calls to bitcoin-cli -rpcwait,
if the PYTHON_DEBUG environment variable is initialized.
2015-04-28 16:51:46 -04:00
Pieter Wuille
5abe2cf110 Reorder travis builds for faster response 2015-03-13 07:12:37 -07:00
Gavin Andresen
69866436be
Run unit tests in different orders
Set the BOOST_TEST_RANDOM environment variable, to
run unit tests in different orders for each test in the
test matrix that runs tests.
2015-03-06 12:15:08 -05:00
Cory Fields
06715165f9 build: change reduce exports/static libstdc++ options for gitian and travis
For Gitian releases:
  - Windows builds remain unchanged. libstdc++ was already linked statically.
  - OSX builds remain unchanged. libstdc++ is tied to the SDK and not worth
    messing with.
  - Linux builds now statically link libstdc++.

For Travis:
  - Match the previous behavior by adding --enable-reduce-exports as
  necessary.
  - Use static libstdc++ for the full Linux build.
2015-02-23 18:22:58 -05:00
Cory Fields
f0172bf91e osx: bump build sdk to 10.9 2015-01-20 01:49:20 -05:00
Cory Fields
46f54bf796 build: osx builders no longer need 32bit compiler support 2015-01-02 15:09:43 -05:00
Cory Fields
c54d647a92 travis: let travis use shared libs for tests 2014-11-19 22:49:41 -05:00
Pieter Wuille
3c1e10b161
Merge pull request #5297
096efc5 travis: install less packages from apt-get (Cory Fields)
2014-11-18 14:21:15 +01:00
Cory Fields
560e99636c travis: attempt to fix unlikely build issue
This is a long chain of errors, and there are likely other changes that could
be made to cope in other places along that chain.

If depends don't build successfully, don't bother trying again for the sake of
better logging. That's likely to hurt more than help. In this case, qt build
failed, and on the second attempt, it appeared to be successful. However, due
to a bad object from an internal gcc error on the first build, the resulting
lib was unusable. This caused bitcoin-qt to not be built, and tests and
packaging which expected bitcoin-qt to be there failed.

The root cause:
Mingw is especially crashy when using -jX, likely compounded by low-memory
environments. I've seen multiple problems with this combo in Gitian as well.

In this case:
i686-w64-mingw32-g++: internal compiler error: Killed (program cc1plus)
...
make[3]: *** [.obj/release/qdrawhelper.o] Error 4

The workaround:
Bump Travis down to using -j2 by default. Additionaly, enable --with-gui for
the windows builds. This will cause configure to fail if qt is not working
while also testing the config flag.

Other failures which may be worth revisiting separately:
- If a depends package fails, maybe remove the workdir so that it doesn't taint
  subsequent runs
- See if there's anything repeatable about the ICE when building qt
2014-11-13 04:09:19 -05:00
Cory Fields
096efc5812 travis: install less packages from apt-get 2014-11-12 18:35:18 -05:00
Cory Fields
2191eac812 add tests to travis 2014-10-31 00:28:52 -04:00
Luke Dashjr
caecb42b38 Travis: Descriptive build names 2014-10-10 03:36:49 +00:00
Cory Fields
d6b0539f45 travis: add non-default shell testing to travis. 2014-10-03 18:56:04 -04:00
Cory Fields
e9f3fa7c0b travis: enable windows tests 2014-10-01 06:59:59 -04:00
Matt Corallo
e166c177bc Revert "travis: retry tests before giving up"
This reverts commit 7e3821c097.
2014-09-30 12:14:22 -07:00