travis_fold:start:worker_info
Worker information
hostname: 47b3bc80-1508-4287-99a3-4c6b4f9693f1@1.worker-com-oss-6ff4ffc9b7-55dr6.gce-production-3
version: v6.2.24 https://github.com/travis-ci/worker/tree/ee57d650a7692c1ac03f74ac073d0fd150c9f030
instance: travis-job-44a2ea8c-a218-4cec-a367-bad660a9da6a travis-ci-ubuntu-2204-1732291639-53689d97 (via amqp)
startup: 5.78814295s
travis_fold:end:worker_info
travis_time:start:0d36b110
travis_time:end:0d36b110:start=1739772657216879066,finish=1739772657619945027,duration=403065961,event=no_world_writable_dirs
travis_time:start:0e3ccbd8
travis_time:end:0e3ccbd8:start=1739772657623915134,finish=1739772657633214629,duration=9299495,event=agent
travis_time:start:2ce2da9d
travis_time:end:2ce2da9d:start=1739772657636311054,finish=1739772657638708484,duration=2397430,event=check_unsupported
travis_time:start:20c06251
travis_fold:start:system_info
Build system information
Build language: python
Build dist: jammy
Build id: 274236385
Job id: 630633626
Runtime kernel version: 6.8.0-1018-gcp
VM: default
travis-build version: 6b157a1c
Build image provisioning date and time
Fri Nov 22 04:28:26 PM UTC 2024
Operating System Details
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy
Systemd Version
systemd 249 (249.11-0ubuntu3.12)
Cookbooks Version
be2ab50 https://github.com/travis-ci/travis-cookbooks/tree/be2ab50
git version
git version 2.47.0
bash version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
gcc version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
docker version
Client:
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.21.1
 Git commit:        24.0.7-0ubuntu2~22.04.1
 Built:             Wed Mar 13 20:23:54 2024
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.21.1
  Git commit:       24.0.7-0ubuntu2~22.04.1
  Built:            Wed Mar 13 20:23:54 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.12
  GitCommit:        
 runc:
  Version:          1.1.12-0ubuntu2~22.04.1
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        
clang version
clang version 18.1.8
jq version
jq-1.7.1
bats version
Bats 1.11.0
shellcheck version
0.10.0
shfmt version
v3.8.0
ccache version
4.5.1
cmake version
cmake version 3.29.0
heroku version
heroku/9.5.0 linux-x64 node-v16.20.2
imagemagick version
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
md5deep version
4.4
mercurial version
version 6.5.2
mysql version
mysql  Ver 8.0.40-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
packer version
Packer v1.11.2
postgresql client version
psql (PostgreSQL) 14.13 (Ubuntu 14.13-0ubuntu0.22.04.1)
ragel version
Ragel State Machine Compiler version 6.10 March 2017
sudo version
1.9.9
gzip version
gzip 1.10
zip version
Zip 3.0
vim version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Oct 16 2024 17:27:14)
iptables version
iptables v1.8.7 (nf_tables)
curl version
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.18
wget version
GNU Wget 1.21.2 built on linux-gnu.
rsync version
rsync  version 3.2.7  protocol version 31
nvm version
0.40.1
perlbrew version
/home/travis/perl5/perlbrew/bin/perlbrew  - App::perlbrew/0.95
phpenv version
rbenv 1.3.0
rvm version
rvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
default ruby version
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
default python version
Python 3.10.14
ElasticSearch version
7.16.3
Installed Firefox version
firefox 99.0
MongoDB version
MongoDB 6.0.19
ant version
Apache Ant(TM) version 1.10.12 compiled on January 17 1970
mvn version
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
gradle version
Gradle 8.3!
lein version
Leiningen 2.11.2 on Java 11.0.21 OpenJDK 64-Bit Server VM
Pre-installed Node.js versions
v10.24.1
v12.22.12
v14.21.3
v16.15
v16.20.2
v18.20.3
v18.20.5
v20.18.1
v22.11.0
v4.9.1
v6.17.1
v8.17.0
phpenv versions
  system
  8.1
* 8.1.2 (set by /home/travis/.phpenv/version)
  hhvm-stable
  hhvm
composer --version
Composer version 2.3.7 2022-06-06 16:43:28
Pre-installed Ruby versions
ruby-2.7.8
ruby-3.3.5
travis_fold:end:system_info

travis_time:end:20c06251:start=1739772657641945297,finish=1739772657649767956,duration=7822659,event=show_system_info
travis_time:start:2d2a455c
travis_time:end:2d2a455c:start=1739772657654050908,finish=1739772657681005188,duration=26954280,event=rm_riak_source
travis_time:start:017f145c
travis_time:end:017f145c:start=1739772657684651036,finish=1739772657690542092,duration=5891056,event=fix_rwky_redis
travis_time:start:0cdf9c59
travis_time:end:0cdf9c59:start=1739772657694225521,finish=1739772658275586276,duration=581360755,event=wait_for_network
travis_time:start:18413868
travis_time:end:18413868:start=1739772658279553855,finish=1739772658588630941,duration=309077086,event=update_apt_keys
travis_time:start:1168ca9d
travis_time:end:1168ca9d:start=1739772658591932322,finish=1739772658657419558,duration=65487236,event=fix_hhvm_source
travis_time:start:209dc4d2
travis_time:end:209dc4d2:start=1739772658660930640,finish=1739772658663795540,duration=2864900,event=update_mongo_arch
travis_time:start:09cf7340
travis_time:end:09cf7340:start=1739772658667037583,finish=1739772658705919427,duration=38881844,event=fix_sudo_enabled_trusty
travis_time:start:1e34cb50
travis_time:end:1e34cb50:start=1739772658709363671,finish=1739772658711770148,duration=2406477,event=update_glibc
travis_time:start:30bc12d3
travis_time:end:30bc12d3:start=1739772658715072648,finish=1739772658751019753,duration=35947105,event=clean_up_path
travis_time:start:28925fa6
travis_time:end:28925fa6:start=1739772658754299393,finish=1739772658770951944,duration=16652551,event=fix_resolv_conf
travis_time:start:17c8a658
travis_time:end:17c8a658:start=1739772658774706800,finish=1739772658809565262,duration=34858462,event=fix_etc_hosts
travis_time:start:2742c742
travis_time:end:2742c742:start=1739772658812775151,finish=1739772658821790312,duration=9015161,event=fix_mvn_settings_xml
travis_time:start:0698fb20
travis_time:end:0698fb20:start=1739772658824778590,finish=1739772658839430914,duration=14652324,event=no_ipv6_localhost
travis_time:start:06418b48
travis_time:end:06418b48:start=1739772658842817557,finish=1739772658845166920,duration=2349363,event=fix_etc_mavenrc
travis_time:start:090fa3ce
OK

travis_time:end:090fa3ce:start=1739772658848195637,finish=1739772659306369415,duration=458173778,event=fix_perforce_key
travis_time:start:1145ae66
travis_time:end:1145ae66:start=1739772659309651114,finish=1739772659312678080,duration=3026966,event=fix_wwdr_certificate
travis_time:start:23eecfdb
travis_time:end:23eecfdb:start=1739772659315780144,finish=1739772659381435903,duration=65655759,event=put_localhost_first
travis_time:start:0046aa94
travis_time:end:0046aa94:start=1739772659385156779,finish=1739772659390071654,duration=4914875,event=home_paths
travis_time:start:050a8ec8
travis_time:end:050a8ec8:start=1739772659393371516,finish=1739772659411759339,duration=18387823,event=disable_initramfs
travis_time:start:18a4dca0
travis_time:end:18a4dca0:start=1739772659415401177,finish=1739772659575483752,duration=160082575,event=disable_ssh_roaming
travis_time:start:00330c04
travis_time:end:00330c04:start=1739772659579164725,finish=1739772659581700971,duration=2536246,event=debug_tools
travis_time:start:37f030f5
travis_time:end:37f030f5:start=1739772659585068167,finish=1739772659588528450,duration=3460283,event=uninstall_oclint
travis_time:start:0114c598
travis_time:end:0114c598:start=1739772659591919599,finish=1739772659595351896,duration=3432297,event=rvm_use
travis_time:start:2ea5c499
travis_time:end:2ea5c499:start=1739772659598743278,finish=1739772659611510010,duration=12766732,event=rm_etc_boto_cfg
travis_time:start:171a0dc6
travis_time:end:171a0dc6:start=1739772659615014170,finish=1739772659618899999,duration=3885829,event=rm_oraclejdk8_symlink
travis_time:start:0b35de0e
travis_time:end:0b35de0e:start=1739772659622203209,finish=1739772659755512659,duration=133309450,event=enable_i386
travis_time:start:079ff050
travis_time:end:079ff050:start=1739772659758825595,finish=1739772659762960450,duration=4134855,event=update_rubygems
travis_time:start:031b6055
travis_time:end:031b6055:start=1739772659766357645,finish=1739772660842040608,duration=1075682963,event=ensure_path_components
travis_time:start:073e5fd0
travis_time:end:073e5fd0:start=1739772660845773251,finish=1739772660848329568,duration=2556317,event=redefine_curl
travis_time:start:019b89b8
travis_time:end:019b89b8:start=1739772660851581581,finish=1739772660853874837,duration=2293256,event=nonblock_pipe
travis_time:start:1aa33aa7
travis_time:end:1aa33aa7:start=1739772660857153580,finish=1739772682360346125,duration=21503192545,event=apt_get_update
travis_time:start:210d85b2
travis_time:end:210d85b2:start=1739772682364018386,finish=1739772682366477212,duration=2458826,event=deprecate_xcode_64
travis_time:start:07e88f48
travis_time:end:07e88f48:start=1739772682369777964,finish=1739772686130798474,duration=3761020510,event=update_heroku
travis_time:start:0107c87d
travis_time:end:0107c87d:start=1739772686134359005,finish=1739772686136710441,duration=2351436,event=shell_session_update
travis_time:start:06a36148
travis_fold:start:docker_mtu_and_registry_mirrors
travis_fold:end:docker_mtu_and_registry_mirrors
travis_time:end:06a36148:start=1739772686139750051,finish=1739772690034290140,duration=3894540089,event=set_docker_mtu_and_registry_mirrors
travis_time:start:109be104
travis_fold:start:Docker
travis_fold:end:Docker
travis_time:end:109be104:start=1739772690037622454,finish=1739772690040004694,duration=2382240,event=docker_config
travis_time:start:1a2fd958
travis_fold:start:resolvconf
travis_fold:end:resolvconf
travis_time:end:1a2fd958:start=1739772690042951245,finish=1739772690115169567,duration=72218322,event=resolvconf
travis_time:start:1082f742
travis_time:end:1082f742:start=1739772690118847872,finish=1739772690335443824,duration=216595952,event=maven_central_mirror
travis_time:start:053b23a2
travis_time:end:053b23a2:start=1739772690338843469,finish=1739772690464668677,duration=125825208,event=maven_https
travis_time:start:1fea6ed7
travis_time:end:1fea6ed7:start=1739772690470886679,finish=1739772690473853281,duration=2966602,event=fix_ps4
travis_fold:start:ssh_known_hosts.0
Adding ssh known hosts
$ mkdir -p ${TRAVIS_HOME}/.ssh
travis_time:start:1a913bed
$ ssh-keyscan -t $TRAVIS_SSH_KEY_TYPES -H localhost 2>&1 | tee -a ${TRAVIS_HOME}/.ssh/known_hosts
# localhost:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
# localhost:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
# localhost:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
|1|S1X2OTW66RyC1nZYgbGFQiRK478=|L31zoO7E57OO9/k19JGwLIz+95M= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3HFI6rtIj/GuMEyW1RTjiBc7+J7Vpt8P4SH+v052iAYR3E2U2zZLGrmdvSRbQlmT/gV35L078opxGKb+NYDnZ6pgeb9/id4k5UEKKtLriarKEchv1BtOhmwy+7dFV0sGqGMfcrUQDpFweJUThsiRMAFN+CguOsLIZBz6n5TIXAloW/jewoOtylEfINfTJEODKvaPl7gYORLYUpzLGuldjvyxos+FILF+Hsb38rOu1YLjWiEVk25KzQ1BHocZwk2Yin50wQHcm3JfXb95xFRGvJdCZGwICNAfr66u9tAXzG3eYOhd178trKl16GZZeXOXP7y0Sgw9GQFToBF+ybybZHq3zj5r0KTqyKatnh3ejg7K702pQpITKL+FtmHNg9SYWhSK1awwrdoTrVTNvEYF73OOxzX0cUEM24DwgXZ9IjULbaEXCRPL+zxuDMILjid/qLyWUE9zDf21CAiFI2jgwF6Zf+OnhuzpG+lvI2pR4Q2Ks1vfxchvchgCruCtSvVU=
|1|0+d/15XyTTKPS94Fw766jx4i+C4=|MhJtxb1TlaDAHjEYEG9wlCkIyvU= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMIe0gbM8XDsBJmBnij8+Cb/EpVgrtMJzR3JRv5h+tdVqFRtMiz5zud9VJwPN3Yke/gSetvEWasxJG2rHVLoupc=
travis_time:end:1a913bed:start=1739772690481945789,finish=1739772690541421013,duration=59475224,event=checkout
travis_fold:end:ssh_known_hosts.0
travis_time:start:0a815ac4

