cjnaz / rclonesync-V2

A Bidirectional Cloud Sync Utility using rclone
MIT License
355 stars 39 forks source link

Tests for Onedrive #12

Closed AlexEshoo closed 6 years ago

AlexEshoo commented 6 years ago

I ran the test suite using onedrive as a remote and it says there were a few errors, but I'm a little confused what it failed on.

The output is here: https://pastebin.com/raw/1vERpFRw

I would like to use rclonesync for onedrive but I need to know if there are any problems first.

cjnaz commented 6 years ago

I reviewed your log and it looks good.

For others: The Github posted tests are run with local local. You can check your setup by first running the test suite with local local before switching to a remote path. There should only be timestamp miscompares in the dryrun test case.

When testing with a remote drive there will be a lot of miscompares. Diffs are run only on matching test run and golden results file names. For each test case

After studying the test run log and spot checking some of the LSL files, you can run the test suite with the --golden switch to update all of the golden files in each test case. Then running the test suite again should result in a clean run.

Note that rclone recently (in beta) added a switch to suppress the date stamp in rclone log output to supporting testing. I will post an rclonesync update soon which uses this rclone switch to eliminate the console log miscompares for the dryrun test case.

AlexEshoo commented 6 years ago

Is this an example of the logs you're talking about?

:MSG:   Issue rclonesync command
../rclonesync.py ./testdir/path1/ ./testdir/path2/ --verbose --workdir ./testwd/ --no-datetime-log
***** BiDirectional Sync for Cloud Services using rclone *****
Synching Path1  <./testdir/path1/>  with Path2  <./testdir/path2/>
Command line:  <Namespace(Path1='./testdir/path1/', Path2='./testdir/path2/', check_access=False, dry_run=False, filters_file=None, first_sync=False, force=False, max_deletes=50, no_datetime_log=True, rc_verbose=None, verbose=True, workdir='./testwd/')>
>>>>> Path1 Checking for Diffs
  Path1      File is newer                     - file2.txt
  Path1      File size is different            - file2.txt
  Path1      File was deleted                  - file4.txt
  Path1      File is newer                     - file5.txt
  Path1      File size is different            - file5.txt
  Path1      File was deleted                  - file6.txt
  Path1      File is newer                     - file7.txt
  Path1      File size is different            - file7.txt
  Path1      File is new                       - file11.txt
     6 file change(s) on Path1:    1 new,    3 newer,    0 older,    2 deleted
>>>>> Path2 Checking for Diffs
  Path2      File is newer                     - file1.txt
  Path2      File size is different            - file1.txt
  Path2      File was deleted                  - file3.txt
  Path2      File is newer                     - file5.txt
  Path2      File size is different            - file5.txt
  Path2      File is newer                     - file6.txt
  Path2      File size is different            - file6.txt
  Path2      File was deleted                  - file7.txt
  Path2      File is new                       - file10.txt
     6 file change(s) on Path2:    1 new,    3 newer,    0 older,    2 deleted
>>>>> Applying changes on Path2 to Path1
  Path2      Copying to Path1                  - ./testdir/path1/file1.txt
  Path2      Copying to Path1                  - ./testdir/path1/file10.txt
  Path1      Deleting file                     - ./testdir/path1/file3.txt
  WARNING    Changed in both Path1 and Path2   - file5.txt
  Path2      Copying to Path1                  - ./testdir/path1/file5.txt_Path2
  Path1      Renaming Path1 copy               - ./testdir/path1/file5.txt_Path1
  WARNING    Deleted on Path1 and also changed on Path2 - file6.txt
  Path2      Copying to Path1                  - ./testdir/path1/file6.txt
>>>>> Synching Path1 to Path2
>>>>> rmdirs Path1
>>>>> rmdirs Path2
>>>>> Refreshing Path1 and Path2 lsl files
>>>>> Successful run.  All done.

If so are you saying that the paths in the Applying changes on Path2 to Path1 section are expected to be changed in this case?

cjnaz commented 6 years ago

This is the local local test run. This is as expected. The >>>>> Successful run. All done. indicates that the script is happy - that all copy/delete/sync operations passed. The test script goes on to compare the console log file and the final LSL files, which probably also match, so the test script should also indicate PASSED.

Now, if you run the test suite with Onedrive: as one of the paths then the test run files will have the new/different path in them, so they will miscompare with the golden files. If you are really concerned whether rclonesync is working correctly with the remote then you will have to carefully look at the differences between the test run and golden files for each test to make sure that the only differences are the paths.

My take away is that the test run looks like it should, given that the golden files are from a local local run and your test run was local Onedrive:. If you want the test run to run clean then you can run with --golden to replace the golden files with the current run results so that the next test run passes. Note that the DryRun test will continue to miscompare due to the date stamps in the output.

cjnaz commented 6 years ago

I think you are good to go. It is wise to have a backup of your sync data in case something goes wrong. Thanks for testing with Onedrive:!

cjnaz commented 6 years ago

Any open issues? May I close this issue?

AlexEshoo commented 6 years ago

Thanks for your reply, I'm all set, you can close it