Jack Robison
b6afc437e6
combine auto_re_reflect and reflect_uploads settings
2018-01-12 09:21:24 -05:00
Jack Robison
8a133f9749
use lists of hostname:port strings in conf file
2018-01-09 16:55:39 -05:00
Jack Robison
9302d71012
Bump version 0.19.0rc24 --> 0.19.0rc25
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2018-01-07 12:18:37 -05:00
akinwale
5677f6d00d
added a new startup stage for wallet_unlock ( #1048 )
...
* added a new startup stage to indicate if the daemon is waiting for wallet_unlock
2018-01-07 06:44:29 +01:00
Thomas Zarebczan
4b6d0d33ef
remove download_directory from options
2018-01-05 14:19:21 -05:00
Jack Robison
e4364a60c2
Bump version 0.19.0rc23 --> 0.19.0rc24
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2018-01-04 21:39:36 -05:00
Jack Robison
b046a6578b
add blockchain_name
and lbryum_servers
to the adjustable settings
2018-01-04 21:30:41 -05:00
Jack Robison
64e04f8a68
refactor start_lbry_file
2018-01-04 21:28:09 -05:00
Jack Robison
76de605b7f
refactor start_lbry_files
2018-01-04 21:25:56 -05:00
Jack Robison
2af61460a7
add attributes to lbry file base classes
2018-01-04 21:25:56 -05:00
Jack Robison
bc58add6de
logging
2018-01-04 21:25:56 -05:00
Jack Robison
ecb9909faa
fix node and installation id whitespace bugs
2018-01-04 21:25:55 -05:00
Jack Robison
62a8789393
change default full_status to True in _get_lbry_files
2018-01-04 21:25:55 -05:00
Jack Robison
2523afa266
catch error from blob with invalid AES key size
2018-01-04 21:25:55 -05:00
Jack Robison
6385ab27c1
fix handling stream with no data blobs
...
fixes https://github.com/lbryio/lbry/issues/905
2018-01-04 21:25:54 -05:00
Jack Robison
7a020bec05
Merge remote-tracking branch 'origin/add-conf-file-flag'
2018-01-03 14:46:57 -05:00
Antonio Quartulli
79054037a7
conf: make config file a CLI parameter
...
The config file might be stores in an alternate location for several
reasons (i.e. testing different configs or running multiple nodes on the
same host). Make the config file a CLI parameter so that it can be
specified when launching the lbrynet-daemon.
Related to #1039
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
2017-12-30 04:11:06 +08:00
Jack Robison
3d94d9ad9e
Bump version 0.19.0rc22 --> 0.19.0rc23
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-29 12:53:27 -05:00
Jack Robison
bf46f5616b
Merge branch 'add_lbry_file_manager_to_reflector_2'
2017-12-29 12:39:50 -05:00
Alex Grintsvayg
b0c4746413
delete line that does nothing
2017-12-29 11:12:33 -05:00
Antonio Quartulli
0d3493ef73
conf: add method to check if a setting has default value
...
Sometimes it might be helpful to check if a given config
setting is still the default or if it was touched by the user
in any way (e.g. env, config file, ...).
Add is_default() method to Config object to perform such check.
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
2017-12-29 19:49:59 +08:00
Alex Grintsvayg
21d9b9bc71
minor fixes
2017-12-28 10:08:30 -05:00
Jack Robison
09c57675a7
add stream_availability and blob_availability, deprecate get_availability
2017-12-20 21:23:54 -05:00
Jack Robison
7c6c666342
fix verbose error
2017-12-20 20:43:01 -05:00
Jack Robison
f0a1adc9c5
whitespace, logging
2017-12-20 20:43:01 -05:00
Jack Robison
990e2a714a
Bump version 0.19.0rc21 --> 0.19.0rc22
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-18 16:20:56 -05:00
Jack Robison
225745f0e1
Bump version 0.19.0rc20 --> 0.19.0rc21
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-18 14:34:48 -05:00
Jack Robison
e22d43bb03
fix wallet_unlock
2017-12-18 13:17:54 -05:00
Jack Robison
4dc6eb8fea
Bump version 0.19.0rc19 --> 0.19.0rc20
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-18 11:34:33 -05:00
Jack Robison
20b9e4d17e
fix typo
2017-12-18 11:31:59 -05:00
Jack Robison
8c2d381aee
Wallet encryption ( #783 )
...
* update known commands
* add wallet_unlock, block wallet startup on being unlocked
* add wallet_decrypt and wallet_encrypt
* wallet encryption unit tests
* added use_keyring configuration option in order to make keyring password storage optional
2017-12-17 07:00:12 +01:00
Jack Robison
bcdeea75d6
Bump version 0.19.0rc18 --> 0.19.0rc19
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-15 20:39:39 -05:00
Jack Robison
a6f0c5fb4c
pylint fixes
...
fix exception formatting and a circular import
2017-12-15 20:25:20 -05:00
Jack Robison
7794109e57
Bump version 0.19.0rc17 --> 0.19.0rc18
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-13 16:45:59 -05:00
Jack Robison
e58f3593ee
pylint
2017-12-13 16:43:49 -05:00
Jack Robison
5a41afc9fc
Bump version 0.19.0rc16 --> 0.19.0rc17
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-13 16:40:25 -05:00
Alex Grintsvayg
ebed4f010b
fixes #1029 - stupid error messages
2017-12-13 13:56:44 -05:00
Jack Robison
668eaa6591
Bump version 0.19.0rc15 --> 0.19.0rc16
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-12 09:32:31 -05:00
Jack Robison
b2141bdf3d
fix import error
2017-12-12 09:26:28 -05:00
Jack Robison
f29437f474
Bump version 0.19.0rc14 --> 0.19.0rc15
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-11 14:54:24 -05:00
Jack Robison
7e3abe0bda
Bump version 0.19.0rc13 --> 0.19.0rc14
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-11 12:49:50 -05:00
Jack Robison
1307727130
revert run commands using deferToThread
...
reverts most of
https://github.com/lbryio/lbry/commit/100493f9068589095c489f797587ddbfd1
7f7899
2017-12-11 12:45:38 -05:00
Jack Robison
fbe55d5cd3
Bump version 0.19.0rc12 --> 0.19.0rc13
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-07 15:06:11 -05:00
Jack Robison
100493f906
run commands using the network as deferToThread, don't manually broadcast claims from lbrynet
2017-12-07 14:36:52 -05:00
Jack Robison
b7ee5419d4
better address use, remove _save_wallet from Wallet.py
2017-12-07 14:36:51 -05:00
Jack Robison
66f0c0f296
Bump version 0.19.0rc11 --> 0.19.0rc12
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-07 14:36:02 -05:00
Jack Robison
330d0465b6
remove message field from lbry file json, add blobs_completed, blobs_in_stream, and status fields
2017-12-07 13:54:18 -05:00
Jack Robison
fb65536f18
Bump version 0.19.0rc10 --> 0.19.0rc11
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-06 20:48:44 -05:00
Jack Robison
fb6ceeed9e
delete unused code
2017-12-06 20:41:24 -05:00
Jack Robison
6a83f67dfa
Bump version 0.19.0rc9 --> 0.19.0rc10
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-06 20:22:39 -05:00
Jack Robison
b7503f8b61
log traceback info for failed api requests
2017-12-06 19:52:29 -05:00
Jack Robison
b2a0aa21c9
get search timeout from conf.settings
2017-12-06 19:52:29 -05:00
Jack Robison
ac7ffdbf3a
add lbry_file_metadata table to save outpoint data of downloads
2017-12-06 19:52:25 -05:00
Jack Robison
90aa89dcae
re-add outpoint to file dictionary returned from file_ commands
2017-12-06 17:22:47 -05:00
Jack Robison
1594c6a831
move db functions in EncryptedFileManger to EncryptedFileMetadataManager
...
- remove TempEncryptedFileMetadataManager, run tests with the normal
DBEncryptedFileMetadataManager
2017-12-06 16:49:49 -05:00
Jack Robison
f9dee51ca4
Bump version 0.19.0rc8 --> 0.19.0rc9
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-06 15:21:44 -05:00
Jack Robison
329d74f6be
don't include file names when logging stream related info
2017-12-06 15:09:35 -05:00
Jack Robison
a92191709d
Bump version 0.19.0rc7 --> 0.19.0rc8
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-06 13:27:43 -05:00
Jack Robison
8fdd8d8c43
fix api error responses
2017-12-06 13:25:58 -05:00
Jack Robison
ecdba8dc38
Bump version 0.19.0rc6 --> 0.19.0rc7
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-05 15:34:43 -05:00
Jack Robison
88c6eb7816
Merge branch 'increase_announce_duration'
2017-12-05 15:34:16 -05:00
Jack Robison
4c0692bd7a
Bump version 0.19.0rc5 --> 0.19.0rc6
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-05 14:03:10 -05:00
Jack Robison
fbcc81adb4
add lbrynet-console
2017-12-05 13:34:46 -05:00
Kay Kurokawa
915ab668f5
add some tests to make sure file status after reflector server download (make sure in stopped state, and have correct number of blobs)
2017-12-05 13:18:31 -05:00
Kay Kurokawa
63c6d3580d
do not yield on add_lbry_file() when obtaining sd blob as reflector server
2017-12-05 13:18:16 -05:00
Kay Kurokawa
989f77c00a
increase SINGLE_HASH_ANNONCE_DURATION from 1 to 5
2017-12-05 11:55:59 -05:00
Jack Robison
5d95194469
Bump version 0.19.0rc4 --> 0.19.0rc5
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-05 09:49:21 -05:00
Kay Kurokawa
7e93ea8d97
do a sanity check to see if we have remote height, use remote height instead of local height when auto renewing
2017-12-05 09:41:45 -05:00
Kay Kurokawa
bfbecd9196
fix use of return in inlinecallback, change to defer.returnValue(None)
2017-12-05 09:41:44 -05:00
Kay Kurokawa
707775214a
update docstrings and make sure return value is consistent
2017-12-05 09:41:44 -05:00
Kay Kurokawa
bf29d28c4d
bug fix in claim_renew()
2017-12-05 09:41:43 -05:00
Kay Kurokawa
8f05c1083f
pylint long lines
2017-12-05 09:41:43 -05:00
Kay Kurokawa
36510a0a59
make auto_renew_claim_height_delta settable in API commands settings_set
2017-12-05 09:41:43 -05:00
Kay Kurokawa
e4e60ebe9b
add auto_renew_claim_height_delta to configuration and auto renew after startup if necessary
2017-12-05 09:41:42 -05:00
Kay Kurokawa
1ea8c1ad29
no underscore necessary (not a private function)
2017-12-05 09:41:42 -05:00
Jack Robison
d6e3b11026
add claim_renew
2017-12-05 09:41:42 -05:00
Jack Robison
0cf45657c0
Bump version 0.19.0rc3 --> 0.19.0rc4
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-12-05 09:34:03 -05:00
Jack Robison
58b789ed42
fix https://github.com/lbryio/lbry/issues/1013
2017-12-05 09:31:29 -05:00
Kay Kurokawa
95289952b5
No need to set up DummmyRateLimiter for reflector test
2017-12-04 13:08:34 -05:00
Kay Kurokawa
4971ddda78
No need to check for None in reflector test tear down
2017-12-04 13:08:34 -05:00
Kay Kurokawa
ae74d80c8a
add lbry_file_manager to reflector server in functional reflector test, make sure file is added to lbry_file_manager when reflected
2017-12-04 13:08:34 -05:00
Kay Kurokawa
ab667015c4
add lbry_file_manager to reflector server and add files to it
2017-12-04 13:08:33 -05:00
Kay Kurokawa
6218df2a92
make payment_rate_manager in add_lbry_file() an optional argument, initialize it from Session if not specified
2017-12-04 13:08:33 -05:00
Kay Kurokawa
57117baab5
remove ManagedEncryptedFileDownloader.load_file_attributes() move it to EncryptedFileDownloader.set_stream_info()
2017-12-04 13:08:32 -05:00
Jack Robison
b859f7a23f
Bump version 0.19.0rc2 --> 0.19.0rc3
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-29 15:41:23 -05:00
Jack Robison
00edd3cb66
remove unused files
2017-11-29 12:01:39 -05:00
Jack Robison
e3e8dea405
Bump version 0.19.0rc1 --> 0.19.0rc2
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-28 12:59:17 -05:00
Jack Robison
57152547ce
docs
2017-11-28 12:19:19 -05:00
Kay Kurokawa
c007ebd121
Fix test
2017-11-28 11:53:17 -05:00
Kay Kurokawa
50586fa39d
use sd_hash instead of claim_id as a key for Daemon.streams dictionary
2017-11-28 11:53:16 -05:00
Kay Kurokawa
38834a083c
when calling jsonrpc_get, check if you have to file by using the sd_hash instead of claim_id
2017-11-28 11:53:16 -05:00
Kay Kurokawa
70709b4ca4
remove use of name from reflector client, use file name instead
2017-11-28 11:53:15 -05:00
Kay Kurokawa
971c720642
removing claim information from files related API commands
2017-11-28 11:53:15 -05:00
Jack Robison
456c94b3cb
Bump version 0.18.1rc13 --> 0.19.0rc1
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-22 14:38:51 -05:00
Jack Robison
e541f536d2
Bump version 0.18.1rc12 --> 0.18.1rc13
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-22 14:37:00 -05:00
Jack Robison
1819035566
Bump version 0.18.1rc11 --> 0.18.1rc12
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-22 14:12:10 -05:00
Jack Robison
d0581f2cf7
Merge branch 'add-channel-import-and-export'
2017-11-22 14:03:45 -05:00
Jack Robison
200e9ae3d8
Bump version 0.18.1rc10 --> 0.18.1rc11
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-22 14:03:27 -05:00
Jack Robison
086c843068
add channel_list, deprecate channel_list_mine
2017-11-22 13:50:07 -05:00
Jack Robison
d98e0e8110
add channel_import and channel_export
2017-11-22 13:46:34 -05:00
Kay Kurokawa
ed4104820d
merge tests.dht into tests.unit.dht
2017-11-16 14:45:42 -05:00
Jack Robison
e651c8269d
Bump version 0.18.1rc9 --> 0.18.1rc10
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-15 14:35:10 -05:00
Jack Robison
a8fa85ac94
Bump version 0.18.1rc8 --> 0.18.1rc9
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-15 09:27:21 -05:00
Jack Robison
c93faa949d
Bump version 0.18.1rc7 --> 0.18.1rc8
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-15 09:17:20 -05:00
Jack Robison
fc68431048
Bump version 0.18.1rc6 --> 0.18.1rc7
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-14 13:13:07 -05:00
Jack Robison
3ffe103824
Bump version 0.18.1rc5 --> 0.18.1rc6
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-14 13:09:19 -05:00
Jack Robison
2f3bfb1a09
Bump version 0.18.1rc4 --> 0.18.1rc5
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-13 14:17:54 -05:00
Jack Robison
b000969ce5
Bump version 0.18.1rc3 --> 0.18.1rc4
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-10 14:23:51 -05:00
Jack Robison
0b13615dc5
pylint
2017-11-10 14:23:14 -05:00
Jack Robison
f65ec2c401
Bump version 0.18.1rc2 --> 0.18.1rc3
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-10 13:16:53 -05:00
Jack Robison
930e965d9c
less verbose exchange rate error
2017-11-10 10:34:36 -05:00
Jack Robison
0cd497d602
Bump version 0.18.1rc1 --> 0.18.1rc2
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-09 15:34:00 -05:00
Jack Robison
949b2dc215
Bump version 0.18.0 --> 0.18.1rc1
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-08 19:57:49 -05:00
Jack Robison
853bb67447
verify source and claim metadata before getting to _publish_stream
2017-11-08 19:50:37 -05:00
Jack Robison
28fea7093f
Bump version 0.18.0rc1 --> 0.18.0
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-08 11:05:18 -05:00
Jack Robison
143224fe0a
Bump version 0.17.2rc11 --> 0.18.0rc1
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-07 23:23:47 -05:00
Jack Robison
e7a0aa28be
Bump version 0.17.2rc10 --> 0.17.2rc11
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-07 23:22:13 -05:00
Jack Robison
8d2e8eac58
Bump version 0.17.2rc9 --> 0.17.2rc10
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-07 15:24:48 -05:00
Jack Robison
f87d6b08c8
remove queued decorator
2017-11-07 15:17:04 -05:00
Jack Robison
5bb08cdf5a
Bump version 0.17.2rc8 --> 0.17.2rc9
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-07 15:15:54 -05:00
Kay Kurokawa
b380f5d344
completely remove unused from_peer field
2017-11-07 09:56:40 -05:00
Kay Kurokawa
9776655c3c
remove unneeded if statement in getPeersForBlob
2017-11-07 09:56:40 -05:00
Kay Kurokawa
71ebf79939
add argument in DHTPeerFinder.find_peers_for_blob that filters itself from peer list. Use this argument to remove itself from peer list when downloading blobs
...
do not filter self on peer list
2017-11-07 09:56:40 -05:00
Kay Kurokawa
7e8f3254b1
Add to DHT Node class initialization argument peerPort where it serves blobs, instead of specifying it in announceHaveBlob
2017-11-07 09:56:40 -05:00
Antonio Quartulli
965969b856
Don't filter out local node ID when returning peer list
...
If a node is returning a peer list for a given blob hash
(being this been requested via CLI or via DHT) and it is
part of the resulting peer list, it will filter itself out
before returning the list.
This makes the results across the DHT inconsistent as
different nodes won't include themselves when
responding a findValue/findNode query.
Remove such filtering so that the local node ID is always
included when needed.
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
2017-11-07 09:56:40 -05:00
Ian Chamberlain
20e9ff2902
Delete blob hash from list when blob is deleted
2017-11-05 21:56:54 -05:00
Jack Robison
8d095ab36f
Bump version 0.17.2rc7 --> 0.17.2rc8
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-04 21:03:46 -04:00
Jack Robison
81a44fa824
Merge branch 'use-shared-queued-deferredsemaphore'
2017-11-04 21:01:38 -04:00
Jack Robison
a79a00180d
rename variable
2017-11-04 20:37:52 -04:00
Jack Robison
36782e0878
use shared deferredSemaphore for daemon methods decorated with 'queued'
...
fixes race condition between publish and channel_new
2017-11-04 20:37:46 -04:00
Ian Chamberlain
733e356e55
Fix failing ConnectionManager unit test
2017-11-04 15:15:04 -04:00
Jack Robison
022e767bc4
Bump version 0.17.2rc6 --> 0.17.2rc7
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-02 10:53:05 -04:00
Alex Grintsvayg
cc61cc6b17
rename command to utxo_list
2017-11-02 07:14:35 -04:00
Jack Robison
12d88159a1
Bump version 0.17.2rc5 --> 0.17.2rc6
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-01 20:33:08 -04:00
Jack Robison
ccf3959e2f
Bump version 0.17.2rc4 --> 0.17.2rc5
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-01 19:44:52 -04:00
Jack Robison
2542883fde
Bump version 0.17.2rc3 --> 0.17.2rc4
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-01 17:39:37 -04:00
Alex Grin
fcfde63720
Merge branch 'master' into wallet_list_unspent
2017-11-01 17:35:31 -04:00
Alex Grintsvayg
3152ecfd71
add wallet_list_unspent
2017-11-01 17:29:11 -04:00
Jack Robison
c86db2d846
Bump version 0.17.2rc2 --> 0.17.2rc3
...
Signed-off-by: Jack Robison <jackrobison@lbry.io>
2017-11-01 17:28:07 -04:00
Kay Kurokawa
10ac86a99e
use FileBodyProducer to read
2017-10-31 15:41:53 -04:00
Kay Kurokawa
9470b318b0
moved BLOB_SIZE in conf to MAX_BLOB_SIZE constant in blob.blob_file
2017-10-31 15:38:00 -04:00
Kay Kurokawa
51d4668763
fix test
2017-10-31 15:38:00 -04:00
Kay Kurokawa
96d8cb17d9
delete deprecated producer/consumer read methods from BlobFile
2017-10-31 15:38:00 -04:00
Kay Kurokawa
1360345395
use blob.open_for_reading() in StreamBlobDecryptor
2017-10-31 15:38:00 -04:00
Kay Kurokawa
e07c2f7bd8
take read handle as argument instead of file path
2017-10-31 15:38:00 -04:00
Kay Kurokawa
d68ca65e41
warn if reader is garbage collected but not closed, do the same for writer
2017-10-31 15:38:00 -04:00
Kay Kurokawa
ea4b6935c9
remove unnecessary use of @property
2017-10-31 15:35:01 -04:00
Kay Kurokawa
cf9f9d0e75
remove unused get_default_market_feed() function
2017-10-31 15:35:01 -04:00
Kay Kurokawa
020a2e0e89
adjust the _online variable to be set on the errback, so any exception will set _online to False
2017-10-31 15:35:01 -04:00
Kay Kurokawa
7e7931fbf1
add Bittrex feed as a redundant feed, add unit test for it
2017-10-31 15:35:01 -04:00