Skip to content

Commit 1bf7d0f

Browse files
authored
Merge branch 'dev/v3.x.x' into feature/v3.x.x/1022-and-1021-app-version-process-info
2 parents 9474f19 + 378e143 commit 1bf7d0f

File tree

101 files changed

+1288
-1436
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1288
-1436
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
### Checklist
2+
1. [ ] Changelog entry
3+
2. [ ] Review requested
4+
3. [ ] `Version.cs` update - if required

Assets/Editor/BuildScript.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,6 @@ public static void BuildWindows64Development()
2727
Build(BuildTarget.StandaloneWindows64, true);
2828
}
2929

30-
public static void BuildOSX32Release()
31-
{
32-
Build(BuildTarget.StandaloneOSXIntel, false);
33-
}
34-
35-
public static void BuildOSX32Development()
36-
{
37-
Build(BuildTarget.StandaloneOSXIntel, true);
38-
}
39-
4030
public static void BuildOSX64Release()
4131
{
4232
Build(BuildTarget.StandaloneOSXIntel64, false);
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
using System;
2+
using System.IO;
3+
using System.Text;
4+
using Ionic.Zlib;
5+
using NUnit.Framework;
6+
using PatchKit.Unity.Utilities;
7+
8+
public class GZipStreamWrapperTest
9+
{
10+
private class MockStream : Stream
11+
{
12+
public override bool CanRead
13+
{
14+
get
15+
{
16+
return true;
17+
}
18+
}
19+
20+
public override bool CanSeek
21+
{
22+
get
23+
{
24+
return false;
25+
}
26+
}
27+
28+
public override bool CanWrite
29+
{
30+
get
31+
{
32+
return false;
33+
}
34+
}
35+
public override long Length
36+
{
37+
get
38+
{
39+
return _internalStream.Length;
40+
}
41+
}
42+
43+
public override long Position
44+
{
45+
get
46+
{
47+
return _internalStream.Position;
48+
}
49+
50+
set
51+
{
52+
_internalStream.Position = value;
53+
}
54+
}
55+
56+
private readonly int _packetSize;
57+
58+
private readonly MemoryStream _internalStream;
59+
60+
public MockStream(byte[] data, int packetSize)
61+
{
62+
_packetSize = packetSize;
63+
_internalStream = new MemoryStream(data);
64+
}
65+
66+
public override void Flush()
67+
{
68+
throw new System.NotImplementedException();
69+
}
70+
71+
public override int Read(byte[] buffer, int offset, int count)
72+
{
73+
return _internalStream.Read(buffer, offset, System.Math.Min(count, _packetSize));
74+
}
75+
76+
public override long Seek(long offset, SeekOrigin origin)
77+
{
78+
return _internalStream.Seek(offset, origin);
79+
}
80+
81+
public override void SetLength(long value)
82+
{
83+
_internalStream.SetLength(value);
84+
}
85+
86+
public override void Write(byte[] buffer, int offset, int count)
87+
{
88+
throw new System.NotImplementedException();
89+
}
90+
}
91+
92+
private const string RawData = "1234567890987654321qwerweqrfa";
93+
94+
private byte[] compressedData;
95+
96+
[SetUp]
97+
public void SetUp()
98+
{
99+
using (var targetStream = new MemoryStream())
100+
{
101+
using (var sourceStream = new MemoryStream(Encoding.ASCII.GetBytes(RawData)))
102+
{
103+
using (var gzipStream = new GZipStream(targetStream, CompressionMode.Compress))
104+
{
105+
Streams.Copy(sourceStream, gzipStream);
106+
}
107+
}
108+
109+
compressedData = targetStream.ToArray();
110+
}
111+
}
112+
113+
[Test]
114+
public void Raw_GZip_Stream_Fails_On_Mocked_Stream()
115+
{
116+
TestDelegate act = () => {
117+
using (var targetStream = new MemoryStream())
118+
{
119+
using (var mockStream = new MockStream(compressedData, 5))
120+
{
121+
using (var gzipStream = new GZipStream(mockStream, CompressionMode.Decompress))
122+
{
123+
Streams.Copy(gzipStream, targetStream);
124+
}
125+
}
126+
}
127+
};
128+
129+
Assert.Throws(typeof(ZlibException), act);
130+
}
131+
132+
[Test]
133+
public void Wrapped_Read_Succeeds_On_Mocked_Stream()
134+
{
135+
string decompressed;
136+
using (var targetStream = new MemoryStream())
137+
{
138+
using (var mockStream = new MockStream(compressedData, 5))
139+
{
140+
using (var wrapperStream = new GZipReadWrapperStream(mockStream))
141+
{
142+
using (var gzipStream = new GZipStream(wrapperStream, CompressionMode.Decompress))
143+
{
144+
Streams.Copy(gzipStream, targetStream);
145+
}
146+
}
147+
}
148+
149+
decompressed = Encoding.ASCII.GetString(targetStream.ToArray());
150+
}
151+
152+
Assert.That(decompressed == RawData);
153+
}
154+
}
Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Editor/Tests/RemoteResourceDownloaderTest.cs

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using PatchKit.Api.Models.Main;
66
using PatchKit.Unity.Patcher.AppData.Remote;
77
using PatchKit.Unity.Patcher.AppData.Remote.Downloaders;
8-
using PatchKit.Unity.Patcher.AppData.Remote.Downloaders.Torrents;
98
using PatchKit.Unity.Patcher.Cancellation;
109

1110
public class RemoteResourceDownloaderTest
@@ -37,7 +36,6 @@ private RemoteResource CreateTestRemoteResource()
3736
ChunksData = CreateTestChunksData(),
3837
Size = 1,
3938
HashCode = "hashcode",
40-
TorrentUrls = new[] {"torrent-url"},
4139
ResourceUrls = new[]
4240
{
4341
// TODO: Test when MetaUrl is set
@@ -51,7 +49,7 @@ private RemoteResource CreateTestRemoteResource()
5149
new ResourceUrl
5250
{
5351
Url = "url-2",
54-
MetaUrl = null,
52+
MetaUrl = null,
5553
Country = "PL",
5654
PartSize = 0,
5755
}
@@ -90,66 +88,21 @@ public void TearDown()
9088
}
9189

9290
[Test]
93-
public void UseTorrentDownloaderFirst()
94-
{
95-
RemoteResource resource = CreateTestRemoteResource();
96-
97-
var httpDownloader = Substitute.For<IHttpDownloader>();
98-
var chunkedHttpDownloader = Substitute.For<IChunkedHttpDownloader>();
99-
var torrentDownloader = Substitute.For<ITorrentDownloader>();
100-
101-
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource, true,
102-
(path, urls) => httpDownloader,
103-
(path, urls, data, size) => chunkedHttpDownloader,
104-
(path, filePath, bytes) => torrentDownloader);
105-
106-
downloader.Download(CancellationToken.Empty);
107-
108-
chunkedHttpDownloader.DidNotReceiveWithAnyArgs().Download(CancellationToken.Empty);
109-
torrentDownloader.ReceivedWithAnyArgs().Download(CancellationToken.Empty);
110-
}
111-
112-
[Test]
113-
public void UseChunkedHttpDownloaderIfTorrentFails()
114-
{
115-
RemoteResource resource = CreateTestRemoteResource();
116-
117-
var httpDownloader = Substitute.For<IHttpDownloader>();
118-
var chunkedHttpDownloader = Substitute.For<IChunkedHttpDownloader>();
119-
var torrentDownloader = Substitute.For<ITorrentDownloader>();
120-
torrentDownloader.When(t => t.Download(CancellationToken.Empty)).Do(
121-
info => { throw new DownloadFailureException("Test."); });
122-
123-
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource, true,
124-
(path, urls) => httpDownloader,
125-
(path, urls, data, size) => chunkedHttpDownloader,
126-
(path, filePath, bytes) => torrentDownloader);
127-
128-
downloader.Download(CancellationToken.Empty);
129-
130-
chunkedHttpDownloader.ReceivedWithAnyArgs().Download(CancellationToken.Empty);
131-
torrentDownloader.ReceivedWithAnyArgs().Download(CancellationToken.Empty);
132-
}
133-
134-
[Test]
135-
public void UseChunkedHttpDownloaderIfTorrentIsNotUsed()
91+
public void UseChunkedHttpDownloader()
13692
{
13793
RemoteResource resource = CreateTestRemoteResource();
13894

13995
var httpDownloader = Substitute.For<IHttpDownloader>();
14096
var chunkedHttpDownloader = Substitute.For<IChunkedHttpDownloader>();
141-
var torrentDownloader = Substitute.For<ITorrentDownloader>();
14297

143-
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource, false,
98+
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource,
14499
(path, urls) => httpDownloader,
145-
(path, urls, data, size) => chunkedHttpDownloader,
146-
(path, filePath, bytes) => torrentDownloader);
100+
(path, urls, data, size) => chunkedHttpDownloader);
147101

