diff options
author | Xavier Ducrohet <xav@android.com> | 2013-04-04 12:27:55 -0700 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2013-04-04 12:27:55 -0700 |
commit | 85d76628e7d82bc8091a2a5858065dec35d04b8d (patch) | |
tree | 32c3154107f8172e880138b716e61a46ac83daa6 /builder/src/test | |
parent | 70d8da910ca4898a36e6dc68609bd7ca90a239a3 (diff) | |
download | build-85d76628e7d82bc8091a2a5858065dec35d04b8d.tar.gz |
Move the resource/asset merger to sdk-common
Also move some required classes to sdk-common and testutils.
Change-Id: I8d5c9eeb75bcf450a01dda2262b41ae8fc0f6817
Diffstat (limited to 'builder/src/test')
79 files changed, 5 insertions, 2550 deletions
diff --git a/builder/src/test/java/com/android/builder/TestUtils.java b/builder/src/test/java/com/android/builder/TestUtils.java deleted file mode 100644 index 07e356b..0000000 --- a/builder/src/test/java/com/android/builder/TestUtils.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder; - -import junit.framework.TestCase; - -import java.io.File; -import java.io.IOException; - -/** - * Utility methods to deal with loading the test data. - */ -public class TestUtils { - - /** - * returns a File for the subfolder of the test resource data. - * - * This is basically "src/test/resources/testData/$name". - * - * Note that this folder is relative to the root project which is where gradle - * sets the current working dir when running the tests. - * - * If you need a full folder path, use {@link #getCanonicalRoot(String...)}. - * - * @param names the names of the subfolders. - * - * @return a File - */ - public static File getRoot(String... names) { - File root = null; - for (String name : names) { - if (root == null) { - root = new File("src/test/resources/testData/" + name); - } else { - root = new File(root, name); - } - - TestCase.assertTrue("Test folder '" + name + "' does not exist!", - root.isDirectory()); - - } - - return root; - } - - /** - * returns a File for the subfolder of the test resource data. - * - * The full path is canonized. - * This is basically ".../src/test/resources/testData/$name". - * - * @param names the names of the subfolders. - * - * @return a File - */ - public static File getCanonicalRoot(String... names) throws IOException { - File root = getRoot(names); - return root.getCanonicalFile(); - } -} diff --git a/builder/src/test/java/com/android/builder/internal/incremental/DependencyDataTest.java b/builder/src/test/java/com/android/builder/internal/incremental/DependencyDataTest.java index 0a981eb..cba11f1 100644 --- a/builder/src/test/java/com/android/builder/internal/incremental/DependencyDataTest.java +++ b/builder/src/test/java/com/android/builder/internal/incremental/DependencyDataTest.java @@ -16,14 +16,14 @@ package com.android.builder.internal.incremental; -import com.android.builder.TestUtils; -import com.android.builder.resources.BaseTestCase; +import com.android.testutils.TestUtils; +import junit.framework.TestCase; import java.io.File; import java.io.IOException; import java.util.List; -public class DependencyDataTest extends BaseTestCase { +public class DependencyDataTest extends TestCase { public void testWindowsMode1() throws Exception { DependencyData data = getData("windows_mode1.d"); diff --git a/builder/src/test/java/com/android/builder/internal/incremental/FileManagerTest.java b/builder/src/test/java/com/android/builder/internal/incremental/FileManagerTest.java index 4492b50..3ac6bb3 100644 --- a/builder/src/test/java/com/android/builder/internal/incremental/FileManagerTest.java +++ b/builder/src/test/java/com/android/builder/internal/incremental/FileManagerTest.java @@ -16,8 +16,8 @@ package com.android.builder.internal.incremental; -import com.android.builder.TestUtils; -import com.android.builder.resources.FileStatus; +import com.android.ide.common.res2.FileStatus; +import com.android.testutils.TestUtils; import com.google.common.base.Charsets; import com.google.common.collect.Maps; import com.google.common.io.Files; diff --git a/builder/src/test/java/com/android/builder/resources/AssetMergerTest.java b/builder/src/test/java/com/android/builder/resources/AssetMergerTest.java deleted file mode 100755 index d9e1732..0000000 --- a/builder/src/test/java/com/android/builder/resources/AssetMergerTest.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.SdkConstants; -import com.android.builder.TestUtils; -import com.google.common.collect.ListMultimap; -import com.google.common.io.Files; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.regex.Pattern; - -public class AssetMergerTest extends BaseTestCase { - - private static AssetMerger sAssetMerger = null; - - public void testMergeByCount() throws Exception { - AssetMerger merger = getAssetMerger(); - - assertEquals(5, merger.size()); - } - - public void testMergedAssetsByName() throws Exception { - AssetMerger merger = getAssetMerger(); - - verifyResourceExists(merger, - "foo/icon.png", - "icon2.png", - "main.xml", - "values.xml", - "foo/foo.dat" - ); - } - - public void testMergeWrite() throws Exception { - AssetMerger merger = getAssetMerger(); - - File folder = getWrittenResources(); - - RecordingLogger logger = new RecordingLogger(); - - AssetSet writtenSet = new AssetSet("unused"); - writtenSet.addSource(folder); - writtenSet.loadFromFiles(logger); - - checkLogger(logger); - - // compare the two maps, but not using the full map as the set loaded from the output - // won't contains all versions of each AssetItem item. - compareResourceMaps(merger, writtenSet, false /*full compare*/); - } - - public void testMergeBlob() throws Exception { - AssetMerger merger = getAssetMerger(); - - File folder = Files.createTempDir(); - merger.writeBlobTo(folder); - - AssetMerger loadedMerger = new AssetMerger(); - loadedMerger.loadFromBlob(folder); - - compareResourceMaps(merger, loadedMerger, true /*full compare*/); - } - - /** - * Tests the path replacement in the merger.xml file loaded from testData/ - * @throws Exception - */ - public void testLoadingTestPathReplacement() throws Exception { - File root = TestUtils.getRoot("assets", "baseMerge"); - File fakeRoot = getMergedBlobFolder(root); - - AssetMerger assetMerger = new AssetMerger(); - assetMerger.loadFromBlob(fakeRoot); - checkSourceFolders(assetMerger); - - List<AssetSet> sets = assetMerger.getDataSets(); - for (AssetSet set : sets) { - List<File> sourceFiles = set.getSourceFiles(); - - // there should only be one - assertEquals(1, sourceFiles.size()); - - File sourceFile = sourceFiles.get(0); - assertTrue(String.format("File %s is located in %s", sourceFile, root), - sourceFile.getAbsolutePath().startsWith(root.getAbsolutePath())); - } - } - - public void testUpdate() throws Exception { - File root = getIncMergeRoot("basicFiles"); - File fakeRoot = getMergedBlobFolder(root); - AssetMerger assetMerger = new AssetMerger(); - assetMerger.loadFromBlob(fakeRoot); - checkSourceFolders(assetMerger); - - List<AssetSet> sets = assetMerger.getDataSets(); - assertEquals(2, sets.size()); - - RecordingLogger logger = new RecordingLogger(); - - // ---------------- - // first set is the main one, no change here - AssetSet mainSet = sets.get(0); - File mainFolder = new File(root, "main"); - - // touched/removed files: - File mainTouched = new File(mainFolder, "touched.png"); - mainSet.updateWith(mainFolder, mainTouched, FileStatus.CHANGED, logger); - checkLogger(logger); - - File mainRemoved = new File(mainFolder, "removed.png"); - mainSet.updateWith(mainFolder, mainRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - File mainAdded = new File(mainFolder, "added.png"); - mainSet.updateWith(mainFolder, mainAdded, FileStatus.NEW, logger); - checkLogger(logger); - - // ---------------- - // second set is the overlay one - AssetSet overlaySet = sets.get(1); - File overlayFolder = new File(root, "overlay"); - - // new/removed files: - File overlayAdded = new File(new File(overlayFolder, "foo"), "overlay_added.png"); - overlaySet.updateWith(overlayFolder, overlayAdded, FileStatus.NEW, logger); - checkLogger(logger); - - File overlayRemoved = new File(overlayFolder, "overlay_removed.png"); - overlaySet.updateWith(overlayFolder, overlayRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - // validate for duplicates - assetMerger.validateDataSets(); - - // check the content. - ListMultimap<String, AssetItem> mergedMap = assetMerger.getDataMap(); - - // check untouched.png file is WRITTEN - List<AssetItem> untouchedItem = mergedMap.get("untouched.png"); - assertEquals(1, untouchedItem.size()); - assertTrue(untouchedItem.get(0).isWritten()); - assertFalse(untouchedItem.get(0).isTouched()); - assertFalse(untouchedItem.get(0).isRemoved()); - - // check touched.png file is TOUCHED - List<AssetItem> touchedItem = mergedMap.get("touched.png"); - assertEquals(1, touchedItem.size()); - assertTrue(touchedItem.get(0).isWritten()); - assertTrue(touchedItem.get(0).isTouched()); - assertFalse(touchedItem.get(0).isRemoved()); - - // check removed file is REMOVED - List<AssetItem> removedItem = mergedMap.get("removed.png"); - assertEquals(1, removedItem.size()); - assertTrue(removedItem.get(0).isWritten()); - assertTrue(removedItem.get(0).isRemoved()); - - // check new overlay: two objects, last one is TOUCHED - List<AssetItem> overlayAddedItem = mergedMap.get("foo/overlay_added.png"); - assertEquals(2, overlayAddedItem.size()); - AssetItem newOverlay0 = overlayAddedItem.get(0); - assertTrue(newOverlay0.isWritten()); - assertFalse(newOverlay0.isTouched()); - AssetItem newOverlay1 = overlayAddedItem.get(1); - assertEquals(overlayAdded, newOverlay1.getSource().getFile()); - assertFalse(newOverlay1.isWritten()); - assertTrue(newOverlay1.isTouched()); - - // check removed overlay: two objects, last one is removed - List<AssetItem> overlayRemovedItem = mergedMap.get("overlay_removed.png"); - assertEquals(2, overlayRemovedItem.size()); - AssetItem overlayRemovedItem0 = overlayRemovedItem.get(0); - assertFalse(overlayRemovedItem0.isWritten()); - assertFalse(overlayRemovedItem0.isTouched()); - AssetItem overlayRemovedItem1 = overlayRemovedItem.get(1); - assertEquals(overlayRemoved, overlayRemovedItem1.getSource().getFile()); - assertTrue(overlayRemovedItem1.isWritten()); - assertTrue(overlayRemovedItem1.isRemoved()); - - // write and check the result of writeResourceFolder - // copy the current resOut which serves as pre incremental update state. - File resFolder = getFolderCopy(new File(root, "assetOut")); - - // write the content of the resource merger. - assetMerger.writeDataFolder(resFolder); - - // Check the content by checking the colors. All files should be green - checkImageColor(new File(resFolder, "untouched.png"), (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "touched.png"), (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "added.png"), (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "overlay_removed.png"), (int) 0xFF00FF00); - checkImageColor(new File(new File(resFolder, "foo"), "overlay_added.png"), (int) 0xFF00FF00); - - // also check the removed file is not there. - assertFalse(new File(resFolder, "removed.png").isFile()); - } - - public void testCheckValidUpdate() throws Exception { - // first merger - AssetMerger merger1 = createMerger(new String[][] { - new String[] { "main", ("/main/res1"), ("/main/res2") }, - new String[] { "overlay", ("/overlay/res1"), ("/overlay/res2") }, - }); - - // 2nd merger with different order source files in sets. - AssetMerger merger2 = createMerger(new String[][] { - new String[] { "main", ("/main/res2"), ("/main/res1") }, - new String[] { "overlay", ("/overlay/res1"), ("/overlay/res2") }, - }); - - assertTrue(merger1.checkValidUpdate(merger2.getDataSets())); - - // write merger1 on disk to test writing empty AssetSets. - File folder = Files.createTempDir(); - merger1.writeBlobTo(folder); - - // reload it - AssetMerger loadedMerger = new AssetMerger(); - loadedMerger.loadFromBlob(folder); - - String expected = merger1.toString(); - String actual = loadedMerger.toString(); - if (SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_WINDOWS) { - expected = expected.replaceAll(Pattern.quote(File.separator), "/"). - replaceAll("[A-Z]:/", "/"); - actual = actual.replaceAll(Pattern.quote(File.separator), "/"). - replaceAll("[A-Z]:/", "/"); - assertEquals("Actual: " + actual + "\nExpected: " + expected, expected, actual); - } else { - assertTrue("Actual: " + actual + "\nExpected: " + expected, - loadedMerger.checkValidUpdate(merger1.getDataSets())); - } - } - - - public void testUpdateWithRemovedOverlay() throws Exception { - // Test with removed overlay - AssetMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay", "/overlay/res1", "/overlay/res2" }, - }); - - // 2nd merger with different order source files in sets. - AssetMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithReplacedOverlays() throws Exception { - // Test with different overlays - AssetMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay", "/overlay/res1", "/overlay/res2" }, - }); - - // 2nd merger with different order source files in sets. - AssetMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithReorderedOverlays() throws Exception { - // Test with different overlays - AssetMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay1", "/overlay1/res1", "/overlay1/res2" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - }); - - // 2nd merger with different order source files in sets. - AssetMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - new String[] { "overlay1", "/overlay1/res1", "/overlay1/res2" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithRemovedSourceFile() throws Exception { - // Test with different source files - AssetMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - }); - - // 2nd merger with different order source files in sets. - AssetMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res1" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - /** - * Creates a fake merge with given sets. - * - * the data is an array of sets. - * - * Each set is [ setName, folder1, folder2, ...] - * - * @param data - * @return - */ - private static AssetMerger createMerger(String[][] data) { - AssetMerger merger = new AssetMerger(); - for (String[] setData : data) { - AssetSet set = new AssetSet(setData[0]); - merger.addDataSet(set); - for (int i = 1, n = setData.length; i < n; i++) { - set.addSource(new File(setData[i])); - } - } - - return merger; - } - - private static AssetMerger getAssetMerger() - throws DuplicateDataException, IOException { - if (sAssetMerger == null) { - File root = TestUtils.getRoot("assets", "baseMerge"); - - AssetSet res = AssetSetTest.getBaseAssetSet(); - - RecordingLogger logger = new RecordingLogger(); - - AssetSet overlay = new AssetSet("overlay"); - overlay.addSource(new File(root, "overlay")); - overlay.loadFromFiles(logger); - - checkLogger(logger); - - sAssetMerger = new AssetMerger(); - sAssetMerger.addDataSet(res); - sAssetMerger.addDataSet(overlay); - } - - return sAssetMerger; - } - - private static File getWrittenResources() throws DuplicateDataException, IOException, - ExecutionException, InterruptedException { - AssetMerger assetMerger = getAssetMerger(); - - File folder = Files.createTempDir(); - - assetMerger.writeDataFolder(folder); - - return folder; - } - - private File getIncMergeRoot(String name) throws IOException { - File root = TestUtils.getCanonicalRoot("assets", "incMergeData"); - return new File(root, name); - } - - private static File getFolderCopy(File folder) throws IOException { - File dest = Files.createTempDir(); - copyFolder(folder, dest); - return dest; - } - - private static void copyFolder(File from, File to) throws IOException { - if (from.isFile()) { - Files.copy(from, to); - } else if (from.isDirectory()) { - if (!to.exists()) { - to.mkdirs(); - } - - File[] children = from.listFiles(); - if (children != null) { - for (File f : children) { - copyFolder(f, new File(to, f.getName())); - } - } - } - } -} diff --git a/builder/src/test/java/com/android/builder/resources/AssetSetTest.java b/builder/src/test/java/com/android/builder/resources/AssetSetTest.java deleted file mode 100644 index cd4edd2..0000000 --- a/builder/src/test/java/com/android/builder/resources/AssetSetTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.builder.TestUtils; - -import java.io.File; -import java.io.IOException; - -public class AssetSetTest extends BaseTestCase { - - private static AssetSet sBaseResourceSet = null; - - public void testBaseAssetSetByCount() throws Exception { - AssetSet assetSet = getBaseAssetSet(); - assertEquals(4, assetSet.size()); - } - - public void testBaseAssetSetByName() throws Exception { - AssetSet assetSet = getBaseAssetSet(); - - verifyResourceExists(assetSet, - "foo/foo.dat", - "foo/icon.png", - "main.xml", - "values.xml" - ); - } - - public void testDupAssetSet() throws Exception { - File root = TestUtils.getRoot("assets", "dupSet"); - - AssetSet set = new AssetSet("main"); - set.addSource(new File(root, "assets1")); - set.addSource(new File(root, "assets2")); - boolean gotException = false; - RecordingLogger logger = new RecordingLogger(); - try { - set.loadFromFiles(logger); - } catch (DuplicateDataException e) { - gotException = true; - } - - assertTrue(gotException); - checkLogger(logger); - } - - static AssetSet getBaseAssetSet() throws DuplicateDataException, IOException { - if (sBaseResourceSet == null) { - File root = TestUtils.getRoot("assets", "baseSet"); - - RecordingLogger logger = new RecordingLogger(); - - sBaseResourceSet = new AssetSet("main"); - sBaseResourceSet.addSource(root); - sBaseResourceSet.loadFromFiles(logger); - checkLogger(logger); - } - - return sBaseResourceSet; - } -} diff --git a/builder/src/test/java/com/android/builder/resources/BaseTestCase.java b/builder/src/test/java/com/android/builder/resources/BaseTestCase.java deleted file mode 100644 index a784d4b..0000000 --- a/builder/src/test/java/com/android/builder/resources/BaseTestCase.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.google.common.base.Charsets; -import com.google.common.collect.ListMultimap; -import com.google.common.io.Files; -import junit.framework.TestCase; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.regex.Matcher; - -public abstract class BaseTestCase extends TestCase { - - protected void verifyResourceExists(DataMap<? extends DataItem> dataMap, - String... dataItemKeys) { - ListMultimap<String, ? extends DataItem> map = dataMap.getDataMap(); - - for (String resKey : dataItemKeys) { - List<? extends DataItem> items = map.get(resKey); - assertTrue("resource '" + resKey + "' is missing!", items.size() > 0); - } - } - - /** - * Compares two resource maps. - * - * if <var>fullCompare</var> is <code>true</code> then it'll make sure the multimaps contains - * the same number of items, otherwise it'll only checks that each resource key is present - * in both maps. - * - * @param dataMap1 the first resource Map - * @param dataMap2 the second resource Map - * @param fullCompare whether a full compare is requested. - */ - protected void compareResourceMaps(DataMap<? extends DataItem> dataMap1, - DataMap<? extends DataItem> dataMap2, - boolean fullCompare) { - assertEquals(dataMap1.size(), dataMap2.size()); - - // compare the resources are all the same - ListMultimap<String, ? extends DataItem> map1 = dataMap1.getDataMap(); - ListMultimap<String, ? extends DataItem> map2 = dataMap2.getDataMap(); - for (String key : map1.keySet()) { - List<? extends DataItem> items1 = map1.get(key); - List<? extends DataItem> items2 = map2.get(key); - if (fullCompare) { - assertEquals("Wrong size for " + key, items1.size(), items2.size()); - } else { - boolean map1HasItem = items1.size() > 0; - boolean map2HasItem = items2.size() > 0; - assertEquals("resource " + key + " missing from one map", map1HasItem, map2HasItem); - } - } - } - - protected static void checkImageColor(File file, int expectedColor) throws IOException { - assertTrue("File '" + file.getAbsolutePath() + "' does not exist.", file.isFile()); - - BufferedImage image = ImageIO.read(file); - int rgb = image.getRGB(0, 0); - assertEquals(String.format("Expected: 0x%08X, actual: 0x%08X for file %s", - expectedColor, rgb, file), - expectedColor, rgb); - } - - /** - * Returns a folder containing a merger blob data for the given test data folder. - * - * This is to work around the fact that the merger blob data contains full path, but we don't - * know where this project is located on the drive. This rewrites the blob to contain the - * actual folder. - * (The blobs written in the test data contains placeholders for the path root and path - * separators) - * - * @param folder - * @return - * @throws java.io.IOException - */ - protected static File getMergedBlobFolder(File folder) throws IOException { - File originalMerger = new File(folder, AssetMerger.FN_MERGER_XML); - - String content = Files.toString(originalMerger, Charsets.UTF_8); - - // search and replace $TOP$ with the root and $SEP$ with the platform separator. - content = content.replaceAll( - "\\$TOP\\$", Matcher.quoteReplacement(folder.getAbsolutePath())). - replaceAll("\\$SEP\\$", Matcher.quoteReplacement(File.separator)); - - File tempFolder = Files.createTempDir(); - Files.write(content, new File(tempFolder, AssetMerger.FN_MERGER_XML), Charsets.UTF_8); - - return tempFolder; - } - - /** - * Post {@link #getMergedBlobFolder(java.io.File)} check. After the DataMerger is created - * from the file generated, this checks that the file replacement works and all the files are - * where they are supposed to be. - * - * @param dataMerger - */ - protected void checkSourceFolders( - DataMerger<? extends DataItem, ? extends DataFile, ? extends DataSet> dataMerger) { - - // Loop on all the data sets. - for (DataSet<? extends DataItem, ? extends DataFile> set : dataMerger.getDataSets()) { - // get the source files and verify they exists. - List<File> files = set.getSourceFiles(); - for (File file : files) { - assertTrue("Not a folder: " + file.getAbsolutePath(), file.isDirectory()); - } - - // for each source file, also check that the files inside are in fact inside - // them. We don't check if those files are there though because the tests could - // be testing with missing files to simulate updates. - ListMultimap<String, ? extends DataItem> itemMap = set.getDataMap(); - - for (DataItem item : itemMap.values()) { - DataFile dataFile = item.getSource(); - File file = dataFile.getFile(); - - assertNotNull("Not in source file: " + file.getAbsolutePath(), - set.findMatchingSourceFile(file)); - } - } - } - - protected static void checkLogger(RecordingLogger logger) { - if (!logger.getErrorMsgs().isEmpty()) { - assertTrue(logger.getErrorMsgs().get(0), false); - } - } -} diff --git a/builder/src/test/java/com/android/builder/resources/NodeUtilsTest.java b/builder/src/test/java/com/android/builder/resources/NodeUtilsTest.java deleted file mode 100644 index 70d25e7..0000000 --- a/builder/src/test/java/com/android/builder/resources/NodeUtilsTest.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import junit.framework.TestCase; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -public class NodeUtilsTest extends TestCase { - - public void testBasicAttributes() throws Exception { - Document document = createDocument(); - - // create two nodes - Node node1 = document.createElement("N1"); - Node node2 = document.createElement("N2"); - - NodeUtils.addAttribute(document, node1, null, "foo", "bar"); - NodeUtils.addAttribute(document, node2, null, "foo", "bar"); - assertTrue(NodeUtils.compareAttributes(node1.getAttributes(), node2.getAttributes())); - - NodeUtils.addAttribute(document, node1, null, "foo2", "bar2"); - assertFalse(NodeUtils.compareAttributes(node1.getAttributes(), node2.getAttributes())); - - NodeUtils.addAttribute(document, node2, null, "foo2", "bar"); - assertFalse(NodeUtils.compareAttributes(node1.getAttributes(), node2.getAttributes())); - } - - public void testNamespaceAttributes() throws Exception { - Document document = createDocument(); - - // create two nodes - Node node1 = document.createElement("N1"); - Node node2 = document.createElement("N2"); - - NodeUtils.addAttribute(document, node1, "http://some.uri/", "foo", "bar"); - NodeUtils.addAttribute(document, node2, "http://some.uri/", "foo", "bar"); - assertTrue(NodeUtils.compareAttributes(node1.getAttributes(), node2.getAttributes())); - - NodeUtils.addAttribute(document, node1, "http://some.uri/", "foo2", "bar2"); - NodeUtils.addAttribute(document, node2, "http://some.other.uri/", "foo2", "bar2"); - assertFalse(NodeUtils.compareAttributes(node1.getAttributes(), node2.getAttributes())); - } - - public void testNodesWithChildrenNodes() throws Exception { - Document document = createDocument(); - - // create two nodes - Node node1 = document.createElement("some-node"); - Node node2 = document.createElement("some-node"); - - Node child1a = document.createElement("child1"); - Node child1b = document.createElement("child2"); - node1.appendChild(child1a).appendChild(child1b); - - Node child2a = document.createElement("child1"); - Node child2b = document.createElement("child2"); - node2.appendChild(child2a).appendChild(child2b); - - assertTrue(NodeUtils.compareElementNode(node1, node2)); - } - - public void testAdoptNode() throws Exception { - Document document = createDocument(); - Node rootNode = document.createElement("root"); - document.appendChild(rootNode); - - // create a single s - Node node = document.createElement("some-node"); - - // add some children - Node child1 = document.createElement("child1"); - Node child2 = document.createElement("child2"); - node.appendChild(child1).appendChild(child2); - - // add some attributes - NodeUtils.addAttribute(document, node, null, "foo", "bar"); - NodeUtils.addAttribute(document, node, "http://some.uri", "foo2", "bar2"); - NodeUtils.addAttribute(document, child1, "http://some.other.uri", "blah", "test"); - NodeUtils.addAttribute(document, child2, "http://another.uri", "blah", "test"); - - // create the other document to receive the adopted node. It must have a root node. - Document document2 = createDocument(); - rootNode = document2.createElement("root"); - document2.appendChild(rootNode); - - assertTrue(NodeUtils.compareElementNode(node, NodeUtils.adoptNode(document2, node))); - } - - private static Document createDocument() throws ParserConfigurationException { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setValidating(false); - factory.setIgnoringComments(true); - DocumentBuilder builder; - - builder = factory.newDocumentBuilder(); - return builder.newDocument(); - } -} diff --git a/builder/src/test/java/com/android/builder/resources/RecordingLogger.java b/builder/src/test/java/com/android/builder/resources/RecordingLogger.java deleted file mode 100644 index 6acc36f..0000000 --- a/builder/src/test/java/com/android/builder/resources/RecordingLogger.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.annotations.NonNull; -import com.android.annotations.Nullable; -import com.android.utils.ILogger; -import com.google.common.collect.Lists; - -import java.lang.Override; -import java.lang.String; -import java.lang.Throwable; -import java.util.List; - -/** - * Implementation of the ILogger interface that records all the logs. - */ -public class RecordingLogger implements ILogger { - - private final List<String> mErrorMsgs = Lists.newArrayList(); - private final List<String> mWarningMsgs = Lists.newArrayList(); - private final List<String> mInfoMsgs = Lists.newArrayList(); - private final List<String> mVerboseMsgs = Lists.newArrayList(); - - @Override - public void error(@Nullable Throwable t, @Nullable String msgFormat, Object... args) { - mErrorMsgs.add(String.format(msgFormat, args)); - } - - @Override - public void warning(@NonNull String msgFormat, Object... args) { - mWarningMsgs.add(String.format(msgFormat, args)); - } - - @Override - public void info(@NonNull String msgFormat, Object... args) { - mInfoMsgs.add(String.format(msgFormat, args)); - } - - @Override - public void verbose(@NonNull String msgFormat, Object... args) { - mVerboseMsgs.add(String.format(msgFormat, args)); - } - - public List<String> getErrorMsgs() { - return mErrorMsgs; - } - - public List<String> getWarningMsgs() { - return mWarningMsgs; - } - - public List<String> getInfoMsgs() { - return mInfoMsgs; - } - - public List<String> getVerboseMsgs() { - return mVerboseMsgs; - } -} diff --git a/builder/src/test/java/com/android/builder/resources/ResourceMergerTest.java b/builder/src/test/java/com/android/builder/resources/ResourceMergerTest.java deleted file mode 100755 index 7b20649..0000000 --- a/builder/src/test/java/com/android/builder/resources/ResourceMergerTest.java +++ /dev/null @@ -1,820 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.SdkConstants; -import com.android.builder.TestUtils; -import com.android.resources.ResourceFolderType; -import com.android.resources.ResourceType; -import com.google.common.base.Charsets; -import com.google.common.collect.ListMultimap; -import com.google.common.collect.Maps; -import com.google.common.io.Files; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.io.File; -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class ResourceMergerTest extends BaseTestCase { - - private static ResourceMerger sResourceMerger = null; - - public void testMergeByCount() throws Exception { - ResourceMerger merger = getResourceMerger(); - - assertEquals(25, merger.size()); - } - - public void testMergedResourcesByName() throws Exception { - ResourceMerger merger = getResourceMerger(); - - verifyResourceExists(merger, - "drawable/icon", - "drawable-ldpi/icon", - "drawable/icon2", - "raw/foo", - "layout/main", - "layout/layout_ref", - "layout/alias_replaced_by_file", - "layout/file_replaced_by_alias", - "drawable/color_drawable", - "drawable/drawable_ref", - "color/color", - "string/basic_string", - "string/xliff_string", - "string/styled_string", - "style/style", - "array/string_array", - "attr/dimen_attr", - "attr/string_attr", - "attr/enum_attr", - "attr/flag_attr", - "declare-styleable/declare_styleable", - "dimen/dimen", - "id/item_id", - "integer/integer" - ); - } - - private String getPlatformPath(String path) { - return path.replaceAll("/", Matcher.quoteReplacement(File.separator)); - } - - public void testReplacedLayout() throws Exception { - ResourceMerger merger = getResourceMerger(); - ListMultimap<String, ResourceItem> mergedMap = merger.getDataMap(); - - List<ResourceItem> values = mergedMap.get("layout/main"); - - // the overlay means there's 2 versions of this resource. - assertEquals(2, values.size()); - ResourceItem mainLayout = values.get(1); - - ResourceFile sourceFile = mainLayout.getSource(); - assertTrue(sourceFile.getFile().getAbsolutePath() - .endsWith(getPlatformPath("overlay/layout/main.xml"))); - } - - public void testReplacedAlias() throws Exception { - ResourceMerger merger = getResourceMerger(); - ListMultimap<String, ResourceItem> mergedMap = merger.getDataMap(); - - - List<ResourceItem> values = mergedMap.get("layout/alias_replaced_by_file"); - - // the overlay means there's 2 versions of this resource. - assertEquals(2, values.size()); - ResourceItem layout = values.get(1); - - // since it's replaced by a file, there's no node. - assertNull(layout.getValue()); - } - - public void testReplacedFile() throws Exception { - ResourceMerger merger = getResourceMerger(); - ListMultimap<String, ResourceItem> mergedMap = merger.getDataMap(); - - List<ResourceItem> values = mergedMap.get("layout/file_replaced_by_alias"); - - // the overlay means there's 2 versions of this resource. - assertEquals(2, values.size()); - ResourceItem layout = values.get(1); - - // since it's replaced by an alias, there's a node - assertNotNull(layout.getValue()); - } - - public void testMergeWrite() throws Exception { - ResourceMerger merger = getResourceMerger(); - RecordingLogger logger = new RecordingLogger(); - - File folder = getWrittenResources(); - - ResourceSet writtenSet = new ResourceSet("unused"); - writtenSet.addSource(folder); - writtenSet.loadFromFiles(logger); - - // compare the two maps, but not using the full map as the set loaded from the output - // won't contains all versions of each ResourceItem item. - compareResourceMaps(merger, writtenSet, false /*full compare*/); - checkLogger(logger); - } - - public void testMergeBlob() throws Exception { - ResourceMerger merger = getResourceMerger(); - - File folder = Files.createTempDir(); - merger.writeBlobTo(folder); - - ResourceMerger loadedMerger = new ResourceMerger(); - loadedMerger.loadFromBlob(folder); - - compareResourceMaps(merger, loadedMerger, true /*full compare*/); - } - - /** - * Tests the path replacement in the merger.xml file loaded from testData/ - * @throws Exception - */ - public void testLoadingTestPathReplacement() throws Exception { - File root = TestUtils.getRoot("resources", "baseMerge"); - File fakeRoot = getMergedBlobFolder(root); - - ResourceMerger resourceMerger = new ResourceMerger(); - resourceMerger.loadFromBlob(fakeRoot); - checkSourceFolders(resourceMerger); - - List<ResourceSet> sets = resourceMerger.getDataSets(); - for (ResourceSet set : sets) { - List<File> sourceFiles = set.getSourceFiles(); - - // there should only be one - assertEquals(1, sourceFiles.size()); - - File sourceFile = sourceFiles.get(0); - assertTrue(String.format("File %s is located in %s", sourceFile, root), - sourceFile.getAbsolutePath().startsWith(root.getAbsolutePath())); - } - } - - public void testUpdateWithBasicFiles() throws Exception { - File root = getIncMergeRoot("basicFiles"); - File fakeRoot = getMergedBlobFolder(root); - ResourceMerger resourceMerger = new ResourceMerger(); - resourceMerger.loadFromBlob(fakeRoot); - checkSourceFolders(resourceMerger); - - List<ResourceSet> sets = resourceMerger.getDataSets(); - assertEquals(2, sets.size()); - - RecordingLogger logger = new RecordingLogger(); - - // ---------------- - // first set is the main one, no change here - ResourceSet mainSet = sets.get(0); - File mainBase = new File(root, "main"); - File mainDrawable = new File(mainBase, "drawable"); - File mainDrawableLdpi = new File(mainBase, "drawable-ldpi"); - - // touched/removed files: - File mainDrawableTouched = new File(mainDrawable, "touched.png"); - mainSet.updateWith(mainBase, mainDrawableTouched, FileStatus.CHANGED, logger); - checkLogger(logger); - - File mainDrawableRemoved = new File(mainDrawable, "removed.png"); - mainSet.updateWith(mainBase, mainDrawableRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - File mainDrawableLdpiRemoved = new File(mainDrawableLdpi, "removed.png"); - mainSet.updateWith(mainBase, mainDrawableLdpiRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - // ---------------- - // second set is the overlay one - ResourceSet overlaySet = sets.get(1); - File overlayBase = new File(root, "overlay"); - File overlayDrawable = new File(overlayBase, "drawable"); - File overlayDrawableHdpi = new File(overlayBase, "drawable-hdpi"); - - // new/removed files: - File overlayDrawableNewOverlay = new File(overlayDrawable, "new_overlay.png"); - overlaySet.updateWith(overlayBase, overlayDrawableNewOverlay, FileStatus.NEW, logger); - checkLogger(logger); - - File overlayDrawableRemovedOverlay = new File(overlayDrawable, "removed_overlay.png"); - overlaySet.updateWith(overlayBase, overlayDrawableRemovedOverlay, FileStatus.REMOVED, - logger); - checkLogger(logger); - - File overlayDrawableHdpiNewAlternate = new File(overlayDrawableHdpi, "new_alternate.png"); - overlaySet.updateWith(overlayBase, overlayDrawableHdpiNewAlternate, FileStatus.NEW, logger); - checkLogger(logger); - - // validate for duplicates - resourceMerger.validateDataSets(); - - // check the content. - ListMultimap<String, ResourceItem> mergedMap = resourceMerger.getDataMap(); - - // check unchanged file is WRITTEN - List<ResourceItem> drawableUntouched = mergedMap.get("drawable/untouched"); - assertEquals(1, drawableUntouched.size()); - assertTrue(drawableUntouched.get(0).isWritten()); - assertFalse(drawableUntouched.get(0).isTouched()); - assertFalse(drawableUntouched.get(0).isRemoved()); - - // check replaced file is TOUCHED - List<ResourceItem> drawableTouched = mergedMap.get("drawable/touched"); - assertEquals(1, drawableTouched.size()); - assertTrue(drawableTouched.get(0).isWritten()); - assertTrue(drawableTouched.get(0).isTouched()); - assertFalse(drawableTouched.get(0).isRemoved()); - - // check removed file is REMOVED - List<ResourceItem> drawableRemoved = mergedMap.get("drawable/removed"); - assertEquals(1, drawableRemoved.size()); - assertTrue(drawableRemoved.get(0).isWritten()); - assertTrue(drawableRemoved.get(0).isRemoved()); - - // check new overlay: two objects, last one is TOUCHED - List<ResourceItem> drawableNewOverlay = mergedMap.get("drawable/new_overlay"); - assertEquals(2, drawableNewOverlay.size()); - ResourceItem newOverlay = drawableNewOverlay.get(1); - assertEquals(overlayDrawableNewOverlay, newOverlay.getSource().getFile()); - assertFalse(newOverlay.isWritten()); - assertTrue(newOverlay.isTouched()); - - // check new alternate: one objects, last one is TOUCHED - List<ResourceItem> drawableHdpiNewAlternate = mergedMap.get("drawable-hdpi/new_alternate"); - assertEquals(1, drawableHdpiNewAlternate.size()); - ResourceItem newAlternate = drawableHdpiNewAlternate.get(0); - assertEquals(overlayDrawableHdpiNewAlternate, newAlternate.getSource().getFile()); - assertFalse(newAlternate.isWritten()); - assertTrue(newAlternate.isTouched()); - - // write and check the result of writeResourceFolder - // copy the current resOut which serves as pre incremental update state. - File resFolder = getFolderCopy(new File(root, "resOut")); - - // write the content of the resource merger. - resourceMerger.writeDataFolder(resFolder, null /*aaptRunner*/); - - // Check the content. - checkImageColor(new File(resFolder, "drawable" + File.separator + "touched.png"), - (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "drawable" + File.separator + "untouched.png"), - (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "drawable" + File.separator + "new_overlay.png"), - (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "drawable" + File.separator + "removed_overlay.png"), - (int) 0xFF00FF00); - checkImageColor(new File(resFolder, "drawable-hdpi" + File.separator + "new_alternate.png"), - (int) 0xFF00FF00); - assertFalse(new File(resFolder, "drawable-ldpi" + File.separator + "removed.png").isFile()); - } - - public void testUpdateWithBasicValues() throws Exception { - File root = getIncMergeRoot("basicValues"); - File fakeRoot = getMergedBlobFolder(root); - ResourceMerger resourceMerger = new ResourceMerger(); - resourceMerger.loadFromBlob(fakeRoot); - checkSourceFolders(resourceMerger); - - List<ResourceSet> sets = resourceMerger.getDataSets(); - assertEquals(2, sets.size()); - - RecordingLogger logger = new RecordingLogger(); - - // ---------------- - // first set is the main one, no change here - ResourceSet mainSet = sets.get(0); - File mainBase = new File(root, "main"); - File mainValues = new File(mainBase, "values"); - File mainValuesEn = new File(mainBase, "values-en"); - - // touched file: - File mainValuesTouched = new File(mainValues, "values.xml"); - mainSet.updateWith(mainBase, mainValuesTouched, FileStatus.CHANGED, logger); - checkLogger(logger); - - - // removed files - File mainValuesEnRemoved = new File(mainValuesEn, "values.xml"); - mainSet.updateWith(mainBase, mainValuesEnRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - - // ---------------- - // second set is the overlay one - ResourceSet overlaySet = sets.get(1); - File overlayBase = new File(root, "overlay"); - File overlayValues = new File(overlayBase, "values"); - File overlayValuesFr = new File(overlayBase, "values-fr"); - - // new files: - File overlayValuesNew = new File(overlayValues, "values.xml"); - overlaySet.updateWith(overlayBase, overlayValuesNew, FileStatus.NEW, logger); - checkLogger(logger); - - File overlayValuesFrNew = new File(overlayValuesFr, "values.xml"); - overlaySet.updateWith(overlayBase, overlayValuesFrNew, FileStatus.NEW, logger); - checkLogger(logger); - - // validate for duplicates - resourceMerger.validateDataSets(); - - // check the content. - ListMultimap<String, ResourceItem> mergedMap = resourceMerger.getDataMap(); - - // check unchanged string is WRITTEN - List<ResourceItem> valuesUntouched = mergedMap.get("string/untouched"); - assertEquals(1, valuesUntouched.size()); - assertTrue(valuesUntouched.get(0).isWritten()); - assertFalse(valuesUntouched.get(0).isTouched()); - assertFalse(valuesUntouched.get(0).isRemoved()); - - // check replaced file is TOUCHED - List<ResourceItem> valuesTouched = mergedMap.get("string/touched"); - assertEquals(1, valuesTouched.size()); - assertTrue(valuesTouched.get(0).isWritten()); - assertTrue(valuesTouched.get(0).isTouched()); - assertFalse(valuesTouched.get(0).isRemoved()); - - // check removed file is REMOVED - List<ResourceItem> valuesRemoved = mergedMap.get("string/removed"); - assertEquals(1, valuesRemoved.size()); - assertTrue(valuesRemoved.get(0).isWritten()); - assertTrue(valuesRemoved.get(0).isRemoved()); - - valuesRemoved = mergedMap.get("string-en/removed"); - assertEquals(1, valuesRemoved.size()); - assertTrue(valuesRemoved.get(0).isWritten()); - assertTrue(valuesRemoved.get(0).isRemoved()); - - // check new overlay: two objects, last one is TOUCHED - List<ResourceItem> valuesNewOverlay = mergedMap.get("string/new_overlay"); - assertEquals(2, valuesNewOverlay.size()); - ResourceItem newOverlay = valuesNewOverlay.get(1); - assertFalse(newOverlay.isWritten()); - assertTrue(newOverlay.isTouched()); - - // check new alternate: one objects, last one is TOUCHED - List<ResourceItem> valuesFrNewAlternate = mergedMap.get("string-fr/new_alternate"); - assertEquals(1, valuesFrNewAlternate.size()); - ResourceItem newAlternate = valuesFrNewAlternate.get(0); - assertFalse(newAlternate.isWritten()); - assertTrue(newAlternate.isTouched()); - - // write and check the result of writeResourceFolder - // copy the current resOut which serves as pre incremental update state. - File resFolder = getFolderCopy(new File(root, "resOut")); - - // write the content of the resource merger. - resourceMerger.writeDataFolder(resFolder, null /*aaptRunner*/); - - // Check the content. - // values/values.xml - Map<String, String> map = quickStringOnlyValueFileParser( - new File(resFolder, "values" + File.separator + "values.xml")); - assertEquals("untouched", map.get("untouched")); - assertEquals("touched", map.get("touched")); - assertEquals("new_overlay", map.get("new_overlay")); - - // values/values-fr.xml - map = quickStringOnlyValueFileParser( - new File(resFolder, "values-fr" + File.separator + "values.xml")); - assertEquals("new_alternate", map.get("new_alternate")); - - // deleted values-en/values.xml - assertFalse(new File(resFolder, "values-en" + File.separator + "values.xml").isFile()); - } - - public void testUpdateWithBasicValues2() throws Exception { - File root = getIncMergeRoot("basicValues2"); - File fakeRoot = getMergedBlobFolder(root); - ResourceMerger resourceMerger = new ResourceMerger(); - resourceMerger.loadFromBlob(fakeRoot); - checkSourceFolders(resourceMerger); - - List<ResourceSet> sets = resourceMerger.getDataSets(); - assertEquals(2, sets.size()); - - RecordingLogger logger = new RecordingLogger(); - - // ---------------- - // first set is the main one, no change here - - // ---------------- - // second set is the overlay one - ResourceSet overlaySet = sets.get(1); - File overlayBase = new File(root, "overlay"); - File overlayValues = new File(overlayBase, "values"); - - // new files: - File overlayValuesNew = new File(overlayValues, "values.xml"); - overlaySet.updateWith(overlayBase, overlayValuesNew, FileStatus.REMOVED, logger); - checkLogger(logger); - - - // validate for duplicates - resourceMerger.validateDataSets(); - - // check the content. - ListMultimap<String, ResourceItem> mergedMap = resourceMerger.getDataMap(); - - // check unchanged string is WRITTEN - List<ResourceItem> valuesUntouched = mergedMap.get("string/untouched"); - assertEquals(1, valuesUntouched.size()); - assertTrue(valuesUntouched.get(0).isWritten()); - assertFalse(valuesUntouched.get(0).isTouched()); - assertFalse(valuesUntouched.get(0).isRemoved()); - - // check removed_overlay is present twice. - List<ResourceItem> valuesRemovedOverlay = mergedMap.get("string/removed_overlay"); - assertEquals(2, valuesRemovedOverlay.size()); - // first is untouched - assertFalse(valuesRemovedOverlay.get(0).isWritten()); - assertFalse(valuesRemovedOverlay.get(0).isTouched()); - assertFalse(valuesRemovedOverlay.get(0).isRemoved()); - // other is removed - assertTrue(valuesRemovedOverlay.get(1).isWritten()); - assertFalse(valuesRemovedOverlay.get(1).isTouched()); - assertTrue(valuesRemovedOverlay.get(1).isRemoved()); - - // write and check the result of writeResourceFolder - // copy the current resOut which serves as pre incremental update state. - File resFolder = getFolderCopy(new File(root, "resOut")); - - // write the content of the resource merger. - resourceMerger.writeDataFolder(resFolder, null /*aaptRunner*/); - - // Check the content. - // values/values.xml - Map<String, String> map = quickStringOnlyValueFileParser( - new File(resFolder, "values" + File.separator + "values.xml")); - assertEquals("untouched", map.get("untouched")); - assertEquals("untouched", map.get("removed_overlay")); - } - - public void testUpdateWithFilesVsValues() throws Exception { - File root = getIncMergeRoot("filesVsValues"); - File fakeRoot = getMergedBlobFolder(root); - ResourceMerger resourceMerger = new ResourceMerger(); - resourceMerger.loadFromBlob(fakeRoot); - checkSourceFolders(resourceMerger); - - List<ResourceSet> sets = resourceMerger.getDataSets(); - assertEquals(1, sets.size()); - - RecordingLogger logger = new RecordingLogger(); - - // ---------------- - // Load the main set - ResourceSet mainSet = sets.get(0); - File mainBase = new File(root, "main"); - File mainValues = new File(mainBase, ResourceFolderType.VALUES.getName()); - File mainLayout = new File(mainBase, ResourceFolderType.LAYOUT.getName()); - - // touched file: - File mainValuesTouched = new File(mainValues, "values.xml"); - mainSet.updateWith(mainBase, mainValuesTouched, FileStatus.CHANGED, logger); - checkLogger(logger); - - // new file: - File mainLayoutNew = new File(mainLayout, "alias_replaced_by_file.xml"); - mainSet.updateWith(mainBase, mainLayoutNew, FileStatus.NEW, logger); - checkLogger(logger); - - // removed file - File mainLayoutRemoved = new File(mainLayout, "file_replaced_by_alias.xml"); - mainSet.updateWith(mainBase, mainLayoutRemoved, FileStatus.REMOVED, logger); - checkLogger(logger); - - // validate for duplicates - resourceMerger.validateDataSets(); - - // check the content. - ListMultimap<String, ResourceItem> mergedMap = resourceMerger.getDataMap(); - - // check layout/main is unchanged - List<ResourceItem> layoutMain = mergedMap.get("layout/main"); - assertEquals(1, layoutMain.size()); - assertTrue(layoutMain.get(0).isWritten()); - assertFalse(layoutMain.get(0).isTouched()); - assertFalse(layoutMain.get(0).isRemoved()); - - // check file_replaced_by_alias has 2 version, 2nd is TOUCHED, and contains a Node - List<ResourceItem> layoutReplacedByAlias = mergedMap.get("layout/file_replaced_by_alias"); - assertEquals(2, layoutReplacedByAlias.size()); - // 1st one is removed version, as it already existed in the item multimap - ResourceItem replacedByAlias = layoutReplacedByAlias.get(0); - assertTrue(replacedByAlias.isWritten()); - assertFalse(replacedByAlias.isTouched()); - assertTrue(replacedByAlias.isRemoved()); - assertNull(replacedByAlias.getValue()); - assertEquals("file_replaced_by_alias.xml", replacedByAlias.getSource().getFile().getName()); - // 2nd version is the new one - replacedByAlias = layoutReplacedByAlias.get(1); - assertFalse(replacedByAlias.isWritten()); - assertTrue(replacedByAlias.isTouched()); - assertFalse(replacedByAlias.isRemoved()); - assertNotNull(replacedByAlias.getValue()); - assertEquals("values.xml", replacedByAlias.getSource().getFile().getName()); - - // check alias_replaced_by_file has 2 version, 2nd is TOUCHED, and contains a Node - List<ResourceItem> layoutReplacedByFile = mergedMap.get("layout/alias_replaced_by_file"); - // 1st one is removed version, as it already existed in the item multimap - assertEquals(2, layoutReplacedByFile.size()); - ResourceItem replacedByFile = layoutReplacedByFile.get(0); - assertTrue(replacedByFile.isWritten()); - assertFalse(replacedByFile.isTouched()); - assertTrue(replacedByFile.isRemoved()); - assertNotNull(replacedByFile.getValue()); - assertEquals("values.xml", replacedByFile.getSource().getFile().getName()); - // 2nd version is the new one - replacedByFile = layoutReplacedByFile.get(1); - assertFalse(replacedByFile.isWritten()); - assertTrue(replacedByFile.isTouched()); - assertFalse(replacedByFile.isRemoved()); - assertNull(replacedByFile.getValue()); - assertEquals("alias_replaced_by_file.xml", replacedByFile.getSource().getFile().getName()); - - // write and check the result of writeResourceFolder - // copy the current resOut which serves as pre incremental update state. - File resFolder = getFolderCopy(new File(root, "resOut")); - - // write the content of the resource merger. - resourceMerger.writeDataFolder(resFolder, null /*aaptRunner*/); - - // deleted layout/file_replaced_by_alias.xml - assertFalse(new File(resFolder, "layout" + File.separator + "file_replaced_by_alias.xml") - .isFile()); - // new file layout/alias_replaced_by_file.xml - assertTrue(new File(resFolder, "layout" + File.separator + "alias_replaced_by_file.xml") - .isFile()); - - // quick load of the values file - File valuesFile = new File(resFolder, "values" + File.separator + "values.xml"); - assertTrue(valuesFile.isFile()); - String content = Files.toString(valuesFile, Charsets.UTF_8); - assertTrue(content.contains("name=\"file_replaced_by_alias\"")); - assertFalse(content.contains("name=\"alias_replaced_by_file\"")); - } - - public void testCheckValidUpdate() throws Exception { - // first merger - ResourceMerger merger1 = createMerger(new String[][] { - new String[] { "main", ("/main/res1"), ("/main/res2") }, - new String[] { "overlay", ("/overlay/res1"), ("/overlay/res2") }, - }); - - // 2nd merger with different order source files in sets. - ResourceMerger merger2 = createMerger(new String[][] { - new String[] { "main", ("/main/res2"), ("/main/res1") }, - new String[] { "overlay", ("/overlay/res1"), ("/overlay/res2") }, - }); - - assertTrue(merger1.checkValidUpdate(merger2.getDataSets())); - - // write merger1 on disk to test writing empty ResourceSets. - File folder = Files.createTempDir(); - merger1.writeBlobTo(folder); - - // reload it - ResourceMerger loadedMerger = new ResourceMerger(); - loadedMerger.loadFromBlob(folder); - - String expected = merger1.toString(); - String actual = loadedMerger.toString(); - if (SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_WINDOWS) { - expected = expected.replaceAll(Pattern.quote(File.separator), "/"). - replaceAll("[A-Z]:/", "/"); - actual = actual.replaceAll(Pattern.quote(File.separator), "/"). - replaceAll("[A-Z]:/", "/"); - assertEquals("Actual: " + actual + "\nExpected: " + expected, expected, actual); - } else { - assertTrue("Actual: " + actual + "\nExpected: " + expected, - loadedMerger.checkValidUpdate(merger1.getDataSets())); - } - } - - public void testUpdateWithRemovedOverlay() throws Exception { - // Test with removed overlay - ResourceMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay", "/overlay/res1", "/overlay/res2" }, - }); - - // 2nd merger with different order source files in sets. - ResourceMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithReplacedOverlays() throws Exception { - // Test with different overlays - ResourceMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay", "/overlay/res1", "/overlay/res2" }, - }); - - // 2nd merger with different order source files in sets. - ResourceMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithReorderedOverlays() throws Exception { - // Test with different overlays - ResourceMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - new String[] { "overlay1", "/overlay1/res1", "/overlay1/res2" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - }); - - // 2nd merger with different order source files in sets. - ResourceMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res2", "/main/res1" }, - new String[] { "overlay2", "/overlay2/res1", "/overlay2/res2" }, - new String[] { "overlay1", "/overlay1/res1", "/overlay1/res2" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - public void testUpdateWithRemovedSourceFile() throws Exception { - // Test with different source files - ResourceMerger merger1 = createMerger(new String[][] { - new String[] { "main", "/main/res1", "/main/res2" }, - }); - - // 2nd merger with different order source files in sets. - ResourceMerger merger2 = createMerger(new String[][] { - new String[] { "main", "/main/res1" }, - }); - - assertFalse(merger1.checkValidUpdate(merger2.getDataSets())); - } - - /** - * Creates a fake merge with given sets. - * - * the data is an array of sets. - * - * Each set is [ setName, folder1, folder2, ...] - * - * @param data - * @return - */ - private static ResourceMerger createMerger(String[][] data) { - ResourceMerger merger = new ResourceMerger(); - for (String[] setData : data) { - ResourceSet set = new ResourceSet(setData[0]); - merger.addDataSet(set); - for (int i = 1, n = setData.length; i < n; i++) { - set.addSource(new File(setData[i])); - } - } - - return merger; - } - - private static ResourceMerger getResourceMerger() - throws DuplicateDataException, IOException { - if (sResourceMerger == null) { - File root = TestUtils.getRoot("resources", "baseMerge"); - - ResourceSet res = ResourceSetTest.getBaseResourceSet(); - - RecordingLogger logger = new RecordingLogger(); - - ResourceSet overlay = new ResourceSet("overlay"); - overlay.addSource(new File(root, "overlay")); - overlay.loadFromFiles(logger); - - checkLogger(logger); - - sResourceMerger = new ResourceMerger(); - sResourceMerger.addDataSet(res); - sResourceMerger.addDataSet(overlay); - } - - return sResourceMerger; - } - - private static File getWrittenResources() throws DuplicateDataException, IOException, - ExecutionException, InterruptedException { - ResourceMerger resourceMerger = getResourceMerger(); - - File folder = Files.createTempDir(); - - resourceMerger.writeDataFolder(folder, null /*aaptRunner*/); - - return folder; - } - - private File getIncMergeRoot(String name) throws IOException { - File root = TestUtils.getCanonicalRoot("resources", "incMergeData"); - return new File(root, name); - } - - private static File getFolderCopy(File folder) throws IOException { - File dest = Files.createTempDir(); - copyFolder(folder, dest); - return dest; - } - - private static void copyFolder(File from, File to) throws IOException { - if (from.isFile()) { - Files.copy(from, to); - } else if (from.isDirectory()) { - if (!to.exists()) { - to.mkdirs(); - } - - File[] children = from.listFiles(); - if (children != null) { - for (File f : children) { - copyFolder(f, new File(to, f.getName())); - } - } - } - } - - private static Map<String, String> quickStringOnlyValueFileParser(File file) - throws IOException { - Map<String, String> result = Maps.newHashMap(); - - Document document = ValueResourceParser.parseDocument(file); - - // get the root node - Node rootNode = document.getDocumentElement(); - if (rootNode == null) { - return Collections.emptyMap(); - } - - NodeList nodes = rootNode.getChildNodes(); - - for (int i = 0, n = nodes.getLength(); i < n; i++) { - Node node = nodes.item(i); - - if (node.getNodeType() != Node.ELEMENT_NODE) { - continue; - } - - ResourceType type = ValueResourceParser.getType(node); - if (type != ResourceType.STRING) { - throw new IllegalArgumentException("Only String resources supported."); - } - String name = ValueResourceParser.getName(node); - - String value = null; - - NodeList nodeList = node.getChildNodes(); - nodeLoop: for (int ii = 0, nn = nodes.getLength(); ii < nn; ii++) { - Node subNode = nodeList.item(ii); - - switch (subNode.getNodeType()) { - case Node.COMMENT_NODE: - break; - case Node.TEXT_NODE: - value = subNode.getNodeValue().trim(); // TODO: remove trim. - break nodeLoop; - case Node.ELEMENT_NODE: - break; - } - } - - result.put(name, value != null ? value : ""); - } - - return result; - } -} diff --git a/builder/src/test/java/com/android/builder/resources/ResourceSetTest.java b/builder/src/test/java/com/android/builder/resources/ResourceSetTest.java deleted file mode 100644 index ad5ced0..0000000 --- a/builder/src/test/java/com/android/builder/resources/ResourceSetTest.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.builder.TestUtils; - -import java.io.File; -import java.io.IOException; - -public class ResourceSetTest extends BaseTestCase { - - private static ResourceSet sBaseResourceSet = null; - - public void testBaseResourceSetByCount() throws Exception { - ResourceSet resourceSet = getBaseResourceSet(); - assertEquals(23, resourceSet.size()); - } - - public void testBaseResourceSetByName() throws Exception { - ResourceSet resourceSet = getBaseResourceSet(); - - verifyResourceExists(resourceSet, - "drawable/icon", - "drawable/patch", - "raw/foo", - "layout/main", - "layout/layout_ref", - "layout/alias_replaced_by_file", - "layout/file_replaced_by_alias", - "drawable/color_drawable", - "drawable/drawable_ref", - "color/color", - "string/basic_string", - "string/xliff_string", - "string/styled_string", - "style/style", - "array/string_array", - "attr/dimen_attr", - "attr/string_attr", - "attr/enum_attr", - "attr/flag_attr", - "declare-styleable/declare_styleable", - "dimen/dimen", - "id/item_id", - "integer/integer" - ); - } - - public void testDupResourceSet() throws Exception { - File root = TestUtils.getRoot("resources", "dupSet"); - - ResourceSet set = new ResourceSet("main"); - set.addSource(new File(root, "res1")); - set.addSource(new File(root, "res2")); - boolean gotException = false; - RecordingLogger logger = new RecordingLogger(); - try { - set.loadFromFiles(logger); - } catch (DuplicateDataException e) { - gotException = true; - } - - checkLogger(logger); - assertTrue(gotException); - } - - public void testBrokenSet() throws Exception { - File root = TestUtils.getRoot("resources", "brokenSet"); - - ResourceSet set = new ResourceSet("main"); - set.addSource(root); - - boolean gotException = false; - RecordingLogger logger = new RecordingLogger(); - try { - set.loadFromFiles(logger); - } catch (IOException e) { - gotException = true; - } - - assertTrue(gotException); - assertFalse(logger.getErrorMsgs().isEmpty()); - } - - static ResourceSet getBaseResourceSet() throws DuplicateDataException, IOException { - if (sBaseResourceSet == null) { - File root = TestUtils.getRoot("resources", "baseSet"); - - sBaseResourceSet = new ResourceSet("main"); - sBaseResourceSet.addSource(root); - RecordingLogger logger = new RecordingLogger(); - sBaseResourceSet.loadFromFiles(logger); - - checkLogger(logger); - } - - return sBaseResourceSet; - } -} diff --git a/builder/src/test/java/com/android/builder/resources/ValueResourceParserTest.java b/builder/src/test/java/com/android/builder/resources/ValueResourceParserTest.java deleted file mode 100644 index ed87857..0000000 --- a/builder/src/test/java/com/android/builder/resources/ValueResourceParserTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.builder.resources; - -import com.android.builder.TestUtils; -import com.google.common.collect.Maps; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; - -/** - */ -public class ValueResourceParserTest extends BaseTestCase { - - private static List<ResourceItem> sResources = null; - - public void testParsedResourcesByCount() throws Exception { - List<ResourceItem> resources = getParsedResources(); - - assertEquals(18, resources.size()); - } - - public void testParsedResourcesByName() throws Exception { - List<ResourceItem> resources = getParsedResources(); - Map<String, ResourceItem> resourceMap = Maps.newHashMapWithExpectedSize(resources.size()); - for (ResourceItem item : resources) { - resourceMap.put(item.getKey(), item); - } - - String[] resourceNames = new String[] { - "drawable/color_drawable", - "drawable/drawable_ref", - "color/color", - "string/basic_string", - "string/xliff_string", - "string/styled_string", - "style/style", - "array/string_array", - "attr/dimen_attr", - "attr/string_attr", - "attr/enum_attr", - "attr/flag_attr", - "declare-styleable/declare_styleable", - "dimen/dimen", - "id/item_id", - "integer/integer", - "layout/layout_ref" - }; - - for (String name : resourceNames) { - assertNotNull(name, resourceMap.get(name)); - } - } - - private static List<ResourceItem> getParsedResources() throws IOException { - if (sResources == null) { - File root = TestUtils.getRoot("resources", "baseSet"); - File values = new File(root, "values"); - File valuesXml = new File(values, "values.xml"); - - ValueResourceParser parser = new ValueResourceParser(valuesXml); - sResources = parser.parseFile(); - - // create a fake resource file to allow calling ResourceItem.getKey() - new ResourceFile(valuesXml, sResources, ""); - } - - return sResources; - } -} diff --git a/builder/src/test/resources/testData/assets/baseMerge/merger.xml b/builder/src/test/resources/testData/assets/baseMerge/merger.xml deleted file mode 100644 index dca3713..0000000 --- a/builder/src/test/resources/testData/assets/baseMerge/merger.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger xmlns:ns1="urn:oasis:names:tc:xliff:document:1.2"> - <dataSet config="main"> - <source path="$TOP$$SEP$..$SEP$baseSet"> - <file name="foo/icon.png" path="$TOP$$SEP$..$SEP$baseSet$SEP$foo$SEP$icon.png" /> - <file name="main.xml" path="$TOP$$SEP$..$SEP$baseSet$SEP$main.xml" /> - <file name="foo/foo.dat" path="$TOP$$SEP$..$SEP$baseSet$SEP$foo$SEP$foo.dat" /> - <file name="value.xml" path="$TOP$$SEP$..$SEP$baseSet$SEP$value.xml" /> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay"> - <file name="icon2.png" path="$TOP$$SEP$overlay$SEP$icon2.png" /> - <file name="foo/icon.png" path="$TOP$$SEP$overlay$SEP$foo$SEP$icon.png" /> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/assets/baseMerge/overlay/foo/icon.png b/builder/src/test/resources/testData/assets/baseMerge/overlay/foo/icon.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/baseMerge/overlay/foo/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/baseMerge/overlay/icon2.png b/builder/src/test/resources/testData/assets/baseMerge/overlay/icon2.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/assets/baseMerge/overlay/icon2.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/baseSet/foo/foo.dat b/builder/src/test/resources/testData/assets/baseSet/foo/foo.dat deleted file mode 100644 index def08db..0000000 --- a/builder/src/test/resources/testData/assets/baseSet/foo/foo.dat +++ /dev/null @@ -1 +0,0 @@ -Foo!
\ No newline at end of file diff --git a/builder/src/test/resources/testData/assets/baseSet/foo/icon.png b/builder/src/test/resources/testData/assets/baseSet/foo/icon.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/baseSet/foo/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/baseSet/main.xml b/builder/src/test/resources/testData/assets/baseSet/main.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/assets/baseSet/main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/assets/baseSet/values.xml b/builder/src/test/resources/testData/assets/baseSet/values.xml deleted file mode 100644 index 0da935f..0000000 --- a/builder/src/test/resources/testData/assets/baseSet/values.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Some comment to throw off the XML parser if it doesn't properly handle - * Document.getDocumentElement(). ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - - <drawable name="color_drawable">#ffffffff</drawable> - <drawable name="drawable_ref">@drawable/stat_notify_sync_anim0</drawable> - <color name="color">#00000000</color> - - <string name="basic_string">basic_string</string> - <string name="xliff_string"><xliff:g id="number" example="123">%1$s</xliff:g><xliff:g id="unit" example="KB">%2$s</xliff:g></string> - <string name="styled_string">Forgot your username or password\?\nVisit <b>google.com/accounts/recovery</b>.</string> - - <style name="style"> - <item name="android:singleLine">true</item> - <item name="android:textAppearance">@style/TextAppearance.WindowTitle</item> - <item name="android:shadowColor">#BB000000</item> - <item name="android:shadowRadius">2.75</item> - </style> - - <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad --> - <string-array translatable="false" name="string_array"> - <item></item><!-- 0 --> - <item></item><!-- 1 --> - <item>ABC</item><!-- 2 --> - <item>DEF</item><!-- 3 --> - <item>GHI</item><!-- 4 --> - <item>JKL</item><!-- 5 --> - <item>MNO</item><!-- 6 --> - <item>PQRS</item><!-- 7 --> - <item>TUV</item><!-- 8 --> - <item>WXYZ</item><!-- 9 --> - </string-array> - - <attr name="dimen_attr" format="dimension" /> - - <!-- Default font family. --> - <attr name="string_attr" format="string" /> - - <!-- Default text typeface. --> - <attr name="enum_attr"> - <enum name="normal" value="0" /> - <enum name="sans" value="1" /> - <enum name="serif" value="2" /> - <enum name="monospace" value="3" /> - </attr> - - <!-- Default text typeface style. --> - <attr name="flag_attr"> - <flag name="normal" value="0" /> - <flag name="bold" value="1" /> - <flag name="italic" value="2" /> - </attr> - - <!-- These are the standard attributes that make up a complete theme. --> - <declare-styleable name="declare_styleable"> - <!-- ============== --> - <!-- Generic styles --> - <!-- ============== --> - <eat-comment /> - - <!-- Default color of foreground imagery. --> - <attr name="blah" format="color" /> - <!-- Default color of foreground imagery on an inverted background. --> - <attr name="android:colorForegroundInverse" /> - </declare-styleable> - - <!-- The width that is used when creating thumbnails of applications. --> - <dimen name="dimen">164dp</dimen> - - <item type="id" name="item_id" /> - - <integer name="integer">75</integer> - - <item type="layout" name="layout_ref">@layout/ref</item> - <item type="layout" name="alias_replaced_by_file">@layout/ref</item> - -</resources> diff --git a/builder/src/test/resources/testData/assets/dupSet/assets1/icon.png b/builder/src/test/resources/testData/assets/dupSet/assets1/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/assets/dupSet/assets1/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/dupSet/assets2/icon.png b/builder/src/test/resources/testData/assets/dupSet/assets2/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/assets/dupSet/assets2/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/foo/overlay_added.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/foo/overlay_added.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/foo/overlay_added.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/overlay_removed.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/overlay_removed.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/overlay_removed.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/removed.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/removed.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/removed.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/touched.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/touched.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/touched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/untouched.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/untouched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/assetOut/untouched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/added.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/added.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/added.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/foo/overlay_added.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/foo/overlay_added.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/foo/overlay_added.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/overlay_removed.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/overlay_removed.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/overlay_removed.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/touched.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/touched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/touched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/untouched.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/untouched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/main/untouched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/merger.xml b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/merger.xml deleted file mode 100644 index 8edb8b3..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/merger.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger> - <dataSet config="main"> - <source path="$TOP$$SEP$main"> - <file name="untouched.png" path="$TOP$$SEP$main$SEP$untouched.png" /> - <file name="touched.png" path="$TOP$$SEP$main$SEP$touched.png" /> - <file name="removed.png" path="$TOP$$SEP$main$SEP$removed.png" /> - <file name="overlay_removed.png" path="$TOP$$SEP$main$SEP$overlay_removed.png" /> - <file name="foo/overlay_added.png" path="$TOP$$SEP$main$SEP$foo$SEP$overlay_added.png" /> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay"> - <file name="overlay_removed.png" path="$TOP$$SEP$overlay$SEP$overlay_removed.png" /> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/overlay/foo/overlay_added.png b/builder/src/test/resources/testData/assets/incMergeData/basicFiles/overlay/foo/overlay_added.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/assets/incMergeData/basicFiles/overlay/foo/overlay_added.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/baseMerge/merger.xml b/builder/src/test/resources/testData/resources/baseMerge/merger.xml deleted file mode 100644 index ca547b8..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/merger.xml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger xmlns:ns1="urn:oasis:names:tc:xliff:document:1.2"> - <dataSet config="main"> - <source path="$TOP$$SEP$..$SEP$baseSet"> - <file name="icon" path="$TOP$$SEP$..$SEP$baseSet$SEP$drawable$SEP$icon.png" qualifiers="" type="drawable"/> - <file name="patch" path="$TOP$$SEP$..$SEP$baseSet$SEP$drawable$SEP$patch.9.png" qualifiers="" type="drawable"/> - <file name="file_replaced_by_alias" path="$TOP$$SEP$..$SEP$baseSet$SEP$layout$SEP$file_replaced_by_alias.xml" qualifiers="" type="layout"/> - <file name="main" path="$TOP$$SEP$..$SEP$baseSet$SEP$layout$SEP$main.xml" qualifiers="" type="layout"/> - <file name="foo" path="$TOP$$SEP$..$SEP$baseSet$SEP$raw$SEP$foo.dat" qualifiers="" type="raw"/> - <file path="$TOP$$SEP$..$SEP$baseSet$SEP$values$SEP$values.xml" qualifiers=""> - <dimen name="dimen">164dp</dimen> - <integer name="integer">75</integer> - <color name="color">#00000000</color> - <drawable name="color_drawable">#ffffffff</drawable> - <declare-styleable name="declare_styleable"> - - <!-- ============== --> - <!-- Generic styles --> - <!-- ============== --> - <eat-comment/> - - <!-- Default color of foreground imagery. --> - <attr format="color" name="blah"/> - - <!-- Default color of foreground imagery on an inverted background. --> - <attr name="android:colorForegroundInverse"/> - - </declare-styleable> - <style name="style"> - <item name="android:singleLine">true</item> - <item name="android:textAppearance">@style$SEP$TextAppearance.WindowTitle</item> - <item name="android:shadowColor">#BB000000</item> - <item name="android:shadowRadius">2.75</item> - </style> - <string name="styled_string">Forgot your username or password\?\nVisit<b>google.com$SEP$accounts$SEP$recovery</b>.</string> - <attr format="dimension" name="dimen_attr"/> - <string-array name="string_array" translatable="false"> - <item/> - <!-- 0 --> - <item/> - <!-- 1 --> - <item>ABC</item> - <!-- 2 --> - <item>DEF</item> - <!-- 3 --> - <item>GHI</item> - <!-- 4 --> - <item>JKL</item> - <!-- 5 --> - <item>MNO</item> - <!-- 6 --> - <item>PQRS</item> - <!-- 7 --> - <item>TUV</item> - <!-- 8 --> - <item>WXYZ</item> - <!-- 9 --> - </string-array> - <item name="alias_replaced_by_file" type="layout">@layout$SEP$ref </item> - <string name="basic_string">basic_string</string> - <string name="xliff_string"><ns1:g example="123" id="number">%1$s</ns1:g><ns1:g example="KB" id="unit">%2$s</ns1:g></string> - <attr name="enum_attr"> - <enum name="normal" value="0"/> - <enum name="sans" value="1"/> - <enum name="serif" value="2"/> - <enum name="monospace" value="3"/> - </attr> - <item name="item_id" type="id"/> - <item name="layout_ref" type="layout">@layout$SEP$ref</item> - <drawable name="drawable_ref">@drawable$SEP$stat_notify_sync_anim0</drawable> - <attr format="string" name="string_attr"/> - <attr name="flag_attr"> - <flag name="normal" value="0"/> - <flag name="bold" value="1"/> - <flag name="italic" value="2"/> - </attr> - </file> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay"> - <file name="icon2" path="$TOP$$SEP$overlay$SEP$drawable$SEP$icon2.png" qualifiers="" type="drawable"/> - <file name="icon" path="$TOP$$SEP$overlay$SEP$drawable-ldpi$SEP$icon.png" qualifiers="ldpi" type="drawable"/> - <file name="alias_replaced_by_file" path="$TOP$$SEP$overlay$SEP$layout$SEP$alias_replaced_by_file.xml" qualifiers="" type="layout"/> - <file name="main" path="$TOP$$SEP$overlay$SEP$layout$SEP$main.xml" qualifiers="" type="layout"/> - <file path="$TOP$$SEP$overlay$SEP$values$SEP$values.xml" qualifiers=""> - <color name="color">#FFFFFFFF</color> - <item name="file_replaced_by_alias" type="layout">@layout$SEP$ref</item> - <string name="basic_string">overlay_string</string> - </file> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable-ldpi/icon.png b/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable-ldpi/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable-ldpi/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable/icon2.png b/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable/icon2.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/overlay/drawable/icon2.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/alias_replaced_by_file.xml b/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/alias_replaced_by_file.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/alias_replaced_by_file.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/main.xml b/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/main.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/overlay/layout/main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/baseMerge/overlay/values/values.xml b/builder/src/test/resources/testData/resources/baseMerge/overlay/values/values.xml deleted file mode 100644 index a3c90cc..0000000 --- a/builder/src/test/resources/testData/resources/baseMerge/overlay/values/values.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <color name="color">#FFFFFFFF</color> - <string name="basic_string">overlay_string</string> - <item type="layout" name="file_replaced_by_alias">@layout/ref</item> -</resources> diff --git a/builder/src/test/resources/testData/resources/baseSet/drawable/icon.png b/builder/src/test/resources/testData/resources/baseSet/drawable/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/drawable/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/baseSet/drawable/patch.9.png b/builder/src/test/resources/testData/resources/baseSet/drawable/patch.9.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/drawable/patch.9.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/baseSet/layout/file_replaced_by_alias.xml b/builder/src/test/resources/testData/resources/baseSet/layout/file_replaced_by_alias.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/layout/file_replaced_by_alias.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/baseSet/layout/main.xml b/builder/src/test/resources/testData/resources/baseSet/layout/main.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/layout/main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/baseSet/raw/foo.dat b/builder/src/test/resources/testData/resources/baseSet/raw/foo.dat deleted file mode 100644 index def08db..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/raw/foo.dat +++ /dev/null @@ -1 +0,0 @@ -Foo!
\ No newline at end of file diff --git a/builder/src/test/resources/testData/resources/baseSet/values/values.xml b/builder/src/test/resources/testData/resources/baseSet/values/values.xml deleted file mode 100644 index 0da935f..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/values/values.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Some comment to throw off the XML parser if it doesn't properly handle - * Document.getDocumentElement(). ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - - <drawable name="color_drawable">#ffffffff</drawable> - <drawable name="drawable_ref">@drawable/stat_notify_sync_anim0</drawable> - <color name="color">#00000000</color> - - <string name="basic_string">basic_string</string> - <string name="xliff_string"><xliff:g id="number" example="123">%1$s</xliff:g><xliff:g id="unit" example="KB">%2$s</xliff:g></string> - <string name="styled_string">Forgot your username or password\?\nVisit <b>google.com/accounts/recovery</b>.</string> - - <style name="style"> - <item name="android:singleLine">true</item> - <item name="android:textAppearance">@style/TextAppearance.WindowTitle</item> - <item name="android:shadowColor">#BB000000</item> - <item name="android:shadowRadius">2.75</item> - </style> - - <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad --> - <string-array translatable="false" name="string_array"> - <item></item><!-- 0 --> - <item></item><!-- 1 --> - <item>ABC</item><!-- 2 --> - <item>DEF</item><!-- 3 --> - <item>GHI</item><!-- 4 --> - <item>JKL</item><!-- 5 --> - <item>MNO</item><!-- 6 --> - <item>PQRS</item><!-- 7 --> - <item>TUV</item><!-- 8 --> - <item>WXYZ</item><!-- 9 --> - </string-array> - - <attr name="dimen_attr" format="dimension" /> - - <!-- Default font family. --> - <attr name="string_attr" format="string" /> - - <!-- Default text typeface. --> - <attr name="enum_attr"> - <enum name="normal" value="0" /> - <enum name="sans" value="1" /> - <enum name="serif" value="2" /> - <enum name="monospace" value="3" /> - </attr> - - <!-- Default text typeface style. --> - <attr name="flag_attr"> - <flag name="normal" value="0" /> - <flag name="bold" value="1" /> - <flag name="italic" value="2" /> - </attr> - - <!-- These are the standard attributes that make up a complete theme. --> - <declare-styleable name="declare_styleable"> - <!-- ============== --> - <!-- Generic styles --> - <!-- ============== --> - <eat-comment /> - - <!-- Default color of foreground imagery. --> - <attr name="blah" format="color" /> - <!-- Default color of foreground imagery on an inverted background. --> - <attr name="android:colorForegroundInverse" /> - </declare-styleable> - - <!-- The width that is used when creating thumbnails of applications. --> - <dimen name="dimen">164dp</dimen> - - <item type="id" name="item_id" /> - - <integer name="integer">75</integer> - - <item type="layout" name="layout_ref">@layout/ref</item> - <item type="layout" name="alias_replaced_by_file">@layout/ref</item> - -</resources> diff --git a/builder/src/test/resources/testData/resources/baseSet/values/values.xml~ b/builder/src/test/resources/testData/resources/baseSet/values/values.xml~ deleted file mode 100644 index 0da935f..0000000 --- a/builder/src/test/resources/testData/resources/baseSet/values/values.xml~ +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Some comment to throw off the XML parser if it doesn't properly handle - * Document.getDocumentElement(). ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - - <drawable name="color_drawable">#ffffffff</drawable> - <drawable name="drawable_ref">@drawable/stat_notify_sync_anim0</drawable> - <color name="color">#00000000</color> - - <string name="basic_string">basic_string</string> - <string name="xliff_string"><xliff:g id="number" example="123">%1$s</xliff:g><xliff:g id="unit" example="KB">%2$s</xliff:g></string> - <string name="styled_string">Forgot your username or password\?\nVisit <b>google.com/accounts/recovery</b>.</string> - - <style name="style"> - <item name="android:singleLine">true</item> - <item name="android:textAppearance">@style/TextAppearance.WindowTitle</item> - <item name="android:shadowColor">#BB000000</item> - <item name="android:shadowRadius">2.75</item> - </style> - - <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad --> - <string-array translatable="false" name="string_array"> - <item></item><!-- 0 --> - <item></item><!-- 1 --> - <item>ABC</item><!-- 2 --> - <item>DEF</item><!-- 3 --> - <item>GHI</item><!-- 4 --> - <item>JKL</item><!-- 5 --> - <item>MNO</item><!-- 6 --> - <item>PQRS</item><!-- 7 --> - <item>TUV</item><!-- 8 --> - <item>WXYZ</item><!-- 9 --> - </string-array> - - <attr name="dimen_attr" format="dimension" /> - - <!-- Default font family. --> - <attr name="string_attr" format="string" /> - - <!-- Default text typeface. --> - <attr name="enum_attr"> - <enum name="normal" value="0" /> - <enum name="sans" value="1" /> - <enum name="serif" value="2" /> - <enum name="monospace" value="3" /> - </attr> - - <!-- Default text typeface style. --> - <attr name="flag_attr"> - <flag name="normal" value="0" /> - <flag name="bold" value="1" /> - <flag name="italic" value="2" /> - </attr> - - <!-- These are the standard attributes that make up a complete theme. --> - <declare-styleable name="declare_styleable"> - <!-- ============== --> - <!-- Generic styles --> - <!-- ============== --> - <eat-comment /> - - <!-- Default color of foreground imagery. --> - <attr name="blah" format="color" /> - <!-- Default color of foreground imagery on an inverted background. --> - <attr name="android:colorForegroundInverse" /> - </declare-styleable> - - <!-- The width that is used when creating thumbnails of applications. --> - <dimen name="dimen">164dp</dimen> - - <item type="id" name="item_id" /> - - <integer name="integer">75</integer> - - <item type="layout" name="layout_ref">@layout/ref</item> - <item type="layout" name="alias_replaced_by_file">@layout/ref</item> - -</resources> diff --git a/builder/src/test/resources/testData/resources/brokenSet/layout/activity_main.xml b/builder/src/test/resources/testData/resources/brokenSet/layout/activity_main.xml deleted file mode 100644 index efcbf18..0000000 --- a/builder/src/test/resources/testData/resources/brokenSet/layout/activity_main.xml +++ /dev/null @@ -1,16 +0,0 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - android:paddingBottom="@dimen/activity_vertical_margin" - tools:context=".MainActivity"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/hello_world" /> - -</RelativeLayout> diff --git a/builder/src/test/resources/testData/resources/brokenSet/values/dimens.xml b/builder/src/test/resources/testData/resources/brokenSet/values/dimens.xml Binary files differdeleted file mode 100644 index 8b309cc..0000000 --- a/builder/src/test/resources/testData/resources/brokenSet/values/dimens.xml +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/dupSet/res1/drawable/icon.png b/builder/src/test/resources/testData/resources/dupSet/res1/drawable/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/dupSet/res1/drawable/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/dupSet/res2/drawable/icon.png b/builder/src/test/resources/testData/resources/dupSet/res2/drawable/icon.png Binary files differdeleted file mode 100644 index a07c69f..0000000 --- a/builder/src/test/resources/testData/resources/dupSet/res2/drawable/icon.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/new_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/new_overlay.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/new_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/removed_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/removed_overlay.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/removed_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/touched.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/touched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/touched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/untouched.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/untouched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/main/drawable/untouched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/merger.xml b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/merger.xml deleted file mode 100644 index e2e88cc..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/merger.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger> - <dataSet config="main"> - <source path="$TOP$$SEP$main"> - <file name="untouched" path="$TOP$$SEP$main$SEP$drawable$SEP$untouched.png" qualifiers="" type="drawable"/> - <file name="touched" path="$TOP$$SEP$main$SEP$drawable$SEP$touched.png" qualifiers="" type="drawable"/> - <file name="new_overlay" path="$TOP$$SEP$main$SEP$drawable$SEP$new_overlay.png" qualifiers="" type="drawable"/> - <file name="removed" path="$TOP$$SEP$main$SEP$drawable$SEP$removed.png" qualifiers="" type="drawable"/> - <file name="removed" path="$TOP$$SEP$main$SEP$drawable-ldpi$SEP$removed.png" qualifiers="ldpi" type="drawable"/> - <file name="removed_overlay" path="$TOP$$SEP$main$SEP$drawable$SEP$removed_overlay.png" qualifiers="" type="drawable"/> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay"> - <file name="removed_overlay" path="$TOP$$SEP$overlay$SEP$drawable$SEP$removed_overlay.png" qualifiers="" type="drawable"/> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/new_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/new_overlay.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/new_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable-hdpi/new_alternate.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable-hdpi/new_alternate.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable-hdpi/new_alternate.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable/new_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable/new_overlay.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/overlay/drawable/new_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable-ldpi/removed.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable-ldpi/removed.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable-ldpi/removed.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/new_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/new_overlay.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/new_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/removed_overlay.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/removed_overlay.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/removed_overlay.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/touched.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/touched.png Binary files differdeleted file mode 100644 index b55e544..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/touched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/untouched.png b/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/untouched.png Binary files differdeleted file mode 100644 index 47e1adf..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicFiles/resOut/drawable/untouched.png +++ /dev/null diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/main/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/main/values/values.xml deleted file mode 100644 index 32c8031..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/main/values/values.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="untouched">untouched</string> - <string name="touched">touched</string> - <string name="new_overlay">old_overlay</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/merger.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/merger.xml deleted file mode 100644 index 646c8a5..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/merger.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger> - <dataSet config="main"> - <source path="$TOP$$SEP$main"> - <file path="$TOP$$SEP$main$SEP$values$SEP$values.xml" qualifiers=""> - <string name="untouched">untouched</string> - <string name="touched">untouched</string> - <string name="removed">removed</string> - <string name="new_overlay">old_overlay</string> - </file> - <file path="$TOP$$SEP$main$SEP$values-en$SEP$values.xml" qualifiers="en"> - <string name="removed">removed</string> - </file> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay" /> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values-fr/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values-fr/values.xml deleted file mode 100644 index dcfcbdd..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values-fr/values.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="new_alternate">new_alternate</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values/values.xml deleted file mode 100644 index 78e296c..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/overlay/values/values.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="new_overlay">new_overlay</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values-en/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values-en/values.xml deleted file mode 100644 index b6be59a..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values-en/values.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="removed">removed</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values/values.xml deleted file mode 100644 index a3ccf6b..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues/resOut/values/values.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="untouched">untouched</string> - <string name="touched">untouched</string> - <string name="removed">removed</string> - <string name="new_overlay">old_overlay</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/main/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues2/main/values/values.xml deleted file mode 100644 index 7a0a153..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/main/values/values.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="untouched">untouched</string> - <string name="removed_overlay">untouched</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/merger.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues2/merger.xml deleted file mode 100644 index aa771aa..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/merger.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger> - <dataSet config="main"> - <source path="$TOP$$SEP$main"> - <file path="$TOP$$SEP$main$SEP$values$SEP$values.xml" qualifiers=""> - <string name="untouched">untouched</string> - <string name="removed_overlay">untouched</string> - </file> - </source> - </dataSet> - <dataSet config="overlay"> - <source path="$TOP$$SEP$overlay"> - <file path="$TOP$$SEP$overlay$SEP$values$SEP$values.xml" qualifiers=""> - <string name="removed_overlay">overlay</string> - </file> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/overlay/keepfolder.txt b/builder/src/test/resources/testData/resources/incMergeData/basicValues2/overlay/keepfolder.txt deleted file mode 100644 index 09786ef..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/overlay/keepfolder.txt +++ /dev/null @@ -1 +0,0 @@ -To keep the folder around.
\ No newline at end of file diff --git a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/resOut/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/basicValues2/resOut/values/values.xml deleted file mode 100644 index a0e41d1..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/basicValues2/resOut/values/values.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="untouched">untouched</string> - <string name="removed_overlay">overlay</string> -</resources> diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/alias_replaced_by_file.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/alias_replaced_by_file.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/alias_replaced_by_file.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/main.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/main.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/layout/main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/values/values.xml deleted file mode 100644 index 028b828..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/main/values/values.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <item type="layout" name="file_replaced_by_alias">@layout/main</item> -</resources> - diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/merger.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/merger.xml deleted file mode 100644 index e42e67a..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/merger.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merger> - <dataSet config="main"> - <source path="$TOP$$SEP$main"> - <file name="main" path="$TOP$$SEP$main$SEP$layout$SEP$main.xml" qualifiers="" type="layout"/> - <file name="file_replaced_by_alias" path="$TOP$$SEP$main$SEP$layout$SEP$file_replaced_by_alias.xml" qualifiers="" type="layout"/> - <file path="$TOP$$SEP$main$SEP$values$SEP$values.xml" qualifiers=""> - <item type="layout" name="alias_replaced_by_file">@layout/main</item> - </file> - </source> - </dataSet> -</merger> diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/file_replaced_by_alias.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/file_replaced_by_alias.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/file_replaced_by_alias.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/main.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/main.xml deleted file mode 100644 index b199751..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/layout/main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -<TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Test App - Basic" - android:id="@+id/text" - /> -</LinearLayout> - diff --git a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/values/values.xml b/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/values/values.xml deleted file mode 100644 index 1fbc46e..0000000 --- a/builder/src/test/resources/testData/resources/incMergeData/filesVsValues/resOut/values/values.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <item type="layout" name="alias_replaced_by_file">@layout/main</item> -</resources> - |