travis_fold:start:git.checkout
travis_time:start:1d0bdc5a
travis_time:end:1d0bdc5a:start=1739772690549174593,finish=1739772690561392505,duration=12217912,event=checkout
travis_time:start:026c1132
$ git clone --depth=50 https://github.com/bit-team/backintime.git bit-team/backintime
Cloning into 'bit-team/backintime'...
remote: Enumerating objects: 932, done.
remote: Counting objects:   0% (1/932)
remote: Counting objects:   1% (10/932)
remote: Counting objects:   2% (19/932)
remote: Counting objects:   3% (28/932)
remote: Counting objects:   4% (38/932)
remote: Counting objects:   5% (47/932)
remote: Counting objects:   6% (56/932)
remote: Counting objects:   7% (66/932)
remote: Counting objects:   8% (75/932)
remote: Counting objects:   9% (84/932)
remote: Counting objects:  10% (94/932)
remote: Counting objects:  11% (103/932)
remote: Counting objects:  12% (112/932)
remote: Counting objects:  13% (122/932)
remote: Counting objects:  14% (131/932)
remote: Counting objects:  15% (140/932)
remote: Counting objects:  16% (150/932)
remote: Counting objects:  17% (159/932)
remote: Counting objects:  18% (168/932)
remote: Counting objects:  19% (178/932)
remote: Counting objects:  20% (187/932)
remote: Counting objects:  21% (196/932)
remote: Counting objects:  22% (206/932)
remote: Counting objects:  23% (215/932)
remote: Counting objects:  24% (224/932)
remote: Counting objects:  25% (233/932)
remote: Counting objects:  26% (243/932)
remote: Counting objects:  27% (252/932)
remote: Counting objects:  28% (261/932)
remote: Counting objects:  29% (271/932)
remote: Counting objects:  30% (280/932)
remote: Counting objects:  31% (289/932)
remote: Counting objects:  32% (299/932)
remote: Counting objects:  33% (308/932)
remote: Counting objects:  34% (317/932)
remote: Counting objects:  35% (327/932)
remote: Counting objects:  36% (336/932)
remote: Counting objects:  37% (345/932)
remote: Counting objects:  38% (355/932)
remote: Counting objects:  39% (364/932)
remote: Counting objects:  40% (373/932)
remote: Counting objects:  41% (383/932)
remote: Counting objects:  42% (392/932)
remote: Counting objects:  43% (401/932)
remote: Counting objects:  44% (411/932)
remote: Counting objects:  45% (420/932)
remote: Counting objects:  46% (429/932)
remote: Counting objects:  47% (439/932)
remote: Counting objects:  48% (448/932)
remote: Counting objects:  49% (457/932)
remote: Counting objects:  50% (466/932)
remote: Counting objects:  51% (476/932)
remote: Counting objects:  52% (485/932)
remote: Counting objects:  53% (494/932)
remote: Counting objects:  54% (504/932)
remote: Counting objects:  55% (513/932)
remote: Counting objects:  56% (522/932)
remote: Counting objects:  57% (532/932)
remote: Counting objects:  58% (541/932)
remote: Counting objects:  59% (550/932)
remote: Counting objects:  60% (560/932)
remote: Counting objects:  61% (569/932)
remote: Counting objects:  62% (578/932)
remote: Counting objects:  63% (588/932)
remote: Counting objects:  64% (597/932)
remote: Counting objects:  65% (606/932)
remote: Counting objects:  66% (616/932)
remote: Counting objects:  67% (625/932)
remote: Counting objects:  68% (634/932)
remote: Counting objects:  69% (644/932)
remote: Counting objects:  70% (653/932)
remote: Counting objects:  71% (662/932)
remote: Counting objects:  72% (672/932)
remote: Counting objects:  73% (681/932)
remote: Counting objects:  74% (690/932)
remote: Counting objects:  75% (699/932)
remote: Counting objects:  76% (709/932)
remote: Counting objects:  77% (718/932)
remote: Counting objects:  78% (727/932)
remote: Counting objects:  79% (737/932)
remote: Counting objects:  80% (746/932)
remote: Counting objects:  81% (755/932)
remote: Counting objects:  82% (765/932)
remote: Counting objects:  83% (774/932)
remote: Counting objects:  84% (783/932)
remote: Counting objects:  85% (793/932)
remote: Counting objects:  86% (802/932)
remote: Counting objects:  87% (811/932)
remote: Counting objects:  88% (821/932)
remote: Counting objects:  89% (830/932)
remote: Counting objects:  90% (839/932)
remote: Counting objects:  91% (849/932)
remote: Counting objects:  92% (858/932)
remote: Counting objects:  93% (867/932)
remote: Counting objects:  94% (877/932)
remote: Counting objects:  95% (886/932)
remote: Counting objects:  96% (895/932)
remote: Counting objects:  97% (905/932)
remote: Counting objects:  98% (914/932)
remote: Counting objects:  99% (923/932)
remote: Counting objects: 100% (932/932)
remote: Counting objects: 100% (932/932), done.
remote: Compressing objects:   0% (1/558)
remote: Compressing objects:   1% (6/558)
remote: Compressing objects:   2% (12/558)
remote: Compressing objects:   3% (17/558)
remote: Compressing objects:   4% (23/558)
remote: Compressing objects:   5% (28/558)
remote: Compressing objects:   6% (34/558)
remote: Compressing objects:   7% (40/558)
remote: Compressing objects:   8% (45/558)
remote: Compressing objects:   9% (51/558)
remote: Compressing objects:  10% (56/558)
remote: Compressing objects:  11% (62/558)
remote: Compressing objects:  12% (67/558)
remote: Compressing objects:  13% (73/558)
remote: Compressing objects:  14% (79/558)
remote: Compressing objects:  15% (84/558)
remote: Compressing objects:  16% (90/558)
remote: Compressing objects:  17% (95/558)
remote: Compressing objects:  18% (101/558)
remote: Compressing objects:  19% (107/558)
remote: Compressing objects:  20% (112/558)
remote: Compressing objects:  21% (118/558)
remote: Compressing objects:  22% (123/558)
remote: Compressing objects:  23% (129/558)
remote: Compressing objects:  24% (134/558)
remote: Compressing objects:  25% (140/558)
remote: Compressing objects:  26% (146/558)
remote: Compressing objects:  27% (151/558)
remote: Compressing objects:  28% (157/558)
remote: Compressing objects:  29% (162/558)
remote: Compressing objects:  30% (168/558)
remote: Compressing objects:  31% (173/558)
remote: Compressing objects:  32% (179/558)
remote: Compressing objects:  33% (185/558)
remote: Compressing objects:  34% (190/558)
remote: Compressing objects:  35% (196/558)
remote: Compressing objects:  36% (201/558)
remote: Compressing objects:  37% (207/558)
remote: Compressing objects:  38% (213/558)
remote: Compressing objects:  39% (218/558)
remote: Compressing objects:  40% (224/558)
remote: Compressing objects:  41% (229/558)
remote: Compressing objects:  42% (235/558)
remote: Compressing objects:  43% (240/558)
remote: Compressing objects:  44% (246/558)
remote: Compressing objects:  45% (252/558)
remote: Compressing objects:  46% (257/558)
remote: Compressing objects:  47% (263/558)
remote: Compressing objects:  48% (268/558)
remote: Compressing objects:  49% (274/558)
remote: Compressing objects:  50% (279/558)
remote: Compressing objects:  51% (285/558)
remote: Compressing objects:  52% (291/558)
remote: Compressing objects:  53% (296/558)
remote: Compressing objects:  54% (302/558)
remote: Compressing objects:  55% (307/558)
remote: Compressing objects:  56% (313/558)
remote: Compressing objects:  57% (319/558)
remote: Compressing objects:  58% (324/558)
remote: Compressing objects:  59% (330/558)
remote: Compressing objects:  60% (335/558)
remote: Compressing objects:  61% (341/558)
remote: Compressing objects:  62% (346/558)
remote: Compressing objects:  63% (352/558)
remote: Compressing objects:  64% (358/558)
remote: Compressing objects:  65% (363/558)
remote: Compressing objects:  66% (369/558)
remote: Compressing objects:  67% (374/558)
remote: Compressing objects:  68% (380/558)
remote: Compressing objects:  69% (386/558)
remote: Compressing objects:  70% (391/558)
remote: Compressing objects:  71% (397/558)
remote: Compressing objects:  72% (402/558)
remote: Compressing objects:  73% (408/558)
remote: Compressing objects:  74% (413/558)
remote: Compressing objects:  75% (419/558)
remote: Compressing objects:  76% (425/558)
remote: Compressing objects:  77% (430/558)
remote: Compressing objects:  78% (436/558)
remote: Compressing objects:  79% (441/558)
remote: Compressing objects:  80% (447/558)
remote: Compressing objects:  81% (452/558)
remote: Compressing objects:  82% (458/558)
remote: Compressing objects:  83% (464/558)
remote: Compressing objects:  84% (469/558)
remote: Compressing objects:  85% (475/558)
remote: Compressing objects:  86% (480/558)
remote: Compressing objects:  87% (486/558)
remote: Compressing objects:  88% (492/558)
remote: Compressing objects:  89% (497/558)
remote: Compressing objects:  90% (503/558)
remote: Compressing objects:  91% (508/558)
remote: Compressing objects:  92% (514/558)
remote: Compressing objects:  93% (519/558)
remote: Compressing objects:  94% (525/558)
remote: Compressing objects:  95% (531/558)
remote: Compressing objects:  96% (536/558)
remote: Compressing objects:  97% (542/558)
remote: Compressing objects:  98% (547/558)
remote: Compressing objects:  99% (553/558)
remote: Compressing objects: 100% (558/558)
remote: Compressing objects: 100% (558/558), done.
Receiving objects:   0% (1/932)
Receiving objects:   1% (10/932)
Receiving objects:   2% (19/932)
Receiving objects:   3% (28/932)
Receiving objects:   4% (38/932)
Receiving objects:   5% (47/932)
Receiving objects:   6% (56/932)
Receiving objects:   7% (66/932)
Receiving objects:   8% (75/932)
Receiving objects:   9% (84/932)
Receiving objects:  10% (94/932)
Receiving objects:  11% (103/932)
Receiving objects:  12% (112/932)
Receiving objects:  13% (122/932)
Receiving objects:  14% (131/932)
Receiving objects:  15% (140/932)
Receiving objects:  16% (150/932)
Receiving objects:  17% (159/932)
Receiving objects:  18% (168/932)
Receiving objects:  19% (178/932)
Receiving objects:  20% (187/932)
Receiving objects:  21% (196/932)
Receiving objects:  22% (206/932)
Receiving objects:  23% (215/932)
Receiving objects:  24% (224/932)
Receiving objects:  25% (233/932)
Receiving objects:  26% (243/932)
Receiving objects:  27% (252/932)
Receiving objects:  28% (261/932)
Receiving objects:  29% (271/932)
Receiving objects:  30% (280/932)
Receiving objects:  31% (289/932)
Receiving objects:  32% (299/932)
Receiving objects:  33% (308/932)
Receiving objects:  34% (317/932)
Receiving objects:  35% (327/932)
Receiving objects:  36% (336/932)
Receiving objects:  37% (345/932)
Receiving objects:  38% (355/932)
Receiving objects:  39% (364/932)
Receiving objects:  40% (373/932)
Receiving objects:  41% (383/932)
Receiving objects:  42% (392/932)
Receiving objects:  43% (401/932)
Receiving objects:  44% (411/932)
Receiving objects:  45% (420/932)
Receiving objects:  46% (429/932)
Receiving objects:  47% (439/932)
Receiving objects:  48% (448/932)
Receiving objects:  49% (457/932)
Receiving objects:  50% (466/932)
Receiving objects:  51% (476/932)
Receiving objects:  52% (485/932)
Receiving objects:  53% (494/932)
Receiving objects:  54% (504/932)
Receiving objects:  55% (513/932)
Receiving objects:  56% (522/932)
Receiving objects:  57% (532/932)
Receiving objects:  58% (541/932)
Receiving objects:  59% (550/932)
Receiving objects:  60% (560/932)
Receiving objects:  61% (569/932)
Receiving objects:  62% (578/932)
Receiving objects:  63% (588/932)
Receiving objects:  64% (597/932)
Receiving objects:  65% (606/932)
Receiving objects:  66% (616/932)
Receiving objects:  67% (625/932)
Receiving objects:  68% (634/932)
Receiving objects:  69% (644/932)
Receiving objects:  70% (653/932)
Receiving objects:  71% (662/932)
Receiving objects:  72% (672/932)
Receiving objects:  73% (681/932)
Receiving objects:  74% (690/932)
Receiving objects:  75% (699/932)
Receiving objects:  76% (709/932)
Receiving objects:  77% (718/932)
Receiving objects:  78% (727/932)
Receiving objects:  79% (737/932)
Receiving objects:  80% (746/932)
Receiving objects:  81% (755/932)
Receiving objects:  82% (765/932)
Receiving objects:  83% (774/932)
Receiving objects:  84% (783/932)
Receiving objects:  85% (793/932)
remote: Total 932 (delta 541), reused 632 (delta 345), pack-reused 0 (from 0)
Receiving objects:  86% (802/932)
Receiving objects:  87% (811/932)
Receiving objects:  88% (821/932)
Receiving objects:  89% (830/932)
Receiving objects:  90% (839/932)
Receiving objects:  91% (849/932)
Receiving objects:  92% (858/932)
Receiving objects:  93% (867/932)
Receiving objects:  94% (877/932)
Receiving objects:  95% (886/932)
Receiving objects:  96% (895/932)
Receiving objects:  97% (905/932)
Receiving objects:  98% (914/932)
Receiving objects:  99% (923/932)
Receiving objects: 100% (932/932)
Receiving objects: 100% (932/932), 4.82 MiB | 23.05 MiB/s, done.
Resolving deltas:   0% (0/541)
Resolving deltas:   1% (6/541)
Resolving deltas:   2% (11/541)
Resolving deltas:   3% (17/541)
Resolving deltas:   4% (22/541)
Resolving deltas:   5% (28/541)
Resolving deltas:   6% (33/541)
Resolving deltas:   7% (38/541)
Resolving deltas:   8% (44/541)
Resolving deltas:   9% (49/541)
Resolving deltas:  10% (55/541)
Resolving deltas:  11% (60/541)
Resolving deltas:  12% (65/541)
Resolving deltas:  13% (71/541)
Resolving deltas:  14% (76/541)
Resolving deltas:  15% (82/541)
Resolving deltas:  16% (87/541)
Resolving deltas:  17% (92/541)
Resolving deltas:  18% (98/541)
Resolving deltas:  19% (103/541)
Resolving deltas:  20% (109/541)
Resolving deltas:  21% (114/541)
Resolving deltas:  22% (120/541)
Resolving deltas:  23% (125/541)
Resolving deltas:  24% (130/541)
Resolving deltas:  25% (136/541)
Resolving deltas:  26% (141/541)
Resolving deltas:  27% (147/541)
Resolving deltas:  28% (152/541)
Resolving deltas:  29% (157/541)
Resolving deltas:  30% (163/541)
Resolving deltas:  31% (168/541)
Resolving deltas:  32% (174/541)
Resolving deltas:  33% (179/541)
Resolving deltas:  34% (184/541)
Resolving deltas:  35% (190/541)
Resolving deltas:  36% (195/541)
Resolving deltas:  37% (201/541)
Resolving deltas:  38% (206/541)
Resolving deltas:  39% (211/541)
Resolving deltas:  40% (217/541)
Resolving deltas:  41% (222/541)
Resolving deltas:  42% (228/541)
Resolving deltas:  43% (233/541)
Resolving deltas:  44% (239/541)
Resolving deltas:  45% (244/541)
Resolving deltas:  46% (249/541)
Resolving deltas:  47% (255/541)
Resolving deltas:  48% (260/541)
Resolving deltas:  49% (266/541)
Resolving deltas:  50% (271/541)
Resolving deltas:  51% (276/541)
Resolving deltas:  52% (282/541)
Resolving deltas:  53% (287/541)
Resolving deltas:  54% (293/541)
Resolving deltas:  55% (298/541)
Resolving deltas:  56% (303/541)
Resolving deltas:  57% (309/541)
Resolving deltas:  58% (314/541)
Resolving deltas:  59% (320/541)
Resolving deltas:  60% (325/541)
Resolving deltas:  61% (331/541)
Resolving deltas:  62% (336/541)
Resolving deltas:  63% (341/541)
Resolving deltas:  64% (347/541)
Resolving deltas:  65% (352/541)
Resolving deltas:  66% (358/541)
Resolving deltas:  67% (363/541)
Resolving deltas:  68% (368/541)
Resolving deltas:  69% (374/541)
Resolving deltas:  70% (379/541)
Resolving deltas:  71% (385/541)
Resolving deltas:  72% (390/541)
Resolving deltas:  73% (395/541)
Resolving deltas:  74% (401/541)
Resolving deltas:  75% (406/541)
Resolving deltas:  76% (412/541)
Resolving deltas:  77% (417/541)
Resolving deltas:  78% (422/541)
Resolving deltas:  79% (428/541)
Resolving deltas:  80% (433/541)
Resolving deltas:  81% (439/541)
Resolving deltas:  82% (444/541)
Resolving deltas:  83% (450/541)
Resolving deltas:  84% (455/541)
Resolving deltas:  85% (460/541)
Resolving deltas:  86% (466/541)
Resolving deltas:  87% (471/541)
Resolving deltas:  88% (477/541)
Resolving deltas:  89% (482/541)
Resolving deltas:  90% (487/541)
Resolving deltas:  91% (493/541)
Resolving deltas:  92% (498/541)
Resolving deltas:  93% (504/541)
Resolving deltas:  94% (509/541)
Resolving deltas:  95% (514/541)
Resolving deltas:  96% (520/541)
Resolving deltas:  97% (525/541)
Resolving deltas:  98% (531/541)
Resolving deltas:  99% (536/541)
Resolving deltas: 100% (541/541)
Resolving deltas: 100% (541/541), done.
travis_time:end:026c1132:start=1739772690565554811,finish=1739772691682108436,duration=1116553625,event=checkout
$ cd bit-team/backintime
travis_time:start:1211cf10
$ git fetch origin +refs/pull/2039/merge: --depth=50
remote: Enumerating objects: 47, done.
remote: Counting objects:   2% (1/42)
remote: Counting objects:   4% (2/42)
remote: Counting objects:   7% (3/42)
remote: Counting objects:   9% (4/42)
remote: Counting objects:  11% (5/42)
remote: Counting objects:  14% (6/42)
remote: Counting objects:  16% (7/42)
remote: Counting objects:  19% (8/42)
remote: Counting objects:  21% (9/42)
remote: Counting objects:  23% (10/42)
remote: Counting objects:  26% (11/42)
remote: Counting objects:  28% (12/42)
remote: Counting objects:  30% (13/42)
remote: Counting objects:  33% (14/42)
remote: Counting objects:  35% (15/42)
remote: Counting objects:  38% (16/42)
remote: Counting objects:  40% (17/42)
remote: Counting objects:  42% (18/42)
remote: Counting objects:  45% (19/42)
remote: Counting objects:  47% (20/42)
remote: Counting objects:  50% (21/42)
remote: Counting objects:  52% (22/42)
remote: Counting objects:  54% (23/42)
remote: Counting objects:  57% (24/42)
remote: Counting objects:  59% (25/42)
remote: Counting objects:  61% (26/42)
remote: Counting objects:  64% (27/42)
remote: Counting objects:  66% (28/42)
remote: Counting objects:  69% (29/42)
remote: Counting objects:  71% (30/42)
remote: Counting objects:  73% (31/42)
remote: Counting objects:  76% (32/42)
remote: Counting objects:  78% (33/42)
remote: Counting objects:  80% (34/42)
remote: Counting objects:  83% (35/42)
remote: Counting objects:  85% (36/42)
remote: Counting objects:  88% (37/42)
remote: Counting objects:  90% (38/42)
remote: Counting objects:  92% (39/42)
remote: Counting objects:  95% (40/42)
remote: Counting objects:  97% (41/42)
remote: Counting objects: 100% (42/42)
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects:   7% (1/14)
remote: Compressing objects:  14% (2/14)
remote: Compressing objects:  21% (3/14)
remote: Compressing objects:  28% (4/14)
remote: Compressing objects:  35% (5/14)
remote: Compressing objects:  42% (6/14)
remote: Compressing objects:  50% (7/14)
remote: Compressing objects:  57% (8/14)
remote: Compressing objects:  64% (9/14)
remote: Compressing objects:  71% (10/14)
remote: Compressing objects:  78% (11/14)
remote: Compressing objects:  85% (12/14)
remote: Compressing objects:  92% (13/14)
remote: Compressing objects: 100% (14/14)
remote: Compressing objects: 100% (14/14), done.
remote: Total 33 (delta 25), reused 26 (delta 19), pack-reused 0 (from 0)
Unpacking objects:   3% (1/33)
Unpacking objects:   6% (2/33)
Unpacking objects:   9% (3/33)
Unpacking objects:  12% (4/33)
Unpacking objects:  15% (5/33)
Unpacking objects:  18% (6/33)
Unpacking objects:  21% (7/33)
Unpacking objects:  24% (8/33)
Unpacking objects:  27% (9/33)
Unpacking objects:  30% (10/33)
Unpacking objects:  33% (11/33)
Unpacking objects:  36% (12/33)
Unpacking objects:  39% (13/33)
Unpacking objects:  42% (14/33)
Unpacking objects:  45% (15/33)
Unpacking objects:  48% (16/33)
Unpacking objects:  51% (17/33)
Unpacking objects:  54% (18/33)
Unpacking objects:  57% (19/33)
Unpacking objects:  60% (20/33)
Unpacking objects:  63% (21/33)
Unpacking objects:  66% (22/33)
Unpacking objects:  69% (23/33)
Unpacking objects:  72% (24/33)
Unpacking objects:  75% (25/33)
Unpacking objects:  78% (26/33)
Unpacking objects:  81% (27/33)
Unpacking objects:  84% (28/33)
Unpacking objects:  87% (29/33)
Unpacking objects:  90% (30/33)
Unpacking objects:  93% (31/33)
Unpacking objects:  96% (32/33)
Unpacking objects: 100% (33/33)
Unpacking objects: 100% (33/33), 4.91 KiB | 359.00 KiB/s, done.
From https://github.com/bit-team/backintime
 * branch            refs/pull/2039/merge -> FETCH_HEAD
travis_time:end:1211cf10:start=1739772691686410183,finish=1739772691893277151,duration=206866968,event=checkout
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

travis_time:end:1211cf10:start=1739772691686410183,finish=1739772691968363702,duration=281953519,event=checkout
travis_time:start:05b802ba

Setting environment variables from .travis.yml
$ export PYTHONUNBUFFERED=1

