From 6c860bf8506f7068bbfc876cd9239a3c91d0e932 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 21 Jan 2014 14:02:40 -0800 Subject: [PATCH] Add even more Subversion unit tests Summary: Ref T4327. Adds additional tests: - Property changes on the root directory (which has special handling). - Copying a file from a previous revision (this is `svn cp svn://server.com/root/some_file@123 some_file`). - "Multicopying" a file: this is where a file is copied to several places and moved in the same commit. Test Plan: Ran unit tests. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T4327 Differential Revision: https://secure.phabricator.com/D8018 --- .../engine/__tests__/data/CHC.svn.tgz | Bin 11360 -> 12028 bytes .../PhabricatorChangeParserTestCase.php | 92 ++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/src/applications/repository/engine/__tests__/data/CHC.svn.tgz b/src/applications/repository/engine/__tests__/data/CHC.svn.tgz index dbd99c1f1b4f4eea597bd0412537cc4d066b5c0e..e12a64c97f9fd9eb5ed80149f296ebb3d18bbf3b 100644 GIT binary patch delta 11879 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 array( + array( + '/', + null, + null, + DifferentialChangeType::TYPE_CHILD, + DifferentialChangeType::FILE_DIRECTORY, + 0, + 15, + ), + array( + '/file_copy', + null, + null, + DifferentialChangeType::TYPE_MULTICOPY, + DifferentialChangeType::FILE_NORMAL, + 1, + 15, + ), + array( + '/file_copy_x', + '/file_copy', + '12', + DifferentialChangeType::TYPE_MOVE_HERE, + DifferentialChangeType::FILE_NORMAL, + 1, + 15, + ), + array( + '/file_copy_y', + '/file_copy', + '12', + DifferentialChangeType::TYPE_MOVE_HERE, + DifferentialChangeType::FILE_NORMAL, + 1, + 15, + ), + array( + '/file_copy_z', + '/file_copy', + '12', + DifferentialChangeType::TYPE_MOVE_HERE, + DifferentialChangeType::FILE_NORMAL, + 1, + 15, + ), + ), + + // Add a file from a different revision + '14' => array( + array( + '/', + null, + null, + DifferentialChangeType::TYPE_CHILD, + DifferentialChangeType::FILE_DIRECTORY, + 0, + 14, + ), + array( + '/file', + null, + null, + DifferentialChangeType::TYPE_COPY_AWAY, + DifferentialChangeType::FILE_NORMAL, + 0, + 14, + ), + array( + '/file_1', + '/file', + '1', + DifferentialChangeType::TYPE_COPY_HERE, + DifferentialChangeType::FILE_NORMAL, + 1, + 14, + ), + ), + + // Property change on "/" + '13' => array( + array( + '/', + null, + null, + DifferentialChangeType::TYPE_CHANGE, + DifferentialChangeType::FILE_DIRECTORY, + 1, + 13, + ), + ), + // Copy a directory, removing and adding files to the copy '12' => array( array(