コード例 #1
0
        public async Task CanPatchFilesSourcedFromBSAs()
        {
            var profile = utils.AddProfile();
            var mod     = await utils.AddMod();

            var file = await utils.AddModFile(mod, @"baz.bin", 10);

            await utils.Configure();


            await using var tempFile = new TempFile();
            var bsaState = new BSAStateObject
            {
                Magic = "BSA\0", Version = 0x69, ArchiveFlags = 0x107, FileFlags = 0x0,
            };

            await using (var bsa = await bsaState.MakeBuilder(1024 * 1024))
            {
                await bsa.AddFile(new BSAFileStateObject
                {
                    Path = (RelativePath)@"foo\bar\baz.bin", Index = 0, FlipCompression = false
                }, new MemoryStream(utils.RandomData()));

                await bsa.Build(tempFile.Path);
            }

            var archive = utils.AddManualDownload(
                new Dictionary <string, byte[]> {
                { "/stuff/files.bsa", await tempFile.Path.ReadAllBytesAsync() }
            });

            await CompileAndInstall(profile);

            await utils.VerifyInstalledFile(mod, @"baz.bin");
        }
コード例 #2
0
        public async Task CanNoMatchIncludeFilesFromBSAs()
        {
            var profile = utils.AddProfile();
            var mod     = await utils.AddMod();

            var file = await utils.AddModFile(mod, @"baz.bsa", 10);

            await file.Parent.Combine("meta.ini").WriteAllLinesAsync(new[]
            {
                "[General]",
                "notes= asdf WABBAJACK_NOMATCH_INCLUDE asdfa"
            });

            await utils.Configure();


            await using var tempFile = new TempFile();
            var bsaState = new BSAStateObject
            {
                Magic = "BSA\0", Version = 0x69, ArchiveFlags = 0x107, FileFlags = 0x0,
            };


            var tempFileData = utils.RandomData(1024);

            await using (var bsa = await bsaState.MakeBuilder(1024 * 1024))
            {
                await bsa.AddFile(new BSAFileStateObject
                {
                    Path = (RelativePath)@"matching_file.bin", Index = 0, FlipCompression = false
                }, new MemoryStream(tempFileData));

                await bsa.AddFile(
                    new BSAFileStateObject()
                {
                    Path = (RelativePath)@"unmatching_file.bin", Index = 1, FlipCompression = false
                }, new MemoryStream(utils.RandomData(1024)));

                await bsa.Build(file);
            }

            var archive = utils.AddManualDownload(
                new Dictionary <string, byte[]> {
                { "/stuff/matching_file_data.bin", tempFileData }
            });

            await CompileAndInstall(profile);

            await utils.VerifyInstalledFile(mod, @"baz.bsa");
        }