travis_time:end:05b802ba:start=1739772691972362624,finish=1739772691975840012,duration=3477388,event=env
travis_time:start:0c46664a
$ source ~/virtualenv/python3.12/bin/activate
travis_time:end:0c46664a:start=1739772691979934380,finish=1739772691988369565,duration=8435185,event=
$ python --version
Python 3.12.4
$ pip --version
pip 24.1.2 from /home/travis/virtualenv/python3.12.4/lib/python3.12/site-packages/pip (python 3.12)
travis_fold:start:before_install.1
travis_time:start:0cbb2d24
$ sudo rm -f /etc/apt/sources.list.d/mongodb*.list
travis_time:end:0cbb2d24:start=1739772692683578950,finish=1739772692696518980,duration=12940030,event=before_install
travis_fold:end:before_install.1
travis_fold:start:before_install.2
travis_time:start:12db0bee
$ sudo apt-key del 90CFB1F5
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
travis_time:end:12db0bee:start=1739772692700673314,finish=1739772692831842430,duration=131169116,event=before_install
travis_fold:end:before_install.2
travis_fold:start:before_install.3
travis_time:start:1bf13538
$ sudo apt-get -qq update
W: http://package.perforce.com/apt/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://apt.postgresql.org/pub/repos/apt/dists/jammy-pgdg/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
travis_time:end:1bf13538:start=1739772692835755594,finish=1739772695602045487,duration=2766289893,event=before_install
travis_fold:end:before_install.3
travis_fold:start:before_install.4
travis_time:start:170888c9
$ sudo apt-get install -y sshfs screen util-linux libdbus-1-dev

Reading package lists... 0%

Reading package lists... 100%

Reading package lists... Done


Building dependency tree... 0%

Building dependency tree... 0%

Building dependency tree... 50%

Building dependency tree... 50%

Building dependency tree... Done


Reading state information... 0% 

Reading state information... 0%

Reading state information... Done

screen is already the newest version (4.9.0-1).
libdbus-1-dev is already the newest version (1.12.20-2ubuntu4.1).
util-linux is already the newest version (2.37.2-4ubuntu3.4).
The following NEW packages will be installed:
  sshfs
0 upgraded, 1 newly installed, 0 to remove and 134 not upgraded.
Need to get 45.1 kB of archives.
After this operation, 126 kB of additional disk space will be used.

0% [Working]
            
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 sshfs amd64 3.7.1+repack-2 [45.1 kB]

24% [1 sshfs 13.8 kB/45.1 kB 31%]
                                 
100% [Working]
              
Fetched 45.1 kB in 0s (118 kB/s)
Selecting previously unselected package sshfs.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 132481 files and directories currently installed.)
Preparing to unpack .../sshfs_3.7.1+repack-2_amd64.deb ...
Unpacking sshfs (3.7.1+repack-2) ...
Setting up sshfs (3.7.1+repack-2) ...
Processing triggers for man-db (2.10.2-1) ...
NEEDRESTART-VER: 3.5
NEEDRESTART-KCUR: 6.8.0-1018-gcp
NEEDRESTART-KEXP: 6.8.0-1018-gcp
NEEDRESTART-KSTA: 1
travis_time:end:170888c9:start=1739772695606810456,finish=1739772702381046097,duration=6774235641,event=before_install
travis_fold:end:before_install.4
travis_fold:start:install.1
travis_time:start:16a5b534
$ pip install -U pip
Requirement already satisfied: pip in /home/travis/virtualenv/python3.12.4/lib/python3.12/site-packages (24.1.2)
Collecting pip
  Downloading pip-25.0.1-py3-none-any.whl.metadata (3.7 kB)
Downloading pip-25.0.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 24.1.2
    Uninstalling pip-24.1.2:
      Successfully uninstalled pip-24.1.2
Successfully installed pip-25.0.1
travis_time:end:16a5b534:start=1739772702385410190,finish=1739772704837726722,duration=2452316532,event=install
travis_fold:end:install.1
travis_fold:start:install.2
travis_time:start:019ff56e
$ pip install pylint ruff flake8 pyfakefs keyring
Collecting pylint
  Downloading pylint-3.3.4-py3-none-any.whl.metadata (12 kB)
Collecting ruff
  Downloading ruff-0.9.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (25 kB)
Collecting flake8
  Downloading flake8-7.1.2-py2.py3-none-any.whl.metadata (3.8 kB)
Collecting pyfakefs
  Downloading pyfakefs-5.7.4-py3-none-any.whl.metadata (7.8 kB)
Collecting keyring
  Downloading keyring-25.6.0-py3-none-any.whl.metadata (20 kB)
Collecting dill>=0.3.6 (from pylint)
  Downloading dill-0.3.9-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: platformdirs>=2.2.0 in /home/travis/virtualenv/python3.12.4/lib/python3.12/site-packages (from pylint) (4.2.2)
Collecting astroid<=3.4.0-dev0,>=3.3.8 (from pylint)
  Downloading astroid-3.3.8-py3-none-any.whl.metadata (4.5 kB)
Collecting isort!=5.13.0,<7,>=4.2.5 (from pylint)
  Downloading isort-6.0.0-py3-none-any.whl.metadata (11 kB)
Collecting mccabe<0.8,>=0.6 (from pylint)
  Downloading mccabe-0.7.0-py2.py3-none-any.whl.metadata (5.0 kB)
Collecting tomlkit>=0.10.1 (from pylint)
  Downloading tomlkit-0.13.2-py3-none-any.whl.metadata (2.7 kB)
Collecting pycodestyle<2.13.0,>=2.12.0 (from flake8)
  Downloading pycodestyle-2.12.1-py2.py3-none-any.whl.metadata (4.5 kB)
Collecting pyflakes<3.3.0,>=3.2.0 (from flake8)
  Downloading pyflakes-3.2.0-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting SecretStorage>=3.2 (from keyring)
  Downloading SecretStorage-3.3.3-py3-none-any.whl.metadata (4.0 kB)
Collecting jeepney>=0.4.2 (from keyring)
  Downloading jeepney-0.8.0-py3-none-any.whl.metadata (1.3 kB)
Collecting jaraco.classes (from keyring)
  Downloading jaraco.classes-3.4.0-py3-none-any.whl.metadata (2.6 kB)
Collecting jaraco.functools (from keyring)
  Downloading jaraco.functools-4.1.0-py3-none-any.whl.metadata (2.9 kB)
Collecting jaraco.context (from keyring)
  Downloading jaraco.context-6.0.1-py3-none-any.whl.metadata (4.1 kB)
Collecting cryptography>=2.0 (from SecretStorage>=3.2->keyring)
  Downloading cryptography-44.0.1-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (5.7 kB)
Collecting more-itertools (from jaraco.classes->keyring)
  Downloading more_itertools-10.6.0-py3-none-any.whl.metadata (37 kB)
Collecting cffi>=1.12 (from cryptography>=2.0->SecretStorage>=3.2->keyring)
  Downloading cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting pycparser (from cffi>=1.12->cryptography>=2.0->SecretStorage>=3.2->keyring)
  Downloading pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Downloading pylint-3.3.4-py3-none-any.whl (522 kB)
Downloading ruff-0.9.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.5 MB)
Downloading flake8-7.1.2-py2.py3-none-any.whl (57 kB)
Downloading pyfakefs-5.7.4-py3-none-any.whl (228 kB)
Downloading keyring-25.6.0-py3-none-any.whl (39 kB)
Downloading astroid-3.3.8-py3-none-any.whl (275 kB)
Downloading dill-0.3.9-py3-none-any.whl (119 kB)
Downloading isort-6.0.0-py3-none-any.whl (94 kB)
Downloading jeepney-0.8.0-py3-none-any.whl (48 kB)
Downloading mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB)
Downloading pycodestyle-2.12.1-py2.py3-none-any.whl (31 kB)
Downloading pyflakes-3.2.0-py2.py3-none-any.whl (62 kB)
Downloading SecretStorage-3.3.3-py3-none-any.whl (15 kB)
Downloading tomlkit-0.13.2-py3-none-any.whl (37 kB)
Downloading jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)
Downloading jaraco.context-6.0.1-py3-none-any.whl (6.8 kB)
Downloading jaraco.functools-4.1.0-py3-none-any.whl (10 kB)
Downloading cryptography-44.0.1-cp39-abi3-manylinux_2_34_x86_64.whl (4.2 MB)
Downloading more_itertools-10.6.0-py3-none-any.whl (63 kB)
Downloading cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (479 kB)
Downloading pycparser-2.22-py3-none-any.whl (117 kB)
Installing collected packages: tomlkit, ruff, pyflakes, pyfakefs, pycparser, pycodestyle, more-itertools, mccabe, jeepney, jaraco.context, isort, dill, astroid, pylint, jaraco.functools, jaraco.classes, flake8, cffi, cryptography, SecretStorage, keyring
Successfully installed SecretStorage-3.3.3 astroid-3.3.8 cffi-1.17.1 cryptography-44.0.1 dill-0.3.9 flake8-7.1.2 isort-6.0.0 jaraco.classes-3.4.0 jaraco.context-6.0.1 jaraco.functools-4.1.0 jeepney-0.8.0 keyring-25.6.0 mccabe-0.7.0 more-itertools-10.6.0 pycodestyle-2.12.1 pycparser-2.22 pyfakefs-5.7.4 pyflakes-3.2.0 pylint-3.3.4 ruff-0.9.6 tomlkit-0.13.2
travis_time:end:019ff56e:start=1739772704841956075,finish=1739772710629521812,duration=5787565737,event=install
travis_fold:end:install.2
travis_fold:start:install.3
travis_time:start:12f114d0
$ pip install pyqt6 dbus-python
Collecting pyqt6
  Downloading PyQt6-6.8.1-cp39-abi3-manylinux_2_28_x86_64.whl.metadata (2.1 kB)
