summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-08-30 19:28:59 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-08-30 19:28:59 +0000
commit0acd502afe118a82f480d184271fe60e5551746f (patch)
tree100dd06543c384a68e3ced4031e07340d4928cfa /clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp
parente600025528eaa1c43e5084bab219f8f467b4731e (diff)
downloadbcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.tar.gz
bcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.zip
cpp11-migrate: Refactor for driver model of operation
Massive simplification of how replacements and file overrides are handled by the migrator: * Sources and headers are all treated the same. * All replacements for a given translation unit are stored in the same TranslationUnitReplacements structure. * Change tracking is updated only from main file; no need for propagating "is tracking" flag around. * Transform base class no longer responsible for applying replacements. They are simply stored and main() looks after deduplication and application. * Renamed -yaml-only to -serialize-replacements. Same restrictions apply: Can only request one transform. New restriction: formatting cannot also be turned on since it's basically a transform. * If -serialize-replacements is requested, changes to files will not be applied on disk. * Changed behaviour of function generating names for serialized replacements: Only the main source file goes into the name of the file since a file may contain changes for multiple different files. * Updated HeaderReplacements LIT test for new serialization behaviour. * Replaced old test that ensures replacements are not serialized if -serialize-replacements is not provided. New version ensures changes are made directly to all files in the translation unit. * Updated unit tests. * Due to major simplification of structures in FileOverrides.h, the FileOverridesTest is quite a bit simpler now. Differential Revision: http://llvm-reviews.chandlerc.com/D1545 llvm-svn: 189689
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp')
-rw-r--r--clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp33
1 files changed, 19 insertions, 14 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp
index fcde6b81db4..b4b9a365478 100644
--- a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp
+++ b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp
@@ -9,6 +9,7 @@
#include "Core/Reformatting.h"
#include "Core/FileOverrides.h"
+#include "Core/Refactoring.h"
#include "gtest/gtest.h"
#include "VirtualFileHelper.h"
@@ -19,9 +20,9 @@ namespace {
// convenience function to create a ChangedRanges containing one Range
ChangedRanges makeChangedRanges(unsigned Offset, unsigned Length) {
ChangedRanges Changes;
- Replacements Replaces;
+ ReplacementsVec Replaces;
- Replaces.insert(Replacement("", Offset, 0, std::string(Length, '~')));
+ Replaces.push_back(Replacement("", Offset, 0, std::string(Length, '~')));
Changes.adjustChangedRanges(Replaces);
return Changes;
}
@@ -35,16 +36,20 @@ TEST(Reformatter, SingleReformat) {
Reformatter ChangesReformatter(format::getLLVMStyle());
ChangedRanges Changes = makeChangedRanges(0, 6);
- tooling::Replacements Replaces = ChangesReformatter.reformatSingleFile(
- FileName, Changes, VFHelper.getNewSourceManager());
-
- SourceOverrides Overrides(FileName, /*TrackChanges=*/false);
- Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager());
-
- std::string Expected, Result;
-
- Expected = "int a;\n"
- "int b;\n";
- Result = Overrides.getMainFileContent();
- EXPECT_EQ(Expected, Result);
+ tooling::ReplacementsVec Replaces;
+ ChangesReformatter.reformatSingleFile(
+ FileName, Changes, VFHelper.getNewSourceManager(), Replaces);
+
+ // We expect the code above to reformatted like so:
+ //
+ // int a;
+ // int b;
+ //
+ // This test is slightly fragile since there's more than one Replacement that
+ // results in the above change. However, testing the result of applying the
+ // replacement is more trouble than it's worth in this context.
+ ASSERT_EQ(1u, Replaces.size());
+ EXPECT_EQ(3u, Replaces[0].getOffset());
+ EXPECT_EQ(2u, Replaces[0].getLength());
+ EXPECT_EQ(" ", Replaces[0].getReplacementText());
}
OpenPOWER on IntegriCloud