Пример #1
0
        public void LocalizedAssemblies_ShouldBeFastDeployed()
        {
            AssertCommercialBuild();
            AssertHasDevices();

            var path = Path.Combine("temp", TestName);
            var lib  = new XamarinAndroidLibraryProject {
                ProjectName = "Localization",
            };

            InlineData.AddCultureResourcesToProject(lib, "Bar", "CancelButton");

            var app = new XamarinAndroidApplicationProject {
                EmbedAssembliesIntoApk = false,
            };

            InlineData.AddCultureResourcesToProject(lib, "Foo", "CancelButton");
            app.References.Add(new BuildItem.ProjectReference($"..\\{lib.ProjectName}\\{lib.ProjectName}.csproj", lib.ProjectName, lib.ProjectGuid));

            using (var libBuilder = CreateDllBuilder(Path.Combine(path, lib.ProjectName)))
                using (var appBuilder = CreateApkBuilder(Path.Combine(path, app.ProjectName))) {
                    Assert.IsTrue(libBuilder.Build(lib), "Library Build should have succeeded.");
                    Assert.IsTrue(appBuilder.Install(app), "App Install should have succeeded.");
                    var projectOutputPath     = Path.Combine(Root, appBuilder.ProjectDirectory, app.OutputPath);
                    var resourceFilesFromDisk = Directory.EnumerateFiles(projectOutputPath, "*.resources.dll", SearchOption.AllDirectories)
                                                .Select(r => r = r.Replace(projectOutputPath, string.Empty).Replace("\\", "/"));

                    var overrideContents = string.Empty;
                    foreach (var dir in GetOverrideDirectoryPaths(app.PackageName))
                    {
                        overrideContents += RunAdbCommand($"shell run-as {app.PackageName} find {dir}");
                    }
                    Assert.IsTrue(resourceFilesFromDisk.Any(), $"Unable to find any localized assemblies in {resourceFilesFromDisk}");
                    foreach (var res in resourceFilesFromDisk)
                    {
                        StringAssert.Contains(res, overrideContents, $"{res} did not exist in the .__override__ directory.\nFound:{overrideContents}");
                    }
                    appBuilder.BuildLogFile = "uninstall.log";
                    appBuilder.Uninstall(app);
                }
        }