148102
downloader.Download(CancellationToken.Empty);
149103

150104
httpDownloader.DidNotReceiveWithAnyArgs().Download(CancellationToken.Empty);
151105
chunkedHttpDownloader.ReceivedWithAnyArgs().Download(CancellationToken.Empty);
152-
torrentDownloader.DidNotReceiveWithAnyArgs().Download(CancellationToken.Empty);
153106
}
154107

155108
[Test]
@@ -160,17 +113,14 @@ public void UseHttpDownloaderIfChunksAreNotAvailable()
160113

161114
var httpDownloader = Substitute.For<IHttpDownloader>();
162115
var chunkedHttpDownloader = Substitute.For<IChunkedHttpDownloader>();
163-
var torrentDownloader = Substitute.For<ITorrentDownloader>();
164116

165-
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource, false,
117+
var downloader = new RemoteResourceDownloader(_filePath, _metaFilePath, resource,
166118
(path, urls) => httpDownloader,
167-
(path, urls, data, size) => chunkedHttpDownloader,
168-
(path, filePath, bytes) => torrentDownloader);
119+
(path, urls, data, size) => chunkedHttpDownloader);
169120

170121
downloader.Download(CancellationToken.Empty);
171122

172123
httpDownloader.ReceivedWithAnyArgs().Download(CancellationToken.Empty);
173124
chunkedHttpDownloader.DidNotReceiveWithAnyArgs().Download(CancellationToken.Empty);
174-
torrentDownloader.DidNotReceiveWithAnyArgs().Download(CancellationToken.Empty);
175125
}
176126
}

Assets/StreamingAssets.meta renamed to Assets/PatchKit Patcher/Editor/Building.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)