Collecting dbus-python
  Downloading dbus-python-1.3.2.tar.gz (605 kB)
  Installing build dependencies ... [?25l- \ | / - \ | done
[?25h  Getting requirements to build wheel ... [?25ldone
[?25h  Preparing metadata (pyproject.toml) ... [?25l- \ | / - \ | / - \ | / - \ | / - \ | / - \ | / - \ | / done
[?25hCollecting PyQt6-sip<14,>=13.8 (from pyqt6)
  Downloading PyQt6_sip-13.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (472 bytes)
Collecting PyQt6-Qt6<6.9.0,>=6.8.0 (from pyqt6)
  Downloading PyQt6_Qt6-6.8.2-py3-none-manylinux_2_28_x86_64.whl.metadata (534 bytes)
Downloading PyQt6-6.8.1-cp39-abi3-manylinux_2_28_x86_64.whl (8.2 MB)
Downloading PyQt6_Qt6-6.8.2-py3-none-manylinux_2_28_x86_64.whl (81.3 MB)
Downloading PyQt6_sip-13.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl (303 kB)
Building wheels for collected packages: dbus-python
  Building wheel for dbus-python (pyproject.toml) ... [?25ldone
[?25h  Created wheel for dbus-python: filename=dbus_python-1.3.2-cp312-cp312-linux_x86_64.whl size=122709 sha256=3b4567b3e21c15ff2f7c5b1a10d435d2b3bc377443db6425ad83e766fef27775
  Stored in directory: /home/travis/.cache/pip/wheels/af/10/cf/199cea3104083e08fd54f5f1d61656138c62b9677b0f78f1b6
Successfully built dbus-python
Installing collected packages: PyQt6-Qt6, PyQt6-sip, dbus-python, pyqt6
Successfully installed PyQt6-Qt6-6.8.2 PyQt6-sip-13.10.0 dbus-python-1.3.2 pyqt6-6.8.1
travis_time:end:12f114d0:start=1739772710633777081,finish=1739772726604465323,duration=15970688242,event=install
travis_fold:end:install.3
travis_fold:start:install.4
travis_time:start:10000f81
$ ssh-keygen -b 2048 -t rsa -f /home/travis/.ssh/id_rsa -N ""
Generating public/private rsa key pair.
Your identification has been saved in /home/travis/.ssh/id_rsa
Your public key has been saved in /home/travis/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xn3dXOC9Fkqgb35kbWeWbcCi6NTPwq4SMm9Y//dvsz8 travis@travis-job-44a2ea8c-a218-4cec-a367-bad660a9da6a
The key's randomart image is:
+---[RSA 2048]----+
|           .  .  |
|          . .o o |
|         .  ..+.o|
|       . +...oo+*|
|        S +o.+.*O|
|    o o+ .o+o o+.|
|     * o. o.o.   |
|    . + .. .o  E.|
|     . ..oo. ..+B|
+----[SHA256]-----+
travis_time:end:10000f81:start=1739772726608804849,finish=1739772726713152479,duration=104347630,event=install
travis_fold:end:install.4
travis_fold:start:install.5
travis_time:start:0fd41852
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
travis_time:end:0fd41852:start=1739772726717628347,finish=1739772726721736580,duration=4108233,event=install
travis_fold:end:install.5
travis_fold:start:install.6
travis_time:start:029fd6f0
$ eval `ssh-agent -s`
Agent pid 5140
travis_time:end:029fd6f0:start=1739772726726207369,finish=1739772726738001520,duration=11794151,event=install
travis_fold:end:install.6
travis_time:start:00439d01
$ python -m compileall common common/test common/plugins qt qt/test qt/plugins
Listing 'common'...
Compiling 'common/applicationinstance.py'...
Compiling 'common/askpass.py'...
Compiling 'common/backintime.py'...
Listing 'common/bash-completion'...
Compiling 'common/bcolors.py'...
Compiling 'common/bitbase.py'...
Compiling 'common/cli.py'...
Compiling 'common/config.py'...
Compiling 'common/configfile.py'...
Compiling 'common/daemon.py'...
Compiling 'common/diagnostics.py'...
Listing 'common/doc-dev'...
Listing 'common/doc-dev/_static'...
Listing 'common/doc-dev/_templates'...
Compiling 'common/doc-dev/conf.py'...
Listing 'common/doc-dev/plugins'...
Compiling 'common/encfstools.py'...
Compiling 'common/encode.py'...
Compiling 'common/exceptions.py'...
Compiling 'common/flock.py'...
Compiling 'common/guiapplicationinstance.py'...
Compiling 'common/languages.py'...
Compiling 'common/logger.py'...
Listing 'common/man'...
Listing 'common/man/C'...
Compiling 'common/mount.py'...
Compiling 'common/password.py'...
Compiling 'common/password_ipc.py'...
Compiling 'common/pluginmanager.py'...
Listing 'common/plugins'...
Compiling 'common/plugins/usercallbackplugin.py'...
Listing 'common/po'...
Compiling 'common/progress.py'...
Compiling 'common/qt_probing.py'...
Compiling 'common/schedule.py'...
Compiling 'common/singleton.py'...
Compiling 'common/snapshotlog.py'...
Compiling 'common/snapshots.py'...
Compiling 'common/ssh_max_arg.py'...
Compiling 'common/sshtools.py'...
Listing 'common/test'...
Compiling 'common/test/__init__.py'...
Compiling 'common/test/constants.py'...
Compiling 'common/test/generic.py'...
Compiling 'common/test/test_applicationinstance.py'...
Compiling 'common/test/test_argparser.py'...
Compiling 'common/test/test_backintime.py'...
Compiling 'common/test/test_backup.py'...
Compiling 'common/test/test_config.py'...
Compiling 'common/test/test_config_crontab.py'...
Compiling 'common/test/test_configfile.py'...
Compiling 'common/test/test_diagnostics.py'...
Compiling 'common/test/test_encfstools.py'...
Compiling 'common/test/test_languages.py'...
Compiling 'common/test/test_lint.py'...
Compiling 'common/test/test_mount.py'...
Compiling 'common/test/test_plugin_usercallback.py'...
Compiling 'common/test/test_restore.py'...
Compiling 'common/test/test_schedule.py'...
Compiling 'common/test/test_sid.py'...
Compiling 'common/test/test_singleton.py'...
Compiling 'common/test/test_snapshotlog.py'...
Compiling 'common/test/test_snapshots.py'...
Compiling 'common/test/test_snapshots_autoremove.py'...
Compiling 'common/test/test_sshtools.py'...
Compiling 'common/test/test_takeSnapshot.py'...
Compiling 'common/test/test_tools.py'...
Compiling 'common/test/test_uniquenessset.py'...
Compiling 'common/tools.py'...
Compiling 'common/uniquenessset.py'...
Compiling 'common/version.py'...
Listing 'common/test'...
Listing 'common/plugins'...
Listing 'qt'...
Compiling 'qt/aboutdlg.py'...
Compiling 'qt/app.py'...
Compiling 'qt/editusercallback.py'...
Compiling 'qt/encfsmsgbox.py'...
Compiling 'qt/icon.py'...
Listing 'qt/icons'...
Listing 'qt/icons/16x16'...
Listing 'qt/icons/16x16/actions'...
Listing 'qt/icons/22x22'...
Listing 'qt/icons/22x22/actions'...
Listing 'qt/icons/24x24'...
Listing 'qt/icons/24x24/actions'...
Listing 'qt/icons/32x32'...
Listing 'qt/icons/32x32/actions'...
Listing 'qt/icons/48x48'...
Listing 'qt/icons/48x48/actions'...
Listing 'qt/icons/scalable'...
Listing 'qt/icons/scalable/actions'...
Compiling 'qt/languagedialog.py'...
Compiling 'qt/logviewdialog.py'...
Listing 'qt/man'...
Listing 'qt/man/C'...
Listing 'qt/manageprofiles'...
Compiling 'qt/manageprofiles/__init__.py'...
Compiling 'qt/manageprofiles/combobox.py'...
Compiling 'qt/manageprofiles/schedulewidget.py'...
Compiling 'qt/manageprofiles/spinboxunit.py'...
Compiling 'qt/manageprofiles/sshproxywidget.py'...
Compiling 'qt/manageprofiles/statebindcheckbox.py'...
Compiling 'qt/manageprofiles/tab_expert_options.py'...
Compiling 'qt/manageprofiles/tab_general.py'...
Compiling 'qt/manageprofiles/tab_options.py'...
Compiling 'qt/manageprofiles/tab_remove_retention.py'...
Compiling 'qt/messagebox.py'...
Listing 'qt/plugins'...
Compiling 'qt/plugins/notifyplugin.py'...
Compiling 'qt/plugins/systrayiconplugin.py'...
Compiling 'qt/qtsystrayicon.py'...
Compiling 'qt/qttools.py'...
Compiling 'qt/qttools_path.py'...
Compiling 'qt/restoreconfigdialog.py'...
Compiling 'qt/restoredialog.py'...
Compiling 'qt/serviceHelper.py'...
Compiling 'qt/snapshotsdialog.py'...
Compiling 'qt/statedata.py'...
Listing 'qt/test'...
Compiling 'qt/test/__init__.py'...
Compiling 'qt/test/test_lint.py'...
Compiling 'qt/test/test_statedata.py'...
Compiling 'qt/usermessagedialog.py'...
Listing 'qt/test'...
Listing 'qt/plugins'...
travis_time:end:00439d01:start=1739772726741801037,finish=1739772727085726192,duration=343925155,event=script
The command "python -m compileall common common/test common/plugins qt qt/test qt/plugins" exited with 0.
travis_time:start:1e26f361
$ cd common
travis_time:end:1e26f361:start=1739772727089768919,finish=1739772727092401553,duration=2632634,event=script
The command "cd common" exited with 0.
travis_time:start:041a2aea
$ ./configure
Replacement of python path with "/usr/bin/python3" successful.
All OK. Now run:
    make
    sudo make install
travis_time:end:041a2aea:start=1739772727096017344,finish=1739772727248186602,duration=152169258,event=script
The command "./configure" exited with 0.
travis_time:start:042fcc22
$ make unittest-v
/home/travis/virtualenv/python3.12.4/bin/pytest -v
============================= test session starts ==============================
platform linux -- Python 3.12.4, pytest-8.3.1, pluggy-1.5.0 -- /home/travis/virtualenv/python3.12.4/bin/python
cachedir: .pytest_cache
rootdir: /home/travis/build/bit-team/backintime/common
plugins: pyfakefs-5.7.4
collecting ... 
collected 427 items                                                            

test/test_applicationinstance.py::General::test_autoExit_other_running_process PASSED [  0%]
test/test_applicationinstance.py::General::test_autoExit_unique_process PASSED [  0%]
test/test_applicationinstance.py::General::test_auto_flock PASSED        [  0%]
test/test_applicationinstance.py::General::test_create_and_remove_pid_file PASSED [  0%]
test/test_applicationinstance.py::General::test_existing_process_with_correct_proc_cmdline PASSED [  1%]
test/test_applicationinstance.py::General::test_existing_process_with_correct_procname PASSED [  1%]
test/test_applicationinstance.py::General::test_existing_process_with_wrong_pid PASSED [  1%]
test/test_applicationinstance.py::General::test_existing_process_with_wrong_procname PASSED [  1%]
test/test_applicationinstance.py::General::test_flock_exclusive PASSED   [  2%]
test/test_applicationinstance.py::General::test_flock_exclusive_fail PASSED [  2%]
test/test_applicationinstance.py::General::test_killing_existing_process PASSED [  2%]
test/test_applicationinstance.py::General::test_leftover_empty_lockfile PASSED [  2%]
test/test_applicationinstance.py::General::test_no_pid_file PASSED       [  3%]
test/test_applicationinstance.py::General::test_non_existing_process PASSED [  3%]
test/test_applicationinstance.py::General::test_pid_file_content PASSED  [  3%]
test/test_applicationinstance.py::General::test_readPidFile PASSED       [  3%]
test/test_applicationinstance.py::General::test_readPidFile_fail PASSED  [  3%]
test/test_applicationinstance.py::General::test_thread_write_without_flock PASSED [  4%]
test/test_applicationinstance.py::General::test_write_pid_fail PASSED    [  4%]
test/test_argparser.py::General::test_config PASSED                      [  4%]
test/test_argparser.py::General::test_config_no_path PASSED              [  4%]
test/test_argparser.py::General::test_debug PASSED                       [  5%]
test/test_argparser.py::General::test_invalid_arg PASSED                 [  5%]
test/test_argparser.py::General::test_quiet PASSED                       [  5%]
test/test_argparser.py::Backup::test_backwards_compatiblity_alias PASSED [  5%]
test/test_argparser.py::Backup::test_multi_args PASSED                   [  6%]
test/test_argparser.py::Backup::test_profile PASSED                      [  6%]
test/test_argparser.py::Backup::test_profile_and_profile_id PASSED       [  6%]
test/test_argparser.py::Backup::test_profile_id PASSED                   [  6%]
test/test_argparser.py::Backup::test_quiet PASSED                        [  7%]
test/test_argparser.py::Backup::test_simple PASSED                       [  7%]
test/test_argparser.py::Restore::test_empty_where PASSED                 [  7%]
test/test_argparser.py::Restore::test_local_backup_and_no_local_backup PASSED [  7%]
test/test_argparser.py::Restore::test_multi_args PASSED                  [  7%]
test/test_argparser.py::Restore::test_simple PASSED                      [  8%]
test/test_argparser.py::Restore::test_snapshot_id_index PASSED           [  8%]
test/test_argparser.py::Restore::test_what_space_in_path PASSED          [  8%]
test/test_argparser.py::Restore::test_what_where_snapshot_id PASSED      [  8%]
test/test_argparser.py::Restore::test_what_where_snapshot_id_multi_args PASSED [  9%]
test/test_argparser.py::Restore::test_where_space_in_path PASSED         [  9%]
test/test_backintime.py::BackInTime::test_diagnostics_arg PASSED         [  9%]
test/test_backintime.py::BackInTime::test_local_snapshot_is_successful FAILED [  9%]
test/test_backintime.py::BackInTime::test_quiet_mode PASSED              [ 10%]
test/test_backup.py::TestBackup::test_already_running PASSED             [ 10%]
test/test_backup.py::TestBackup::test_backup PASSED                      [ 10%]
test/test_backup.py::TestBackup::test_backup_async PASSED                [ 10%]
test/test_backup.py::TestBackup::test_backup_async_profile_2 PASSED      [ 11%]
test/test_backup.py::TestBackup::test_backup_async_with_checksum PASSED  [ 11%]
test/test_backup.py::TestBackup::test_cant_backup PASSED                 [ 11%]
test/test_backup.py::TestBackup::test_mount_exception PASSED             [ 11%]
test/test_backup.py::TestBackup::test_no_backup_on_battery PASSED        [ 11%]
test/test_backup.py::TestBackup::test_no_changes PASSED                  [ 12%]
test/test_backup.py::TestBackup::test_not_configured PASSED              [ 12%]
test/test_backup.py::TestBackup::test_plugin_prevented_backup PASSED     [ 12%]
test/test_backup.py::TestBackup::test_scheduled PASSED                   [ 12%]
test/test_backup.py::TestBackup::test_takeSnapshot_exception_cleanup PASSED [ 13%]
test/test_backup.py::TestBackup::test_umount_exception PASSED            [ 13%]
test/test_backup.py::TestBackup::test_with_errors PASSED                 [ 13%]
test/test_config.py::RemoveOldSnapshotsDate::test_day PASSED             [ 13%]
test/test_config.py::RemoveOldSnapshotsDate::test_invalid_unit PASSED    [ 14%]
test/test_config.py::RemoveOldSnapshotsDate::test_week_always_monday PASSED [ 14%]
test/test_config.py::RemoveOldSnapshotsDate::test_week_ignore_current PASSED [ 14%]
test/test_config.py::RemoveOldSnapshotsDate::test_year_ignore_current_month PASSED [ 14%]
test/test_config.py::SshCommand::test_cipher_aes256_cbc PASSED           [ 14%]
test/test_config.py::SshCommand::test_cipher_disabled PASSED             [ 15%]
test/test_config.py::SshCommand::test_custom_args PASSED                 [ 15%]
test/test_config.py::SshCommand::test_disable_args PASSED                [ 15%]
test/test_config.py::SshCommand::test_full_command PASSED                [ 15%]
test/test_config.py::SshCommand::test_nice_and_ionice PASSED             [ 16%]
test/test_config.py::SshCommand::test_nice_and_ionice_without_command PASSED [ 16%]
test/test_config.py::SshCommand::test_prefix PASSED                      [ 16%]
test/test_config.py::SshCommand::test_prefix_false PASSED                [ 16%]
test/test_config.py::SshCommand::test_quote PASSED                       [ 17%]
test/test_config.py::SshCommand::test_quote_without_command PASSED       [ 17%]
test/test_config.py::SshCommand::test_without_command PASSED             [ 17%]
test/test_config_crontab.py::Cron::test_cron_lines PASSED                [ 17%]
test/test_config_crontab.py::CrontabDebug::test_crontab_contains_debug PASSED [ 18%]
test/test_config_crontab.py::CrontabDebug::test_crontab_without_debug PASSED [ 18%]
test/test_configfile.py::TestConfigFile::test_boolValue PASSED           [ 18%]
test/test_configfile.py::TestConfigFile::test_boolValue_default PASSED   [ 18%]
test/test_configfile.py::TestConfigFile::test_hasKey PASSED              [ 18%]
test/test_configfile.py::TestConfigFile::test_intValue PASSED            [ 19%]
test/test_configfile.py::TestConfigFile::test_intValue_default PASSED    [ 19%]
test/test_configfile.py::TestConfigFile::test_listValue_bool PASSED      [ 19%]
test/test_configfile.py::TestConfigFile::test_listValue_default PASSED   [ 19%]
test/test_configfile.py::TestConfigFile::test_listValue_empty_list PASSED [ 20%]
test/test_configfile.py::TestConfigFile::test_listValue_int PASSED       [ 20%]
test/test_configfile.py::TestConfigFile::test_listValue_invalid_type PASSED [ 20%]
test/test_configfile.py::TestConfigFile::test_listValue_missing_values PASSED [ 20%]
test/test_configfile.py::TestConfigFile::test_listValue_str PASSED       [ 21%]
test/test_configfile.py::TestConfigFile::test_listValue_tuple PASSED     [ 21%]
test/test_configfile.py::TestConfigFile::test_listValue_tuple_missing_values PASSED [ 21%]
test/test_configfile.py::TestConfigFile::test_listValue_wrong_size PASSED [ 21%]
test/test_configfile.py::TestConfigFile::test_listValue_zero_count PASSED [ 22%]
test/test_configfile.py::TestConfigFile::test_load PASSED                [ 22%]
test/test_configfile.py::TestConfigFile::test_remapKey PASSED            [ 22%]
test/test_configfile.py::TestConfigFile::test_remapKeyRegex PASSED       [ 22%]
test/test_configfile.py::TestConfigFile::test_remove_key PASSED          [ 22%]
test/test_configfile.py::TestConfigFile::test_remove_keys_start_with PASSED [ 23%]
test/test_configfile.py::TestConfigFile::test_remove_keys_start_with_not_matching_prefix PASSED [ 23%]
test/test_configfile.py::TestConfigFile::test_save PASSED                [ 23%]
test/test_configfile.py::TestConfigFile::test_setBoolValue PASSED        [ 23%]
test/test_configfile.py::TestConfigFile::test_setIntValue PASSED         [ 24%]
test/test_configfile.py::TestConfigFile::test_setListValue_bool PASSED   [ 24%]
test/test_configfile.py::TestConfigFile::test_setListValue_int PASSED    [ 24%]
test/test_configfile.py::TestConfigFile::test_setListValue_invalid_type_for_type_key PASSED [ 24%]
test/test_configfile.py::TestConfigFile::test_setListValue_invalid_type_for_value PASSED [ 25%]
test/test_configfile.py::TestConfigFile::test_setListValue_remove_leftovers PASSED [ 25%]
test/test_configfile.py::TestConfigFile::test_setListValue_remove_leftovers_tuple PASSED [ 25%]
test/test_configfile.py::TestConfigFile::test_setListValue_str PASSED    [ 25%]
test/test_configfile.py::TestConfigFile::test_setListValue_tuple PASSED  [ 25%]
test/test_configfile.py::TestConfigFile::test_setListValue_tuple_missing_values PASSED [ 26%]
test/test_configfile.py::TestConfigFile::test_setStrValue PASSED         [ 26%]
test/test_configfile.py::TestConfigFile::test_strValue PASSED            [ 26%]
test/test_configfile.py::TestConfigFile::test_strValue_default PASSED    [ 26%]
test/test_configfile.py::TestConfigFileWithProfiles::test_addProfile PASSED [ 27%]
test/test_configfile.py::TestConfigFileWithProfiles::test_current_profile PASSED [ 27%]
test/test_configfile.py::TestConfigFileWithProfiles::test_current_profile_by_name PASSED [ 27%]
test/test_configfile.py::TestConfigFileWithProfiles::test_get_profile_key PASSED [ 27%]
test/test_configfile.py::TestConfigFileWithProfiles::test_hasProfileKey PASSED [ 28%]
test/test_configfile.py::TestConfigFileWithProfiles::test_load PASSED    [ 28%]
test/test_configfile.py::TestConfigFileWithProfiles::test_profileExists PASSED [ 28%]
test/test_configfile.py::TestConfigFileWithProfiles::test_profileExistsByName PASSED [ 28%]
test/test_configfile.py::TestConfigFileWithProfiles::test_profileName PASSED [ 29%]
test/test_configfile.py::TestConfigFileWithProfiles::test_profiles PASSED [ 29%]
test/test_configfile.py::TestConfigFileWithProfiles::test_profilesSortedByName PASSED [ 29%]
test/test_configfile.py::TestConfigFileWithProfiles::test_remapProfileKey PASSED [ 29%]
test/test_configfile.py::TestConfigFileWithProfiles::test_removeProfile PASSED [ 29%]
test/test_configfile.py::TestConfigFileWithProfiles::test_removeProfileKey PASSED [ 30%]
test/test_configfile.py::TestConfigFileWithProfiles::test_removeProfileKeysStartsWith PASSED [ 30%]
test/test_configfile.py::TestConfigFileWithProfiles::test_setProfileName PASSED [ 30%]
test/test_configfile.py::TestConfigFileWithProfiles::test_set_profile_value PASSED [ 30%]
test/test_diagnostics.py::Diagnostics::test_content_minimal PASSED       [ 31%]
test/test_diagnostics.py::Diagnostics::test_no_extern_version PASSED     [ 31%]
test/test_diagnostics.py::Diagnostics::test_no_ressource_warning PASSED  [ 31%]
test/test_diagnostics.py::Diagnostics::test_replace_user_path PASSED     [ 31%]
test/test_diagnostics.py::Diagnostics::test_some_content PASSED          [ 32%]
test/test_encfstools.py::TestEncFS_mount::test_dummy PASSED              [ 32%]
test/test_encfstools.py::TestEncFS_mount::test_initialise_encfs PASSED   [ 32%]
test/test_languages.py::General::test_completeness_key_types PASSED      [ 32%]
test/test_languages.py::General::test_completeness_value_types PASSED    [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test005_ensure_linter_versions PASSED [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test010_ruff_default_ruleset FAILED [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test020_flake8_default_ruleset FAILED [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test030_pylint_default_ruleset FAILED [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test050_pylint_exclusive_ruleset FAILED [ 34%]
test/test_lint.py::MirrorMirrorOnTheWall::test060_reuse SKIPPED (Usi...) [ 34%]
test/test_mount.py::CheckLocks::test_foreign_lock PASSED                 [ 34%]
test/test_mount.py::CheckLocks::test_foreign_lock_notexisting_pid PASSED [ 34%]
test/test_mount.py::CheckLocks::test_ignore_own_lock PASSED              [ 35%]
test/test_mount.py::CheckLocks::test_lock_remove PASSED                  [ 35%]
test/test_mount.py::CheckLocks::test_not_existing_dir PASSED             [ 35%]
test/test_mount.py::CheckLocks::test_own_lock_but_diff_tmpmount PASSED   [ 35%]
test/test_mount.py::CheckLocks::test_symlinks_remove PASSED              [ 36%]
test/test_mount.py::CheckHighLevelLocalMount::test_first_preMountCheck PASSED [ 36%]
test/test_mount.py::CheckHighLevelLocalMount::test_initialised_preMountCheck PASSED [ 36%]
test/test_mount.py::CheckHighLevelLocalMount::test_mount PASSED          [ 36%]
test/test_mount.py::CheckHighLevelLocalMount::test_remount_to_new_local_mount PASSED [ 37%]
test/test_mount.py::CheckHighLevelLocalMount::test_umount PASSED         [ 37%]
test/test_plugin_usercallback.py::UserCallback::test_reason_appExit PASSED [ 37%]
test/test_plugin_usercallback.py::UserCallback::test_reason_appStart PASSED [ 37%]
test/test_plugin_usercallback.py::UserCallback::test_reason_error PASSED [ 37%]
test/test_plugin_usercallback.py::UserCallback::test_reason_mount PASSED [ 38%]
test/test_plugin_usercallback.py::UserCallback::test_reason_processBegin PASSED [ 38%]
test/test_plugin_usercallback.py::UserCallback::test_reason_processEnd PASSED [ 38%]
test/test_plugin_usercallback.py::UserCallback::test_reason_processnewSnapshot PASSED [ 38%]
test/test_plugin_usercallback.py::UserCallback::test_reason_unmount PASSED [ 39%]
test/test_plugin_usercallback.py::SystemTest::test_local_snapshot FAILED [ 39%]
test/test_restore.py::TestRestore::test_backup PASSED                    [ 39%]
test/test_restore.py::TestRestore::test_delete PASSED                    [ 39%]
test/test_restore.py::TestRestore::test_no_backup PASSED                 [ 40%]
test/test_restore.py::TestRestore::test_only_new PASSED                  [ 40%]
test/test_restore.py::TestRestore::test_restore_folder_to_different_destination PASSED [ 40%]
test/test_restore.py::TestRestore::test_restore_multiple_files PASSED    [ 40%]
test/test_restore.py::TestRestore::test_restore_to_different_destination PASSED [ 40%]
test/test_restore.py::TestRestoreLocal::test_restore PASSED              [ 41%]
test/test_restore.py::TestRestoreLocal::test_restore_file_with_spaces PASSED [ 41%]
test/test_restore.py::TestRestoreSSH::test_restore PASSED                [ 41%]
test/test_restore.py::TestRestoreSSH::test_restore_file_with_spaces PASSED [ 41%]
test/test_schedule.py::Schedule::test_bit_to_crontab PASSED              [ 42%]
test/test_schedule.py::Schedule::test_remove_bit_entries PASSED          [ 42%]
test/test_sid.py::TestSID::test_displayID PASSED                         [ 42%]
test/test_sid.py::TestSID::test_displayName PASSED                       [ 42%]
test/test_sid.py::TestSID::test_equal_sid PASSED                         [ 43%]
test/test_sid.py::TestSID::test_exists PASSED                            [ 43%]
test/test_sid.py::TestSID::test_failed PASSED                            [ 43%]
test/test_sid.py::TestSID::test_fileInfo PASSED                          [ 43%]
test/test_sid.py::TestSID::test_fileInfoErrorRead PASSED                 [ 44%]
test/test_sid.py::TestSID::test_fileInfoErrorWrite PASSED                [ 44%]
test/test_sid.py::TestSID::test_hash PASSED                              [ 44%]
test/test_sid.py::TestSID::test_info PASSED                              [ 44%]
test/test_sid.py::TestSID::test_isExistingPathInsideSnapshotFolder PASSED [ 44%]
test/test_sid.py::TestSID::test_lastChecked PASSED                       [ 45%]
test/test_sid.py::TestSID::test_log PASSED                               [ 45%]
test/test_sid.py::TestSID::test_log_filter PASSED                        [ 45%]
test/test_sid.py::TestSID::test_makeDirs PASSED                          [ 45%]
test/test_sid.py::TestSID::test_makeWritable PASSED                      [ 46%]
test/test_sid.py::TestSID::test_name PASSED                              [ 46%]
test/test_sid.py::TestSID::test_new_object_with_invalid_type PASSED      [ 46%]
test/test_sid.py::TestSID::test_new_object_with_invalid_value PASSED     [ 46%]
test/test_sid.py::TestSID::test_new_object_with_valid_date PASSED        [ 47%]
test/test_sid.py::TestSID::test_path PASSED                              [ 47%]
test/test_sid.py::TestSID::test_setLog_binary PASSED                     [ 47%]
test/test_sid.py::TestSID::test_sort_sids PASSED                         [ 47%]
test/test_sid.py::TestSID::test_split PASSED                             [ 48%]
test/test_sid.py::TestSID::test_tag PASSED                               [ 48%]
test/test_sid.py::TestSID::test_withoutTag PASSED                        [ 48%]
test/test_sid.py::TestNewSnapshot::test_create_new PASSED                [ 48%]
test/test_sid.py::TestNewSnapshot::test_hasChanges PASSED                [ 48%]
test/test_sid.py::TestNewSnapshot::test_saveToContinue PASSED            [ 49%]
test/test_sid.py::TestRootSnapshot::test_create PASSED                   [ 49%]
test/test_sid.py::TestRootSnapshot::test_path PASSED                     [ 49%]
test/test_sid.py::TestIterSnapshots::test_iter_snapshots PASSED          [ 49%]
test/test_sid.py::TestIterSnapshots::test_lastSnapshot PASSED            [ 50%]
test/test_sid.py::TestIterSnapshots::test_list_invalid_snapshot PASSED   [ 50%]
test/test_sid.py::TestIterSnapshots::test_list_new_snapshot PASSED       [ 50%]
test/test_sid.py::TestIterSnapshots::test_list_not_reverse PASSED        [ 50%]
test/test_sid.py::TestIterSnapshots::test_list_snapshot_without_backup PASSED [ 51%]
test/test_sid.py::TestIterSnapshots::test_list_symlink_last_snapshot PASSED [ 51%]
test/test_sid.py::TestIterSnapshots::test_list_valid PASSED              [ 51%]
test/test_sid.py::TestIterSnapshots::test_list_without_new_snapshot PASSED [ 51%]
test/test_sid.py::TestIterSnapshotsNonexistingSnapshotPath::test_iterSnapshots PASSED [ 51%]
test/test_sid.py::TestIterSnapshotsNonexistingSnapshotPath::test_lastSnapshots PASSED [ 52%]
test/test_sid.py::TestIterSnapshotsNonexistingSnapshotPath::test_listSnapshots PASSED [ 52%]
test/test_singleton.py::Test::test_multi_class PASSED                    [ 52%]
test/test_singleton.py::Test::test_share_value PASSED                    [ 52%]
test/test_singleton.py::Test::test_twins PASSED                          [ 53%]
test/test_snapshotlog.py::TestLogFilter::test_filter PASSED              [ 53%]
test/test_snapshotlog.py::TestSnapshotLog::test_append PASSED            [ 53%]
test/test_snapshotlog.py::TestSnapshotLog::test_append_log_level PASSED  [ 53%]
test/test_snapshotlog.py::TestSnapshotLog::test_get PASSED               [ 54%]
test/test_snapshotlog.py::TestSnapshotLog::test_get_filter PASSED        [ 54%]
test/test_snapshotlog.py::TestSnapshotLog::test_new PASSED               [ 54%]
test/test_snapshotlog.py::TestSnapshotLog::test_new_continue PASSED      [ 54%]
test/test_snapshotlog.py::TestSnapshotLog::test_skipLines PASSED         [ 55%]
test/test_snapshotlog.py::TestSnapshotLog::test_skipLines_filtered PASSED [ 55%]
test/test_snapshotlog.py::TestSnapshotLog::test_skipLines_show_all PASSED [ 55%]
test/test_snapshots.py::SetTakeSnapshotMessage::test_error PASSED        [ 55%]
test/test_snapshots.py::SetTakeSnapshotMessage::test_info PASSED         [ 55%]
test/test_snapshots.py::UserAndGroups::test_gid_backup PASSED            [ 56%]
test/test_snapshots.py::UserAndGroups::test_gid_invalid PASSED           [ 56%]
test/test_snapshots.py::UserAndGroups::test_gid_valid PASSED             [ 56%]
test/test_snapshots.py::UserAndGroups::test_groupname_invalid PASSED     [ 56%]
test/test_snapshots.py::UserAndGroups::test_groupname_valid PASSED       [ 57%]
test/test_snapshots.py::UserAndGroups::test_uid_backup PASSED            [ 57%]
test/test_snapshots.py::UserAndGroups::test_uid_invalid PASSED           [ 57%]
test/test_snapshots.py::UserAndGroups::test_uid_valid PASSED             [ 57%]
test/test_snapshots.py::UserAndGroups::test_username_invalid PASSED      [ 58%]
test/test_snapshots.py::UserAndGroups::test_username_valid PASSED        [ 58%]
test/test_snapshots.py::HelperScripts::test_create_last_snapshot_symlink PASSED [ 58%]
test/test_snapshots.py::HelperScripts::test_make_dirs PASSED             [ 58%]
test/test_snapshots.py::HelperScripts::test_rsync_remote_path PASSED     [ 59%]
test/test_snapshots.py::HelperScripts::test_stat_free_space_local PASSED [ 59%]
test/test_snapshots.py::RsyncExcludeIncludeSuffix::test_exclude_unique_items PASSED [ 59%]
test/test_snapshots.py::RsyncExcludeIncludeSuffix::test_include_root PASSED [ 59%]
test/test_snapshots.py::RsyncExcludeIncludeSuffix::test_include_unique_items PASSED [ 59%]
test/test_snapshots.py::RsyncExcludeIncludeSuffix::test_rsync_suffix PASSED [ 60%]
test/test_snapshots.py::Callbacks::test_callback PASSED                  [ 60%]
test/test_snapshots.py::Callbacks::test_dir PASSED                       [ 60%]
test/test_snapshots.py::Callbacks::test_error PASSED                     [ 60%]
test/test_snapshots.py::Callbacks::test_keep_params PASSED               [ 61%]
test/test_snapshots.py::Callbacks::test_restore PASSED                   [ 61%]
test/test_snapshots.py::Callbacks::test_transfer PASSED                  [ 61%]
test/test_snapshots.py::SnapshotWithSID::test_backup_config PASSED       [ 61%]
test/test_snapshots.py::SnapshotWithSID::test_backup_info_file PASSED    [ 62%]
test/test_snapshots.py::SnapshotWithSID::test_backup_permissions FAILED  [ 62%]
test/test_snapshots.py::SnapshotWithSID::test_collect_permission PASSED  [ 62%]
test/test_snapshots.py::RestorePathInfo::test_change_group PASSED        [ 62%]
test/test_snapshots.py::RestorePathInfo::test_change_owner_without_root PASSED [ 62%]
test/test_snapshots.py::RestorePathInfo::test_change_permissions PASSED  [ 63%]
test/test_snapshots.py::RestorePathInfo::test_no_changes PASSED          [ 63%]
test/test_snapshots.py::DeletePath::test_dir PASSED                      [ 63%]
test/test_snapshots.py::DeletePath::test_dir_readonly PASSED             [ 63%]
test/test_snapshots.py::DeletePath::test_file PASSED                     [ 64%]
test/test_snapshots.py::DeletePath::test_file_readonly PASSED            [ 64%]
test/test_snapshots.py::DeletePath::test_pardir_readonly PASSED          [ 64%]
test/test_snapshots.py::RemoveSnapshot::test_remove PASSED               [ 64%]
test/test_snapshots.py::RemoveSnapshot::test_remove_read_only PASSED     [ 65%]
test/test_snapshots.py::SshSnapshots::test_stat_free_space_ssh PASSED    [ 65%]
test/test_snapshots.py::SshPermissions::test_backup_permissions FAILED   [ 65%]
test/test_snapshots.py::SshRemoveSnapshots::test_remove PASSED           [ 65%]
test/test_snapshots.py::SshRemoveSnapshots::test_remove_with_blank PASSED [ 66%]
test/test_snapshots_autoremove.py::KeepFirst::test_all_invalid PASSED    [ 66%]
test/test_snapshots_autoremove.py::KeepFirst::test_ignore_unhealthy PASSED [ 66%]
test/test_snapshots_autoremove.py::KeepFirst::test_keep_first_range_outside PASSED [ 66%]
test/test_snapshots_autoremove.py::KeepFirst::test_min_included_max_not PASSED [ 66%]
test/test_snapshots_autoremove.py::KeepFirst::test_no_date_ordering PASSED [ 67%]
test/test_snapshots_autoremove.py::KeepFirst::test_one_but_set PASSED    [ 67%]
test/test_snapshots_autoremove.py::KeepFirst::test_simple_one PASSED     [ 67%]
test/test_snapshots_autoremove.py::KeepAllForLast::test_border PASSED    [ 67%]
test/test_snapshots_autoremove.py::KeepAllForLast::test_simple PASSED    [ 68%]
test/test_snapshots_autoremove.py::KeepOneForLastNDays::test_doc_example PASSED [ 68%]
test/test_snapshots_autoremove.py::KeepOneForLastNWeeks::test_doc_example PASSED [ 68%]
test/test_snapshots_autoremove.py::KeepOneForLastNMonths::test_doc_example PASSED [ 68%]
test/test_snapshots_autoremove.py::KeepOnePerYearForAllYears::test_doc_example PASSED [ 69%]
test/test_snapshots_autoremove.py::IncDecMonths::test_dec_leap_months PASSED [ 69%]
test/test_snapshots_autoremove.py::IncDecMonths::test_dec_simple PASSED  [ 69%]
test/test_snapshots_autoremove.py::IncDecMonths::test_dec_year PASSED    [ 69%]
test/test_snapshots_autoremove.py::IncDecMonths::test_inc_leap_months PASSED [ 70%]
test/test_snapshots_autoremove.py::IncDecMonths::test_inc_leap_year PASSED [ 70%]
test/test_snapshots_autoremove.py::IncDecMonths::test_inc_next_year PASSED [ 70%]
test/test_snapshots_autoremove.py::IncDecMonths::test_inc_simple PASSED  [ 70%]
test/test_sshtools.py::General::test_can_mount_ssh_rw PASSED             [ 70%]
test/test_sshtools.py::General::test_checkCipher_default PASSED          [ 71%]
test/test_sshtools.py::General::test_checkCipher_fail PASSED             [ 71%]
test/test_sshtools.py::General::test_checkCipher_specific PASSED         [ 71%]
test/test_sshtools.py::General::test_checkKnownHosts PASSED              [ 71%]
test/test_sshtools.py::General::test_checkKnownHosts_fail PASSED         [ 72%]
test/test_sshtools.py::General::test_checkLogin PASSED                   [ 72%]
test/test_sshtools.py::General::test_checkLogin_fail_wrong_user PASSED   [ 72%]
test/test_sshtools.py::General::test_checkPingHost PASSED                [ 72%]
test/test_sshtools.py::General::test_checkPingHost_fail PASSED           [ 73%]
test/test_sshtools.py::General::test_checkRemoteFolder PASSED            [ 73%]
test/test_sshtools.py::General::test_checkRemoteFolder_fail_can_not_create PASSED [ 73%]
test/test_sshtools.py::General::test_checkRemoteFolder_fail_not_a_folder PASSED [ 73%]
test/test_sshtools.py::General::test_checkRemoteFolder_with_spaces PASSED [ 74%]
test/test_sshtools.py::General::test_check_remote_command PASSED         [ 74%]
test/test_sshtools.py::General::test_check_remote_command_fail PASSED    [ 74%]
test/test_sshtools.py::General::test_check_remote_command_hard_link_fail PASSED [ 74%]
test/test_sshtools.py::General::test_check_remote_command_with_spaces PASSED [ 74%]
test/test_sshtools.py::General::test_randomId PASSED                     [ 75%]
test/test_sshtools.py::General::test_unlockSshAgent PASSED               [ 75%]
test/test_sshtools.py::General::test_unlockSshAgent_fail PASSED          [ 75%]
test/test_sshtools.py::SshKey::test_fingerprint PASSED                   [ 75%]
test/test_sshtools.py::SshKey::test_generate PASSED                      [ 76%]
test/test_sshtools.py::SshKey::test_host_key PASSED                      [ 76%]
test/test_sshtools.py::SshKey::test_write_known_host_file PASSED         [ 76%]
test/test_sshtools.py::StartSshAgent::test_equal_sign PASSED             [ 76%]
test/test_sshtools.py::StartSshAgent::test_error PASSED                  [ 77%]
test/test_sshtools.py::StartSshAgent::test_export PASSED                 [ 77%]
test/test_sshtools.py::StartSshAgent::test_just_start PASSED             [ 77%]
test/test_sshtools.py::StartSshAgent::test_missing PASSED                [ 77%]
test/test_sshtools.py::StartSshAgent::test_space PASSED                  [ 77%]
test/test_sshtools.py::SSHCopyID::test_complete_command PASSED           [ 78%]
test/test_sshtools.py::SSHCopyID::test_custom_port PASSED                [ 78%]
test/test_sshtools.py::SSHCopyID::test_default_port PASSED               [ 78%]
test/test_sshtools.py::SSHCopyID::test_proxy_with_custom_port PASSED     [ 78%]
test/test_sshtools.py::SSHCopyID::test_proxy_with_default_port PASSED    [ 79%]
test/test_takeSnapshot.py::Take::test_error FAILED                       [ 79%]
test/test_takeSnapshot.py::Take::test_error_without_continue PASSED      [ 79%]
test/test_takeSnapshot.py::Take::test_exclude FAILED                     [ 79%]
test/test_takeSnapshot.py::Take::test_fail_create_new_snapshot PASSED    [ 80%]
test/test_takeSnapshot.py::Take::test_four_snapshots FAILED              [ 80%]
test/test_takeSnapshot.py::Take::test_new_exists FAILED                  [ 80%]
test/test_takeSnapshot.py::Take::test_new_exists_continue FAILED         [ 80%]
test/test_takeSnapshot.py::Take::test_spaces_in_exclude FAILED           [ 81%]
test/test_takeSnapshot.py::Take::test_spaces_in_include FAILED           [ 81%]
test/test_takeSnapshot.py::TakeSSH::test_error FAILED                    [ 81%]
test/test_takeSnapshot.py::TakeSSH::test_error_without_continue PASSED   [ 81%]
test/test_takeSnapshot.py::TakeSSH::test_exclude FAILED                  [ 81%]
test/test_takeSnapshot.py::TakeSSH::test_fail_create_new_snapshot PASSED [ 82%]
test/test_takeSnapshot.py::TakeSSH::test_four_snapshots FAILED           [ 82%]
test/test_takeSnapshot.py::TakeSSH::test_new_exists FAILED               [ 82%]
test/test_takeSnapshot.py::TakeSSH::test_new_exists_continue FAILED      [ 82%]
test/test_takeSnapshot.py::TakeSSH::test_spaces_in_exclude FAILED        [ 83%]
test/test_takeSnapshot.py::TakeSSH::test_spaces_in_include FAILED        [ 83%]
test/test_tools.py::TestTools::test_addSourceToPathEnviron PASSED        [ 83%]
test/test_tools.py::TestTools::test_backintimePath PASSED                [ 83%]
test/test_tools.py::TestTools::test_checkCommand PASSED                  [ 84%]
test/test_tools.py::TestTools::test_checkCronPattern PASSED              [ 84%]
test/test_tools.py::TestTools::test_checkXServer PASSED                  [ 84%]
test/test_tools.py::TestTools::test_decodeOctalEscape PASSED             [ 84%]
test/test_tools.py::TestTools::test_isRoot PASSED                        [ 85%]
test/test_tools.py::TestTools::test_makeDirs PASSED                      [ 85%]
test/test_tools.py::TestTools::test_makeDirs_not_writable PASSED         [ 85%]
test/test_tools.py::TestTools::test_md5sum PASSED                        [ 85%]
test/test_tools.py::TestTools::test_mkdir PASSED                         [ 85%]
test/test_tools.py::TestTools::test_mountArgs PASSED                     [ 86%]
test/test_tools.py::TestTools::test_mountpoint PASSED                    [ 86%]
test/test_tools.py::TestTools::test_patternHasNotEncryptableWildcard PASSED [ 86%]
test/test_tools.py::TestTools::test_pids PASSED                          [ 86%]
test/test_tools.py::TestTools::test_pidsWithName PASSED                  [ 87%]
test/test_tools.py::TestTools::test_powerStatusAvailable PASSED          [ 87%]
test/test_tools.py::TestTools::test_preparePath PASSED                   [ 87%]
test/test_tools.py::TestTools::test_processAlive PASSED                  [ 87%]
test/test_tools.py::TestTools::test_processCmdline PASSED                [ 88%]
test/test_tools.py::TestTools::test_processCmdline_exception PASSED      [ 88%]
test/test_tools.py::TestTools::test_processExists PASSED                 [ 88%]
test/test_tools.py::TestTools::test_processName PASSED                   [ 88%]
test/test_tools.py::TestTools::test_processPaused PASSED                 [ 88%]
test/test_tools.py::TestTools::test_processStat PASSED                   [ 89%]
test/test_tools.py::TestTools::test_processStat_exception PASSED         [ 89%]
test/test_tools.py::TestTools::test_readFile PASSED                      [ 89%]
test/test_tools.py::TestTools::test_readFileLines PASSED                 [ 89%]
test/test_tools.py::TestTools::test_readTimeStamp PASSED                 [ 90%]
test/test_tools.py::TestTools::test_registerBackintimePath PASSED        [ 90%]
test/test_tools.py::TestTools::test_rsyncCaps PASSED                     [ 90%]
test/test_tools.py::TestTools::test_runningFromSource PASSED             [ 90%]
test/test_tools.py::TestTools::test_sharePath PASSED                     [ 91%]
test/test_tools.py::TestTools::test_splitCommands PASSED                 [ 91%]
test/test_tools.py::TestTools::test_usingSudo PASSED                     [ 91%]
test/test_tools.py::TestTools::test_which PASSED                         [ 91%]
test/test_tools.py::TestTools::test_writeTimeStamp PASSED                [ 92%]
test/test_tools.py::EscapeIPv6::test_escaped PASSED                      [ 92%]
test/test_tools.py::EscapeIPv6::test_invalid PASSED                      [ 92%]
test/test_tools.py::EscapeIPv6::test_passed PASSED                       [ 92%]
test/test_tools.py::Environ::test_envLoad_do_not_overwrite_previous_values PASSED [ 92%]
test/test_tools.py::Environ::test_envLoad_without_previous_values PASSED [ 93%]
test/test_tools.py::Environ::test_envSave PASSED                         [ 93%]
test/test_tools.py::ExecuteSubprocess::test_callback PASSED              [ 93%]
test/test_tools.py::ExecuteSubprocess::test_pausable PASSED              [ 93%]
test/test_tools.py::ExecuteSubprocess::test_returncode PASSED            [ 94%]
test/test_tools.py::Tools_FakeFS::test_git_repo_info PASSED              [ 94%]
test/test_tools.py::Tools_FakeFS::test_git_repo_info_none PASSED         [ 94%]
test/test_tools.py::ValidateSnapshotsPath::test_fails_on_ro PASSED       [ 94%]
test/test_tools.py::ValidateSnapshotsPath::test_permission_fail PASSED   [ 95%]
test/test_tools.py::ValidateSnapshotsPath::test_writes PASSED            [ 95%]
test/test_tools.py::OlderThan::test_days_not_older PASSED                [ 95%]
test/test_tools.py::OlderThan::test_days_older PASSED                    [ 95%]
test/test_tools.py::OlderThan::test_hours_not_older PASSED               [ 96%]
test/test_tools.py::OlderThan::test_hours_older PASSED                   [ 96%]
test/test_tools.py::OlderThan::test_month_31th PASSED                    [ 96%]
test/test_tools.py::OlderThan::test_month_31th_plus_ms PASSED            [ 96%]
test/test_tools.py::OlderThan::test_month_next_year PASSED               [ 96%]
test/test_tools.py::OlderThan::test_month_next_year_plus_ms PASSED       [ 97%]
test/test_tools.py::OlderThan::test_month_not_older PASSED               [ 97%]
test/test_tools.py::OlderThan::test_month_older PASSED                   [ 97%]
test/test_tools.py::OlderThan::test_week_not_older PASSED                [ 97%]
test/test_tools.py::OlderThan::test_week_older PASSED                    [ 98%]
test/test_tools.py::NestedDictUpdate::test_simple PASSED                 [ 98%]
test/test_uniquenessset.py::General::test_001_depency_workaround PASSED  [ 98%]
test/test_uniquenessset.py::General::test_ctor_defaults PASSED           [ 98%]
test/test_uniquenessset.py::General::test_deep_check PASSED              [ 99%]
test/test_uniquenessset.py::General::test_fail_equal_without_equal_to PASSED [ 99%]
test/test_uniquenessset.py::General::test_size_mtime PASSED              [ 99%]
test/test_uniquenessset.py::General::test_unique_myself PASSED           [ 99%]
test/test_uniquenessset.py::General::test_unique_size_but_different_mtime PASSED [100%]

=================================== FAILURES ===================================
_________________ BackInTime.test_local_snapshot_is_successful _________________

self = <test.test_backintime.BackInTime testMethod=test_local_snapshot_is_successful>

        def test_local_snapshot_is_successful(self):
            """From BIT initialization through snapshot
    
            From BIT initialization all the way through successful snapshot on a
            local mount. test one of the highest level interfaces a user could
            work with - the command line ensures that argument parsing,
            functionality, and output all work as expected is NOT intended to
            replace individual method tests, which are incredibly useful as well.
    
            Development notes (by Buhtz, 2023):
            Multiple tests do compare return codes and output on stdout. It is NOT
            tested what is on the file system. The intention might be a system
            test. But the asserts not qualified to answer the important questions
            and observe the intended behavior.  Heavy refactoring is needed. But
            because of the "level" of that tests it won't happen in the near
            future. Also maintenance costs of this tests are damn high because
            every tiny modification of BIT gives a false fail of this test.
    
            Development notes (by Buhtz, 2024-05):
            It is just dumb stdout parsing. I tend to remove this test because of
            the calculation of its value and its maintenance costs.
            """
    
            # ensure that we see full diffs of assert output if there are any
            self.maxDiff = None
    
            # create pristine source directory with single file
            subprocess.getoutput("chmod -R a+rwx /tmp/test && rm -rf /tmp/test")
            os.mkdir('/tmp/test')
    
            with open('/tmp/test/testfile', 'w') as f:
                f.write('some data')
    
            # create pristine snapshot directory
            subprocess.getoutput(
                "chmod -R a+rwx /tmp/snapshots && rm -rf /tmp/snapshots")
            os.mkdir('/tmp/snapshots')
    
            # remove restored directory
            subprocess.getoutput("rm -rf /tmp/restored")
    
            # install proper destination filesystem structure and verify output
            proc = subprocess.Popen(["./backintime",
                                     "--config",
                                     "test/config",
                                     "--share-path",
                                     self.sharePath,
                                     "check-config",
                                     # do not overwrite users crontab
                                     "--no-crontab"],
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE)
    
            output, error = proc.communicate()
            msg = 'Returncode: {}\nstderr: {}\nstdout: {}' \
                  .format(proc.returncode, error.decode(), output.decode())
    
            self.assertEqual(proc.returncode, 0, msg)
    
            self.assertRegex(output.decode(), re.compile(r'''
    Back In Time
    Version: \d+.\d+.\d+.*
    
    Back In Time comes with ABSOLUTELY NO WARRANTY.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `backintime --license' for details.
    
    (INFO: Update to config version \d+
    )?
     \+--------------------------------\+
     |  Check/prepare snapshot path   |
     \+--------------------------------\+
    Check/prepare snapshot path: done
    
     \+--------------------------------\+
     |          Check config          |
     \+--------------------------------\+
    Check config: done
    
    Config .*test/config profile 'Main profile' is fine.''', re.MULTILINE))
    
            # execute backup and verify output
            proc = subprocess.Popen(["./backintime",
                                     "--config", "test/config",
                                     "--share-path", self.sharePath,
                                     "backup"],
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE)
            output, error = proc.communicate()
            msg = 'Returncode: {}\nstderr: {}\nstdout: {}' \
                  .format(proc.returncode, error.decode(), output.decode())
>           self.assertEqual(proc.returncode, 0, msg)
E           AssertionError: 1 != 0 : Returncode: 1
E           stderr: WARNING: Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
E           WARNING: D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
E           WARNING: Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
E           INFO: Lock
E           INFO: Take a new snapshot. Profile: 1 Main profile
E           INFO: Call rsync to take the snapshot
E           INFO: Save config file
E           INFO: Save permissions
E           Traceback (most recent call last):
E             File "/home/travis/build/bit-team/backintime/common/backintime.py", line 1335, in <module>
E               startApp()
E             File "/home/travis/build/bit-team/backintime/common/backintime.py", line 585, in startApp
E               args.func(args)
E             File "/home/travis/build/bit-team/backintime/common/backintime.py", line 852, in backup
E               ret = takeSnapshot(cfg, force)
E             File "/home/travis/build/bit-team/backintime/common/backintime.py", line 100, in takeSnapshot
E               ret = snapshots.Snapshots(cfg).backup(force)
E             File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 896, in backup
E               ret_val, ret_error = self.takeSnapshot(
E             File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 1493, in takeSnapshot
E               self.backupPermissions(new_snapshot)
E             File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 1182, in backupPermissions
E               decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'
E           
E           stdout: 
E           Back In Time
E           Version: 1.5.4-rc1
E           
E           Back In Time comes with ABSOLUTELY NO WARRANTY.
E           This is free software, and you are welcome to redistribute it
E           under certain conditions; type `backintime --license' for details.

test/test_backintime.py:124: AssertionError
______________ MirrorMirrorOnTheWall.test010_ruff_default_ruleset ______________

self = <test.test_lint.MirrorMirrorOnTheWall testMethod=test010_ruff_default_ruleset>

    @unittest.skipUnless(RUFF_AVAILABLE, BASE_REASON.format('ruff'))
    def test010_ruff_default_ruleset(self):
        """Ruff in default mode."""
    
        # ATTENTIION: Some settings are found in pyproject.toml
        cmd = [
            'ruff',
            'check',
            # Additionally activate subset of special rules:
            # - PyLint (PL)
            # - PyCodestyle (E, W)
            # - flake8-gettext (INT)
            # - useless noqua (RUF100)
            '--extend-select=PL,E,W,INT,RUF100',
            # Ignore: redefined-loop-name
            '--ignore=PLW2901',
            '--line-length', str(PEP8_MAX_LINE_LENGTH),
            # Because of globally installed GNU gettext functions
            '--config', 'builtins=["_", "ngettext"]',
            # Ruff counting branches different from PyLint.
            # See: <https://www.reddit.com/r/learnpython/comments/
            #      1buojae/comment/kxu0mp3>
            '--config', 'pylint.max-branches=13',
            '--config', 'flake8-quotes.inline-quotes = "single"',
            # one error per line (no context lines)
            '--output-format=concise',
            '--quiet',
        ]
    
        cmd.extend(full_test_files)
    
        proc = subprocess.run(
            cmd,
            check=False,
            universal_newlines=True,
            capture_output=True
        )
    
        # No errors other then linter rules
        self.assertIn(proc.returncode, [0, 1], proc.stderr)
    
        error_n = len(proc.stdout.splitlines())
        if error_n > 0:
            print(proc.stdout)
    
>       self.assertEqual(0, error_n, f'Ruff found {error_n} problem(s).')
E       AssertionError: 0 != 1 : Ruff found 1 problem(s).

test/test_lint.py:229: AssertionError
----------------------------- Captured stdout call -----------------------------
test/test_mount.py:205:80: E501 Line too long (89 > 79)

_____________ MirrorMirrorOnTheWall.test020_flake8_default_ruleset _____________

self = <test.test_lint.MirrorMirrorOnTheWall testMethod=test020_flake8_default_ruleset>

    @unittest.skipUnless(FLAKE8_AVAILABLE, BASE_REASON.format('flake8'))
    def test020_flake8_default_ruleset(self):
        """Flake8 in default mode."""
        cmd = [
            'flake8',
            f'--max-line-length={PEP8_MAX_LINE_LENGTH}',
            '--builtins=_,ngettext',
            # '--enable-extensions='
        ]
    
        cmd.extend(full_test_files)
    
        proc = subprocess.run(
            cmd,
            check=False,
            universal_newlines=True,
            capture_output=True
        )
    
        error_n = len(proc.stdout.splitlines())
        if error_n > 0:
            print(proc.stdout)
    
>       self.assertEqual(0, error_n, f'Flake8 found {error_n} problem(s).')
E       AssertionError: 0 != 2 : Flake8 found 2 problem(s).

test/test_lint.py:257: AssertionError
----------------------------- Captured stdout call -----------------------------
/home/travis/build/bit-team/backintime/common/test/test_mount.py:205:80: E501 line too long (89 > 79 characters)
/home/travis/build/bit-team/backintime/common/test/test_mount.py:217:5: E303 too many blank lines (2)

_____________ MirrorMirrorOnTheWall.test030_pylint_default_ruleset _____________

self = <test.test_lint.MirrorMirrorOnTheWall testMethod=test030_pylint_default_ruleset>

    @unittest.skipUnless(PYLINT_AVAILABLE, BASE_REASON.format('PyLint'))
    def test030_pylint_default_ruleset(self):
        """Use Pylint with all default rules to check specific files.
        """
    
        cmd = create_pylint_cmd()
    
        # Add py-files
        cmd.extend(full_test_files)
    
        r = subprocess.run(
            cmd,
            check=False,
            universal_newlines=True,
            capture_output=True)
    
        # Count lines except module headings
        error_n = len(list(filter(lambda line: not line.startswith('*****'),
                                  r.stdout.splitlines())))
        print(r.stdout)
    
>       self.assertEqual(0, error_n, f'PyLint found {error_n} problems.')
E       AssertionError: 0 != 8 : PyLint found 8 problems.

test/test_lint.py:283: AssertionError
----------------------------- Captured stdout call -----------------------------
************* Module test.test_mount
test/test_mount.py:205:0: C0301: Line too long (89/79) (line-too-long)
test/test_mount.py:217:4: C0116: Missing function or method docstring (missing-function-docstring)
test/test_mount.py:217:4: C0103: Method name "test_first_preMountCheck" doesn't conform to snake_case naming style (invalid-name)
test/test_mount.py:221:4: C0116: Missing function or method docstring (missing-function-docstring)
test/test_mount.py:221:4: C0103: Method name "test_initialised_preMountCheck" doesn't conform to snake_case naming style (invalid-name)
test/test_mount.py:225:4: C0116: Missing function or method docstring (missing-function-docstring)
test/test_mount.py:229:4: C0116: Missing function or method docstring (missing-function-docstring)
test/test_mount.py:232:4: C0116: Missing function or method docstring (missing-function-docstring)

____________ MirrorMirrorOnTheWall.test050_pylint_exclusive_ruleset ____________

self = <test.test_lint.MirrorMirrorOnTheWall testMethod=test050_pylint_exclusive_ruleset>

    @unittest.skipUnless(PYLINT_AVAILABLE, BASE_REASON.format('PyLint'))
    def test050_pylint_exclusive_ruleset(self):
        """Use Pylint to check for specific rules only.
    
        Some facts about PyLint
         - It is one of the slowest available linters.
         - It is able to catch lints other linters miss.
        """
    
        # Explicit activate checks
        err_codes = [
            'C0305',  # trailing-newlines
            'C0325',  # superfluous-parens
            'C0410',  # multiple-imports
            'C0303',  # trailing-whitespace
            'E0100',  # init-is-generator
            'E0101',  # return-in-init
            'E0102',  # function-redefined
            'E0103',  # not-in-loop
            'E0106',  # return-arg-in-generator
            'E0213',  # no-self-argument
            'E0401',  # import-error
            'E0602',  # undefined-variable
            'E1101',  # no-member
            'I0021',  # useless-suppression
            'W0123',  # eval-used
            'W0237',  # arguments-renamed
            'W0311',  # bad-indentation
            'W0404',  # reimported
            'W0611',  # unused-import
            'W0612',  # unused-variable
            'W0614',  # unused-wildcard-import
            'W0707',  # raise-missing-from
            'W1301',  # unused-format-string-key
            'W1401',  # anomalous-backslash-in-string (invalid escape sequence)
            'W1515',  # forgotten-debug-statement
            'W4902',  # deprecated-method
            'W4904',  # deprecated-class
            'R0202',  # no-classmethod-decorator
            'R0203',  # no-staticmethod-decorator
            # See PyLint bugs:
            # https://github.com/pylint-dev/pylint/issues/214
            # https://github.com/pylint-dev/pylint/issues/7920
            # 'R0801',  # duplicate-code
    
            # Enable asap. This list is a selection of existing (not all!)
            # problems currently existing in the BIT code base. Quite easy to
            # fix because their count is low.
            # 'W0237',  # arguments-renamed
            # 'W0221',  # arguments-differ
            # 'W0603',  # global-statement
        ]
    
        cmd = create_pylint_cmd(err_codes)
    
        # Add py-files
        cmd.extend(self._collect_py_files())
    
        r = subprocess.run(
            cmd,
            check=False,
            universal_newlines=True,
            capture_output=True)
    
        # Count lines except module headings and output about duplicate code
        error_n = len(list(filter(
            lambda line: line[:2] not in ('**', '  ', '==', ' (', ''),
            r.stdout.splitlines())))
        print(r.stdout)
    
>       self.assertEqual(0, error_n, f'PyLint found {error_n} problems.')
E       AssertionError: 0 != 2 : PyLint found 2 problems.

test/test_lint.py:358: AssertionError
----------------------------- Captured stdout call -----------------------------
************* Module snapshots
snapshots.py:1182:21: E1101: Module 'encfstools' has no 'Bounce' member (no-member)
************* Module test.test_encfstools
test/test_encfstools.py:58:0: C0305: Trailing newlines (trailing-newlines)

________________________ SystemTest.test_local_snapshot ________________________

self = <test.test_plugin_usercallback.SystemTest testMethod=test_local_snapshot>

    def test_local_snapshot(self):
        """User-callback response while doing a local snapshot"""
    
        config = Config(
            config_path=str(self.config_fp),
            data_path=str(self.temp_path / '.local' / 'share')
        )
    
        full_snapshot_path = config.snapshotsFullPath()
        Path(full_snapshot_path).mkdir(parents=True)
    
        snapshot = Snapshots(config)
    
        # DevNote : Because BIT don't use Python's logging module there is
        # no way to use assertLogs(). Current solution is to capture
        # stdout/stderr.
        stdout = io.StringIO()
        stderr = io.StringIO()
    
        with redirect_stdout(stdout), redirect_stderr(stderr):
            # Result is inverted. 'True' means there was an error.
>           self.assertFalse(snapshot.backup())

test/test_plugin_usercallback.py:288: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:896: in backup
    ret_val, ret_error = self.takeSnapshot(
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4816332cf0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
___________________ SnapshotWithSID.test_backup_permissions ____________________

self = <test.test_snapshots.SnapshotWithSID testMethod=test_backup_permissions>

    def test_backup_permissions(self):
        #TODO: add test for save permissions over SSH (and one SSH-test for path with spaces)
        infoFilePath = os.path.join(self.snapshotPath,
                                    '20151219-010324-123',
                                    'fileinfo.bz2')
    
        include = self.cfg.include()[0][0]
        with TemporaryDirectory(dir = include) as tmp:
    
            file_path = os.path.join(tmp, 'foo')
            with open(file_path, 'wt') as f:
                f.write('bar')
                f.flush()
    
            self.sid.makeDirs(tmp)
            with open(self.sid.pathBackup(file_path), 'wt') as snapshot_f:
                snapshot_f.write('bar')
                snapshot_f.flush()
    
>           self.sn.backupPermissions(self.sid)

test/test_snapshots.py:347: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4815fb1700>, sid = 20151219-010324-123

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
____________________ SshPermissions.test_backup_permissions ____________________

self = <test.test_snapshots.SshPermissions testMethod=test_backup_permissions>

    def test_backup_permissions(self):
        """Backup file permissions in SSH backup mode."""
    
        # --- prepare environment ---
    
        # config instance
        cfg = _init_basic_config()
        # snapshots profile
        snapshot = _init_ssh_profile(cfg)
        # backup source directory
        _init_source_path(cfg)
        # simulate a taken snapshot
        sid = _init_concrete_snapshot(cfg)
    
        # BUHTZ 2022-10-21: The mounting is needed but I didn't understand
        # all details yet.
        # mount
        mount_obj = _init_mounting(cfg)
        # ...unmount when test finished
        self.addCleanup(lambda: mount_obj.umount(cfg.current_hash_id))
    
        # --- prepare the backup source ---
    
        # Does the concrete snapshot exists?
        self.assertTrue(sid.exists())
    
        # The backup source path
        # e.g. /tmp/e2uij3y
        source_path = pathlib.Path(cfg.include()[0][0])
        # ...exists?
        self.assertTrue(source_path.exists())
    
        # create the test files in the backup source directory
        generic.create_test_files(str(source_path))
    
        # --- Do the job to test. ---
    
        # backup permissions of files/folders in the backup source
>       rc = snapshot.backupPermissions(sid)

test/test_snapshots.py:862: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c48232331d0>, sid = 20151219-010324-123

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || d=1;test $d -eq 1 && mkdir "/tmp/DESTINATIONDIRparentk9fc4amv/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 11;test -w "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 12;test -x "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || d=1;test $d -eq 1 && mkdir "/tmp/DESTINATIONDIRparentk9fc4amv/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 11;test -w "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 12;test -x "/tmp/DESTINATIONDIRparentk9fc4amv/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/DESTINATIONDIRparentk9fc4amv/foo /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/DESTINATIONDIRparentk9fc4amv/foo', '/tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/DESTINATIONDIRparentk9fc4amv/foo on /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/5426.lock
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/DESTINATIONDIRparentk9fc4amv/foo from /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/52F3F264/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/DATADIRz69vwq7g/.local/share/backintime/mnt/5426.lock
_______________________________ Take.test_error ________________________________

self = <test.test_takeSnapshot.Take testMethod=test_error>
sleep = <MagicMock name='sleep' id='136649144349712'>

    @patch('time.sleep') # speed up unittest
    def test_error(self, sleep):
        with generic.mockPermissions(os.path.join(self.include.name, 'test')):
            now = datetime.today()
            sid1 = snapshots.SID(now, self.cfg)
    
>           self.assertListEqual([True, True], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:182: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c481bb532f0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:182 Snapshots.test_error] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpi0mc2rr5 --exclude=/tmp/tmplxcj6uj6/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmptrt7umuc/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmptrt7umuc/** --exclude=* / /tmp/tmpi0mc2rr5/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpi0mc2rr5 --exclude=/tmp/tmplxcj6uj6/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmptrt7umuc/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmptrt7umuc/** --exclude=* / /tmp/tmpi0mc2rr5/backintime/test-host/test-user/1/new_snapshot/backup'
WARNING: [test/test_takeSnapshot.py:182 Snapshots.test_error] Command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpi0mc2rr5 --exclude=/tmp/tmplxcj6uj6/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmptrt7umuc/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmptrt7umuc/** --exclude=* / /tmp/tmpi0mc2rr5/backintime/test-host/test-user/1/new_snapshot/backup" returns 23
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
______________________________ Take.test_exclude _______________________________

self = <test.test_takeSnapshot.Take testMethod=test_exclude>
sleep = <MagicMock name='sleep' id='136649144417744'>

    @patch('time.sleep') # speed up unittest
    def test_exclude(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        self.cfg.setExclude(['bar/baz'])
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:138: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c481bb626c0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:138 Snapshots.test_exclude] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpw_tb0nip --exclude=/tmp/tmpeft_3xcn/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmp3j6zjtpa/ --include=/tmp/ --exclude=bar/baz --include=/tmp/tmp3j6zjtpa/** --exclude=* / /tmp/tmpw_tb0nip/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpw_tb0nip --exclude=/tmp/tmpeft_3xcn/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmp3j6zjtpa/ --include=/tmp/ --exclude=bar/baz --include=/tmp/tmp3j6zjtpa/** --exclude=* / /tmp/tmpw_tb0nip/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:138 Snapshots.test_exclude] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
___________________________ Take.test_four_snapshots ___________________________

self = <test.test_takeSnapshot.Take testMethod=test_four_snapshots>
sleep = <MagicMock name='sleep' id='136649144415248'>

    @patch('time.sleep')  # speed up unittest
    def test_four_snapshots(self, sleep):
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
        # Note: 'self.sn' is of type 'Snapshots'
        # First boolean: Snapshot succeeded
        # Second boolean: Error occurred
        self.assertListEqual(
                [True, False],  # Snapshot without error
>               self.sn.takeSnapshot(
                    sid=sid1,
                    now=now,
                    include_folders=[
                        (self.include.name, 0),  # '0' means it is a file
                    ]
                )
        )

test/test_takeSnapshot.py:51: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c481bb632f0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:51 Snapshots.test_four_snapshots] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp36ol1ufw --exclude=/tmp/tmpjdk_lqnf/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpc8kifrw1/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpc8kifrw1/** --exclude=* / /tmp/tmp36ol1ufw/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp36ol1ufw --exclude=/tmp/tmpjdk_lqnf/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpc8kifrw1/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpc8kifrw1/** --exclude=* / /tmp/tmp36ol1ufw/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:51 Snapshots.test_four_snapshots] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
_____________________________ Take.test_new_exists _____________________________

self = <test.test_takeSnapshot.Take testMethod=test_new_exists>
sleep = <MagicMock name='sleep' id='136649144043280'>

    @patch('time.sleep') # speed up unittest
    def test_new_exists(self, sleep):
        new_snapshot = snapshots.NewSnapshot(self.cfg)
        new_snapshot.makeDirs()
        with open(new_snapshot.path('leftover'), 'wt') as f:
            f.write('foo')
    
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:214: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c481bb09670>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1309 takeSnapshot] Removing leftover snapshot new_snapshot directory from last run
DEBUG: [common/snapshots.py:1318 Execute.takeSnapshot] Call command "rsync -a --delete -s /tmp/tmplepplmru/ /tmp/tmpjj8so4rl/backintime/test-host/test-user/1/new_snapshot"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync -a --delete -s /tmp/tmplepplmru/ /tmp/tmpjj8so4rl/backintime/test-host/test-user/1/new_snapshot'
DEBUG: [common/snapshots.py:1318 Execute.takeSnapshot] Command "rsync -a --delet" returns 0
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:214 Snapshots.test_new_exists] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpjj8so4rl --exclude=/tmp/tmpflrbwhi4/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpjsyue3mt/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpjsyue3mt/** --exclude=* / /tmp/tmpjj8so4rl/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpjj8so4rl --exclude=/tmp/tmpflrbwhi4/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpjsyue3mt/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpjsyue3mt/** --exclude=* / /tmp/tmpjj8so4rl/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:214 Snapshots.test_new_exists] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
________________________ Take.test_new_exists_continue _________________________

self = <test.test_takeSnapshot.Take testMethod=test_new_exists_continue>
sleep = <MagicMock name='sleep' id='136649246544896'>

    @patch('time.sleep') # speed up unittest
    def test_new_exists_continue(self, sleep):
        new_snapshot = snapshots.NewSnapshot(self.cfg)
        new_snapshot.makeDirs()
        with open(new_snapshot.path('leftover'), 'wt') as f:
            f.write('foo')
        new_snapshot.saveToContinue = True
    
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:229: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821cc92b0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1282 Snapshots.takeSnapshot] Found leftover snapshot 'new_snapshot' that can be continued.
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:229 Snapshots.test_new_exists_continue] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpft4ijw4o --exclude=/tmp/tmpm5vop3us/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpwcpktdsq/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpwcpktdsq/** --exclude=* / /tmp/tmpft4ijw4o/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpft4ijw4o --exclude=/tmp/tmpm5vop3us/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpwcpktdsq/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpwcpktdsq/** --exclude=* / /tmp/tmpft4ijw4o/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:229 Snapshots.test_new_exists_continue] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
_________________________ Take.test_spaces_in_exclude __________________________

self = <test.test_takeSnapshot.Take testMethod=test_spaces_in_exclude>
sleep = <MagicMock name='sleep' id='136649246724880'>

    @patch('time.sleep') # speed up unittest
    def test_spaces_in_exclude(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        exclude = os.path.join(self.include.name, 'test path with spaces')
        generic.create_test_files(exclude)
        self.cfg.setExclude([exclude])
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:161: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821cf51c0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:161 Snapshots.test_spaces_in_exclude] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp64oh0g2w --exclude=/tmp/tmpupc25iu6/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpnxl2x6hu/ --include=/tmp/ --exclude=/tmp/tmpnxl2x6hu/test path with spaces --include=/tmp/tmpnxl2x6hu/** --exclude=* / /tmp/tmp64oh0g2w/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp64oh0g2w --exclude=/tmp/tmpupc25iu6/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpnxl2x6hu/ --include=/tmp/ --exclude=/tmp/tmpnxl2x6hu/test path with spaces --include=/tmp/tmpnxl2x6hu/** --exclude=* / /tmp/tmp64oh0g2w/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:161 Snapshots.test_spaces_in_exclude] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
_________________________ Take.test_spaces_in_include __________________________

self = <test.test_takeSnapshot.Take testMethod=test_spaces_in_include>
sleep = <MagicMock name='sleep' id='136649246919952'>

    @patch('time.sleep') # speed up unittest
    def test_spaces_in_include(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        include = os.path.join(self.include.name, 'test path with spaces')
        generic.create_test_files(include)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(include, 0),]))

test/test_takeSnapshot.py:118: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821d24bc0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:118 Snapshots.test_spaces_in_include] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpq34xz3au --exclude=/tmp/tmpigs4mddz/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmptkydegx9/test path with spaces/ --include=/tmp/tmptkydegx9/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmptkydegx9/test path with spaces/** --exclude=* / /tmp/tmpq34xz3au/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpq34xz3au --exclude=/tmp/tmpigs4mddz/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmptkydegx9/test path with spaces/ --include=/tmp/tmptkydegx9/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmptkydegx9/test path with spaces/** --exclude=* / /tmp/tmpq34xz3au/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:118 Snapshots.test_spaces_in_include] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
______________________________ TakeSSH.test_error ______________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_error>
sleep = <MagicMock name='sleep' id='136649246689472'>

    @patch('time.sleep') # speed up unittest
    def test_error(self, sleep):
        with generic.mockPermissions(os.path.join(self.include.name, 'test')):
            now = datetime.today()
            sid1 = snapshots.SID(now, self.cfg)
    
>           self.assertListEqual([True, True], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:182: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821cec4d0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmpzcb9pj62/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpzcb9pj62/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpzcb9pj62/foo" || exit 11;test -w "/tmp/tmpzcb9pj62/foo" || exit 12;test -x "/tmp/tmpzcb9pj62/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmpzcb9pj62/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpzcb9pj62/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpzcb9pj62/foo" || exit 11;test -w "/tmp/tmpzcb9pj62/foo" || exit 12;test -x "/tmp/tmpzcb9pj62/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmpzcb9pj62/foo /tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmpzcb9pj62/foo', '/tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmpzcb9pj62/foo on /tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/5426.lock
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:182 Snapshots.test_error] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpr1pa7og4/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpr1pa7og4/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpur8wmy7f/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpur8wmy7f/** --exclude=* / travis@localhost:/tmp/tmpzcb9pj62/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpr1pa7og4/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpr1pa7og4/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpur8wmy7f/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpur8wmy7f/** --exclude=* / travis@localhost:/tmp/tmpzcb9pj62/foo/backintime/test-host/test-user/1/new_snapshot/backup'
WARNING: [test/test_takeSnapshot.py:182 Snapshots.test_error] Command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpr1pa7og4/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpr1pa7og4/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpur8wmy7f/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpur8wmy7f/** --exclude=* / travis@localhost:/tmp/tmpzcb9pj62/foo/backintime/test-host/test-user/1/new_snapshot/backup" returns 23
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmpzcb9pj62/foo from /tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/9E0E56B8/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpr1pa7og4/.local/share/backintime/mnt/5426.lock
_____________________________ TakeSSH.test_exclude _____________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_exclude>
sleep = <MagicMock name='sleep' id='136649144416400'>

    @patch('time.sleep') # speed up unittest
    def test_exclude(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        self.cfg.setExclude(['bar/baz'])
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:138: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c481bb634d0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmp6e5kpb9u/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp6e5kpb9u/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp6e5kpb9u/foo" || exit 11;test -w "/tmp/tmp6e5kpb9u/foo" || exit 12;test -x "/tmp/tmp6e5kpb9u/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmp6e5kpb9u/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp6e5kpb9u/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp6e5kpb9u/foo" || exit 11;test -w "/tmp/tmp6e5kpb9u/foo" || exit 12;test -x "/tmp/tmp6e5kpb9u/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmp6e5kpb9u/foo /tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmp6e5kpb9u/foo', '/tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmp6e5kpb9u/foo on /tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/5426.lock
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:138 Snapshots.test_exclude] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpkw5_bves/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpkw5_bves/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpezww7y8w/ --include=/tmp/ --exclude=bar/baz --include=/tmp/tmpezww7y8w/** --exclude=* / travis@localhost:/tmp/tmp6e5kpb9u/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpkw5_bves/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpkw5_bves/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpezww7y8w/ --include=/tmp/ --exclude=bar/baz --include=/tmp/tmpezww7y8w/** --exclude=* / travis@localhost:/tmp/tmp6e5kpb9u/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:138 Snapshots.test_exclude] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmp6e5kpb9u/foo from /tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/8C671E85/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpkw5_bves/.local/share/backintime/mnt/5426.lock
_________________________ TakeSSH.test_four_snapshots __________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_four_snapshots>
sleep = <MagicMock name='sleep' id='136649246958096'>

    @patch('time.sleep')  # speed up unittest
    def test_four_snapshots(self, sleep):
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
        # Note: 'self.sn' is of type 'Snapshots'
        # First boolean: Snapshot succeeded
        # Second boolean: Error occurred
        self.assertListEqual(
                [True, False],  # Snapshot without error
>               self.sn.takeSnapshot(
                    sid=sid1,
                    now=now,
                    include_folders=[
                        (self.include.name, 0),  # '0' means it is a file
                    ]
                )
        )

test/test_takeSnapshot.py:51: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821d2d880>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmp59xydea8/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp59xydea8/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp59xydea8/foo" || exit 11;test -w "/tmp/tmp59xydea8/foo" || exit 12;test -x "/tmp/tmp59xydea8/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmp59xydea8/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp59xydea8/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp59xydea8/foo" || exit 11;test -w "/tmp/tmp59xydea8/foo" || exit 12;test -x "/tmp/tmp59xydea8/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmp59xydea8/foo /tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmp59xydea8/foo', '/tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmp59xydea8/foo on /tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/5426.lock
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:51 Snapshots.test_four_snapshots] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp62u8wi2i/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmp62u8wi2i/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpm35l0cza/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpm35l0cza/** --exclude=* / travis@localhost:/tmp/tmp59xydea8/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp62u8wi2i/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmp62u8wi2i/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpm35l0cza/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpm35l0cza/** --exclude=* / travis@localhost:/tmp/tmp59xydea8/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:51 Snapshots.test_four_snapshots] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmp59xydea8/foo from /tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/9F5FD3A9/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmp62u8wi2i/.local/share/backintime/mnt/5426.lock
___________________________ TakeSSH.test_new_exists ____________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_new_exists>
sleep = <MagicMock name='sleep' id='136649246718768'>

    @patch('time.sleep') # speed up unittest
    def test_new_exists(self, sleep):
        new_snapshot = snapshots.NewSnapshot(self.cfg)
        new_snapshot.makeDirs()
        with open(new_snapshot.path('leftover'), 'wt') as f:
            f.write('foo')
    
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:214: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821cf2270>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmpdzggm3v6/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpdzggm3v6/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpdzggm3v6/foo" || exit 11;test -w "/tmp/tmpdzggm3v6/foo" || exit 12;test -x "/tmp/tmpdzggm3v6/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmpdzggm3v6/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpdzggm3v6/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpdzggm3v6/foo" || exit 11;test -w "/tmp/tmpdzggm3v6/foo" || exit 12;test -x "/tmp/tmpdzggm3v6/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmpdzggm3v6/foo /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmpdzggm3v6/foo', '/tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmpdzggm3v6/foo on /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/5426.lock
INFO: [common/snapshots.py:1309 takeSnapshot] Removing leftover snapshot new_snapshot directory from last run
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
DEBUG: [common/snapshots.py:1318 Execute.takeSnapshot] Call command "rsync -a --delete -s --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 /tmp/tmp40wtak85/ travis@localhost:/tmp/tmpdzggm3v6/foo/backintime/test-host/test-user/1/new_snapshot"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync -a --delete -s --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 /tmp/tmp40wtak85/ travis@localhost:/tmp/tmpdzggm3v6/foo/backintime/test-host/test-user/1/new_snapshot'
DEBUG: [common/snapshots.py:1318 Execute.takeSnapshot] Command "rsync -a --delet" returns 0
ERROR: [common/snapshots.py:2706 makeDirs] Failed to make dirs '/tmp/tmpxyy8jxqk/.local/share/backintime/mnt/1_5426/backintime/test-host/test-user/1/new_snapshot/backup': [Errno 17] File exists: '/tmp/tmpxyy8jxqk/.local/share/backintime/mnt/1_5426/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:214 Snapshots.test_new_exists] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpxyy8jxqk/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpxyy8jxqk/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmp5f1l1kb1/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmp5f1l1kb1/** --exclude=* / travis@localhost:/tmp/tmpdzggm3v6/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpxyy8jxqk/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpxyy8jxqk/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmp5f1l1kb1/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmp5f1l1kb1/** --exclude=* / travis@localhost:/tmp/tmpdzggm3v6/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:214 Snapshots.test_new_exists] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmpdzggm3v6/foo from /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/24408F7/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpxyy8jxqk/.local/share/backintime/mnt/5426.lock
_______________________ TakeSSH.test_new_exists_continue _______________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_new_exists_continue>
sleep = <MagicMock name='sleep' id='136649247413296'>

    @patch('time.sleep') # speed up unittest
    def test_new_exists_continue(self, sleep):
        new_snapshot = snapshots.NewSnapshot(self.cfg)
        new_snapshot.makeDirs()
        with open(new_snapshot.path('leftover'), 'wt') as f:
            f.write('foo')
        new_snapshot.saveToContinue = True
    
        now = datetime.today() - timedelta(minutes = 6)
        sid1 = snapshots.SID(now, self.cfg)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:229: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821d9d940>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmptekk121e/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmptekk121e/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmptekk121e/foo" || exit 11;test -w "/tmp/tmptekk121e/foo" || exit 12;test -x "/tmp/tmptekk121e/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmptekk121e/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmptekk121e/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmptekk121e/foo" || exit 11;test -w "/tmp/tmptekk121e/foo" || exit 12;test -x "/tmp/tmptekk121e/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmptekk121e/foo /tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmptekk121e/foo', '/tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmptekk121e/foo on /tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/5426.lock
INFO: [common/snapshots.py:1282 Snapshots.takeSnapshot] Found leftover snapshot 'new_snapshot' that can be continued.
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:229 Snapshots.test_new_exists_continue] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmphrqhjd23/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmphrqhjd23/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpkeh4h646/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpkeh4h646/** --exclude=* / travis@localhost:/tmp/tmptekk121e/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmphrqhjd23/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmphrqhjd23/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpkeh4h646/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpkeh4h646/** --exclude=* / travis@localhost:/tmp/tmptekk121e/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:229 Snapshots.test_new_exists_continue] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmptekk121e/foo from /tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/DDEBDE25/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmphrqhjd23/.local/share/backintime/mnt/5426.lock
________________________ TakeSSH.test_spaces_in_exclude ________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_spaces_in_exclude>
sleep = <MagicMock name='sleep' id='136649247423520'>

    @patch('time.sleep') # speed up unittest
    def test_spaces_in_exclude(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        exclude = os.path.join(self.include.name, 'test path with spaces')
        generic.create_test_files(exclude)
        self.cfg.setExclude([exclude])
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(self.include.name, 0),]))

test/test_takeSnapshot.py:161: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821d9f980>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmpzxbemqqi/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpzxbemqqi/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpzxbemqqi/foo" || exit 11;test -w "/tmp/tmpzxbemqqi/foo" || exit 12;test -x "/tmp/tmpzxbemqqi/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmpzxbemqqi/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmpzxbemqqi/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmpzxbemqqi/foo" || exit 11;test -w "/tmp/tmpzxbemqqi/foo" || exit 12;test -x "/tmp/tmpzxbemqqi/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmpzxbemqqi/foo /tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmpzxbemqqi/foo', '/tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmpzxbemqqi/foo on /tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/5426.lock
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:161 Snapshots.test_spaces_in_exclude] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpq71r5ag9/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpq71r5ag9/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmplzvoa8of/ --include=/tmp/ --exclude=/tmp/tmplzvoa8of/test path with spaces --include=/tmp/tmplzvoa8of/** --exclude=* / travis@localhost:/tmp/tmpzxbemqqi/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpq71r5ag9/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmpq71r5ag9/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmplzvoa8of/ --include=/tmp/ --exclude=/tmp/tmplzvoa8of/test path with spaces --include=/tmp/tmplzvoa8of/** --exclude=* / travis@localhost:/tmp/tmpzxbemqqi/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:161 Snapshots.test_spaces_in_exclude] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmpzxbemqqi/foo from /tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/DC8D92D1/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmpq71r5ag9/.local/share/backintime/mnt/5426.lock
________________________ TakeSSH.test_spaces_in_include ________________________

self = <test.test_takeSnapshot.TakeSSH testMethod=test_spaces_in_include>
sleep = <MagicMock name='sleep' id='136649246688416'>

    @patch('time.sleep') # speed up unittest
    def test_spaces_in_include(self, sleep):
        now = datetime.today()
        sid1 = snapshots.SID(now, self.cfg)
        include = os.path.join(self.include.name, 'test path with spaces')
        generic.create_test_files(include)
    
>       self.assertListEqual([True, False], self.sn.takeSnapshot(sid1, now, [(include, 0),]))

test/test_takeSnapshot.py:118: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
snapshots.py:1493: in takeSnapshot
    self.backupPermissions(new_snapshot)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <snapshots.Snapshots object at 0x7c4821cf0ec0>, sid = new_snapshot

    def backupPermissions(self, sid):
        """
        Save permissions (owner, group, read-, write- and executable)
        for all files in Snapshot ``sid`` into snapshots fileInfoDict.
    
        Args:
            sid (SID):  snapshot that should be scanned
    
        Returns:
            int: Return code of rsync.
        """
        logger.info('Save permissions', self)
        self.setTakeSnapshotMessage(0, _('Saving permissions…'))
    
        fileInfoDict = FileInfoDict()
    
        if self.config.snapshotsMode() == 'ssh_encfs':
            decode = encfstools.Decode(self.config, False)
        else:
>           decode = encfstools.Bounce()
E           AttributeError: module 'encfstools' has no attribute 'Bounce'

snapshots.py:1182: AttributeError
----------------------------- Captured stderr call -----------------------------
DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
WARNING: [common/tools.py:2432 __init__] Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: [common/tools.py:2434 __init__] D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: [common/tools.py:2435 __init__] Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 7
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/5426.lock
DEBUG: [common/sshtools.py:752 SSH.checkPingHost] Check ping host "localhost:22"
DEBUG: [common/sshtools.py:771 SSH.checkPingHost] Host "localhost:22" is available
DEBUG: [common/sshtools.py:485 SSH.checkLogin] Check login
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-o', 'PreferredAuthentications=publickey', '-p', '22', 'travis@localhost', 'exit']
DEBUG: [common/sshtools.py:661 SSH.checkRemoteFolder] Check remote directory
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', 'travis@localhost', 'd=0;test -e "/tmp/tmp0d9xecei/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp0d9xecei/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp0d9xecei/foo" || exit 11;test -w "/tmp/tmp0d9xecei/foo" || exit 12;test -x "/tmp/tmp0d9xecei/foo" || exit 13;exit 20']
DEBUG: [common/sshtools.py:688 SSH.checkRemoteFolder] Call command: ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 travis@localhost d=0;test -e "/tmp/tmp0d9xecei/foo" || d=1;test $d -eq 1 && mkdir "/tmp/tmp0d9xecei/foo"; err=$?;test $d -eq 1 && exit $err;test -d "/tmp/tmp0d9xecei/foo" || exit 11;test -w "/tmp/tmp0d9xecei/foo" || exit 12;test -x "/tmp/tmp0d9xecei/foo" || exit 13;exit 20
DEBUG: [common/sshtools.py:698 SSH.checkRemoteFolder] Command returncode: 20
DEBUG: [common/sshtools.py:205 SSH._mount] Call mount command: sshfs -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 -o idmap=user -o cache_dir_timeout=2 -o cache_stat_timeout=2 travis@localhost:/tmp/tmp0d9xecei/foo /tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/mountpoint
DEBUG: [common/sshtools.py:217 _mount] Execute SSHFS command ['sshfs', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22', '-o', 'idmap=user', '-o', 'cache_dir_timeout=2', '-o', 'cache_stat_timeout=2', 'travis@localhost:/tmp/tmp0d9xecei/foo', '/tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/mountpoint'].
INFO: [common/mount.py:533 SSH.mount] mount ssh: travis@localhost:/tmp/tmp0d9xecei/foo on /tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/mountpoint
DEBUG: [common/mount.py:831 SSH.mountLockAquire] Set mount lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/5426.lock
DEBUG: [common/config.py:694 Config.sshCommand] SSH command: ['ssh', '-o', 'ServerAliveInterval=240', '-o', 'LogLevel=Error', '-o', 'IdentityFile=/home/travis/.ssh/id_rsa', '-p', '22']
INFO: [common/snapshots.py:1370 Snapshots.takeSnapshot] Call rsync to take the snapshot
DEBUG: [test/test_takeSnapshot.py:118 Snapshots.test_spaces_in_include] Call command "rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp1evqnxta/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmp1evqnxta/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpflallo3m/test path with spaces/ --include=/tmp/tmpflallo3m/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpflallo3m/test path with spaces/** --exclude=* / travis@localhost:/tmp/tmp0d9xecei/foo/backintime/test-host/test-user/1/new_snapshot/backup"
DEBUG: [common/tools.py:2616 run] Starting command 'rsync --recursive --times --devices --specials --hard-links --human-readable -s --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/travis/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmp1evqnxta/.local/share/backintime/mnt/1_5426 --exclude=/tmp/tmp1evqnxta/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpflallo3m/test path with spaces/ --include=/tmp/tmpflallo3m/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --exclude=/swapfile --exclude=SingletonLock --exclude=SingletonCookie --exclude=lock --include=/tmp/tmpflallo3m/test path with spaces/** --exclude=* / travis@localhost:/tmp/tmp0d9xecei/foo/backintime/test-host/test-user/1/new_snapshot/backup'
DEBUG: [test/test_takeSnapshot.py:118 Snapshots.test_spaces_in_include] Command "rsync --recursiv" returns 0
INFO: [common/snapshots.py:1093 Snapshots.backupConfig] Save config file
INFO: [common/snapshots.py:1174 Snapshots.backupPermissions] Save permissions
DEBUG: [common/tools.py:1521 keyringSupported] Keyring config file directory: /home/travis/.config/python_keyring
DEBUG: [common/tools.py:1536 keyringSupported] Available keyring backends:
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.fail.Keyring (priority: 0)
DEBUG: [common/tools.py:1540 keyringSupported] keyring.backends.chainer.ChainerBackend (priority: -1)
DEBUG: [common/tools.py:1595 keyringSupported] Not found Metaclasses: ['keyring.backends.Gnome.Keyring', 'keyring.backends.kwallet.Keyring', 'keyring.backend.SecretServiceKeyring', 'keyring.backend.GnomeKeyring', 'keyring.backend.KDEWallet']
DEBUG: [common/tools.py:1596 keyringSupported] Available supported backends: [<class 'keyring.backends.SecretService.Keyring'>, <class 'keyring.backends.kwallet.DBusKeyring'>, <class 'keyring.backends.chainer.ChainerBackend'>]
DEBUG: [common/tools.py:1602 keyringSupported] No appropriate keyring found. 'keyring.backends.fail' can't be used with BackInTime.
DEBUG: [common/tools.py:1604 keyringSupported] See https://github.com/bit-team/backintime on how to fix this by creating a keyring config file.
DEBUG: [common/mount.py:151 Mount.__init__] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.__init__] Call command: ['/home/travis/build/bit-team/backintime/common/backintime', 'pw-cache', 'start']
DEBUG: [plugins/usercallbackplugin.py:71 UserCallbackPlugin.callback] Call user-callback: /tmp/bit.3j8mc915/config_path/user-callback 1 Main profile 8
ERROR: [plugins/usercallbackplugin.py:100 UserCallbackPlugin.callback] Exception when trying to run user callback: No such file or directory
DEBUG: [common/sshtools.py:292 SSH.startSshAgent] ssh-agent already running. Skip starting a new one.
DEBUG: [common/sshtools.py:474 SSH.unlockSshAgent] Private key /home/travis/.ssh/id_rsa is already unlocked in ssh agent
DEBUG: [common/mount.py:807 SSH.mountProcessLockAcquire] Acquire mountprocess lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/5426.lock
INFO: [common/mount.py:587 SSH.umount] unmount ssh: travis@localhost:/tmp/tmp0d9xecei/foo from /tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/mountpoint
DEBUG: [common/mount.py:854 SSH.mountLockRelease] Remove mount lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/48360B24/locks/5426.lock
DEBUG: [common/mount.py:818 SSH.mountProcessLockRelease] Release mountprocess lock /tmp/tmp1evqnxta/.local/share/backintime/mnt/5426.lock
=========================== short test summary info ============================
FAILED test/test_backintime.py::BackInTime::test_local_snapshot_is_successful - AssertionError: 1 != 0 : Returncode: 1
stderr: WARNING: Failed to connect to Udev serviceHelper daemon via D-Bus: org.freedesktop.DBus.Error.ServiceUnknown
WARNING: D-Bus message: The name net.launchpad.backintime.serviceHelper was not provided by any .service files
WARNING: Udev-based profiles cannot be changed or checked due to Udev serviceHelper connection failure
INFO: Lock
INFO: Take a new snapshot. Profile: 1 Main profile
INFO: Call rsync to take the snapshot
INFO: Save config file
INFO: Save permissions
Traceback (most recent call last):
  File "/home/travis/build/bit-team/backintime/common/backintime.py", line 1335, in <module>
    startApp()
  File "/home/travis/build/bit-team/backintime/common/backintime.py", line 585, in startApp
    args.func(args)
  File "/home/travis/build/bit-team/backintime/common/backintime.py", line 852, in backup
    ret = takeSnapshot(cfg, force)
  File "/home/travis/build/bit-team/backintime/common/backintime.py", line 100, in takeSnapshot
    ret = snapshots.Snapshots(cfg).backup(force)
  File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 896, in backup
    ret_val, ret_error = self.takeSnapshot(
  File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 1493, in takeSnapshot
    self.backupPermissions(new_snapshot)
  File "/home/travis/build/bit-team/backintime/common/snapshots.py", line 1182, in backupPermissions
    decode = encfstools.Bounce()
AttributeError: module 'encfstools' has no attribute 'Bounce'

stdout: 
Back In Time
Version: 1.5.4-rc1

Back In Time comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `backintime --license' for details.
FAILED test/test_lint.py::MirrorMirrorOnTheWall::test010_ruff_default_ruleset - AssertionError: 0 != 1 : Ruff found 1 problem(s).
FAILED test/test_lint.py::MirrorMirrorOnTheWall::test020_flake8_default_ruleset - AssertionError: 0 != 2 : Flake8 found 2 problem(s).
FAILED test/test_lint.py::MirrorMirrorOnTheWall::test030_pylint_default_ruleset - AssertionError: 0 != 8 : PyLint found 8 problems.
FAILED test/test_lint.py::MirrorMirrorOnTheWall::test050_pylint_exclusive_ruleset - AssertionError: 0 != 2 : PyLint found 2 problems.
FAILED test/test_plugin_usercallback.py::SystemTest::test_local_snapshot - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_snapshots.py::SnapshotWithSID::test_backup_permissions - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_snapshots.py::SshPermissions::test_backup_permissions - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_error - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_exclude - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_four_snapshots - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_new_exists - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_new_exists_continue - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_spaces_in_exclude - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::Take::test_spaces_in_include - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_error - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_exclude - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_four_snapshots - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_new_exists - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_new_exists_continue - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_spaces_in_exclude - AttributeError: module 'encfstools' has no attribute 'Bounce'
FAILED test/test_takeSnapshot.py::TakeSSH::test_spaces_in_include - AttributeError: module 'encfstools' has no attribute 'Bounce'
============ 22 failed, 404 passed, 1 skipped in 126.91s (0:02:06) =============
make: *** [Makefile:620: unittest-v] Error 1
travis_time:end:042fcc22:start=1739772727252187837,finish=1739772854908153185,duration=127655965348,event=script
The command "make unittest-v" exited with 2.
travis_time:start:02b007f0
$ cd ..
travis_time:end:02b007f0:start=1739772854912306815,finish=1739772854914903935,duration=2597120,event=script
The command "cd .." exited with 0.
travis_time:start:08417e56
$ cd qt
travis_time:end:08417e56:start=1739772854918713450,finish=1739772854921228424,duration=2514974,event=script
The command "cd qt" exited with 0.
travis_time:start:21cd4a18
$ ./configure
Replacement of python path with "/usr/bin/python3" successful.
All OK. Now run:
    make
    sudo make install
travis_time:end:21cd4a18:start=1739772854924929151,finish=1739772855001917428,duration=76988277,event=script
The command "./configure" exited with 0.
travis_time:start:35b4b073
$ make
# Man pages
for i in $(ls -1 man/C/); do case $i in *.gz|*~) continue;; *) gzip -n --best -c man/C/$i > man/C/${i}.gz;; esac; done
travis_time:end:35b4b073:start=1739772855005973640,finish=1739772855014599268,duration=8625628,event=script
The command "make" exited with 0.
travis_time:start:0b42b5fc
$ pytest --verbose
============================= test session starts ==============================
platform linux -- Python 3.12.4, pytest-8.3.1, pluggy-1.5.0 -- /home/travis/virtualenv/python3.12.4/bin/python
cachedir: .pytest_cache
rootdir: /home/travis/build/bit-team/backintime/qt
plugins: pyfakefs-5.7.4
collecting ... 
collected 9 items                                                              

test/test_lint.py::MirrorMirrorOnTheWall::test005_ensure_linter_versions PASSED [ 11%]
test/test_lint.py::MirrorMirrorOnTheWall::test010_ruff_default_ruleset PASSED [ 22%]
test/test_lint.py::MirrorMirrorOnTheWall::test020_flake8_default_ruleset PASSED [ 33%]
test/test_lint.py::MirrorMirrorOnTheWall::test030_pylint_default_ruleset PASSED [ 44%]
test/test_lint.py::MirrorMirrorOnTheWall::test050_pylint_exclusive_ruleset PASSED [ 55%]
test/test_statedata.py::IsSingleton::test_content PASSED                 [ 66%]
test/test_statedata.py::IsSingleton::test_identity PASSED                [ 77%]
test/test_statedata.py::Properties::test_profile_not_exist PASSED        [ 88%]
test/test_statedata.py::Properties::test_read_empty_global PASSED        [100%]

============================== 9 passed in 27.94s ==============================
travis_time:end:0b42b5fc:start=1739772855018533231,finish=1739772883285042033,duration=28266508802,event=script
The command "pytest --verbose" exited with 0.


Done. Your build exited with 1.