aboutsummaryrefslogtreecommitdiff
path: root/tests/PackageManifest_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/PackageManifest_test.cpp')
-rw-r--r--tests/PackageManifest_test.cpp343
1 files changed, 0 insertions, 343 deletions
diff --git a/tests/PackageManifest_test.cpp b/tests/PackageManifest_test.cpp
deleted file mode 100644
index e38abf80..00000000
--- a/tests/PackageManifest_test.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-#include <QTest>
-#include <QDebug>
-
-#include <mojang/PackageManifest.h>
-
-using namespace mojang_files;
-
-QDebug operator<<(QDebug debug, const Path &path)
-{
- debug << path.toString();
- return debug;
-}
-
-class PackageManifestTest : public QObject
-{
- Q_OBJECT
-
-private slots:
- void test_parse();
- void test_parse_file();
- void test_inspect();
-#ifndef Q_OS_WIN32
- void test_inspect_symlinks();
-#endif
- void mkdir_deep();
- void rmdir_deep();
-
- void identical_file();
- void changed_file();
- void added_file();
- void removed_file();
-};
-
-namespace {
-QByteArray basic_manifest = R"END(
-{
- "files": {
- "a/b.txt": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/b.txt",
- "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "size": 0
- }
- },
- "executable": true
- },
- "a/b/c": {
- "type": "directory"
- },
- "a/b/c.txt": {
- "type": "link",
- "target": "../b.txt"
- }
- }
-}
-)END";
-}
-
-void PackageManifestTest::test_parse()
-{
- auto manifest = Package::fromManifestContents(basic_manifest);
- QVERIFY(manifest.valid == true);
- QVERIFY(manifest.files.size() == 1);
- QVERIFY(manifest.files.count(Path("a/b.txt")));
- auto &file = manifest.files[Path("a/b.txt")];
- QVERIFY(file.executable == true);
- QVERIFY(file.hash == "da39a3ee5e6b4b0d3255bfef95601890afd80709");
- QVERIFY(file.size == 0);
- QVERIFY(manifest.folders.size() == 4);
- QVERIFY(manifest.folders.count(Path(".")));
- QVERIFY(manifest.folders.count(Path("a")));
- QVERIFY(manifest.folders.count(Path("a/b")));
- QVERIFY(manifest.folders.count(Path("a/b/c")));
- QVERIFY(manifest.symlinks.size() == 1);
- auto symlinkPath = Path("a/b/c.txt");
- QVERIFY(manifest.symlinks.count(symlinkPath));
- auto &symlink = manifest.symlinks[symlinkPath];
- QVERIFY(symlink == Path("../b.txt"));
- QVERIFY(manifest.sources.size() == 1);
-}
-
-void PackageManifestTest::test_parse_file() {
- auto path = QFINDTESTDATA("testdata/PackageManifest/1.8.0_202-x64.json");
- auto manifest = Package::fromManifestFile(path);
- QVERIFY(manifest.valid == true);
-}
-
-
-void PackageManifestTest::test_inspect() {
- auto path = QFINDTESTDATA("testdata/PackageManifest/inspect_win/");
- auto manifest = Package::fromInspectedFolder(path);
- QVERIFY(manifest.valid == true);
- QVERIFY(manifest.files.size() == 2);
- QVERIFY(manifest.files.count(Path("a/b.txt")));
- auto &file1 = manifest.files[Path("a/b.txt")];
- QVERIFY(file1.executable == false);
- QVERIFY(file1.hash == "da39a3ee5e6b4b0d3255bfef95601890afd80709");
- QVERIFY(file1.size == 0);
- QVERIFY(manifest.files.count(Path("a/b/b.txt")));
- auto &file2 = manifest.files[Path("a/b/b.txt")];
- QVERIFY(file2.executable == false);
- QVERIFY(file2.hash == "da39a3ee5e6b4b0d3255bfef95601890afd80709");
- QVERIFY(file2.size == 0);
- QVERIFY(manifest.folders.size() == 3);
- QVERIFY(manifest.folders.count(Path(".")));
- QVERIFY(manifest.folders.count(Path("a")));
- QVERIFY(manifest.folders.count(Path("a/b")));
- QVERIFY(manifest.symlinks.size() == 0);
-}
-
-#ifndef Q_OS_WIN32
-void PackageManifestTest::test_inspect_symlinks() {
- auto path = QFINDTESTDATA("testdata/PackageManifest/inspect/");
- auto manifest = Package::fromInspectedFolder(path);
- QVERIFY(manifest.valid == true);
- QVERIFY(manifest.files.size() == 1);
- QVERIFY(manifest.files.count(Path("a/b.txt")));
- auto &file = manifest.files[Path("a/b.txt")];
- QVERIFY(file.executable == true);
- QVERIFY(file.hash == "da39a3ee5e6b4b0d3255bfef95601890afd80709");
- QVERIFY(file.size == 0);
- QVERIFY(manifest.folders.size() == 3);
- QVERIFY(manifest.folders.count(Path(".")));
- QVERIFY(manifest.folders.count(Path("a")));
- QVERIFY(manifest.folders.count(Path("a/b")));
- QVERIFY(manifest.symlinks.size() == 1);
- QVERIFY(manifest.symlinks.count(Path("a/b/b.txt")));
- qDebug() << manifest.symlinks[Path("a/b/b.txt")];
- QVERIFY(manifest.symlinks[Path("a/b/b.txt")] == Path("../b.txt"));
-}
-#endif
-
-void PackageManifestTest::mkdir_deep() {
-
- Package from;
- auto to = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/e": {
- "type": "directory"
- }
- }
-}
-)END");
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 0);
- QVERIFY(operations.rmdirs.size() == 0);
-
- QVERIFY(operations.mkdirs.size() == 6);
- QVERIFY(operations.mkdirs[0] == Path("."));
- QVERIFY(operations.mkdirs[1] == Path("a"));
- QVERIFY(operations.mkdirs[2] == Path("a/b"));
- QVERIFY(operations.mkdirs[3] == Path("a/b/c"));
- QVERIFY(operations.mkdirs[4] == Path("a/b/c/d"));
- QVERIFY(operations.mkdirs[5] == Path("a/b/c/d/e"));
-
- QVERIFY(operations.downloads.size() == 0);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-void PackageManifestTest::rmdir_deep() {
-
- Package to;
- auto from = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/e": {
- "type": "directory"
- }
- }
-}
-)END");
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 0);
-
- QVERIFY(operations.rmdirs.size() == 6);
- QVERIFY(operations.rmdirs[0] == Path("a/b/c/d/e"));
- QVERIFY(operations.rmdirs[1] == Path("a/b/c/d"));
- QVERIFY(operations.rmdirs[2] == Path("a/b/c"));
- QVERIFY(operations.rmdirs[3] == Path("a/b"));
- QVERIFY(operations.rmdirs[4] == Path("a"));
- QVERIFY(operations.rmdirs[5] == Path("."));
-
- QVERIFY(operations.mkdirs.size() == 0);
- QVERIFY(operations.downloads.size() == 0);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-void PackageManifestTest::identical_file() {
- QByteArray manifest = R"END(
-{
- "files": {
- "a/b/c/d/empty.txt": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/empty.txt",
- "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "size": 0
- }
- },
- "executable": false
- }
- }
-}
-)END";
- auto from = Package::fromManifestContents(manifest);
- auto to = Package::fromManifestContents(manifest);
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 0);
- QVERIFY(operations.rmdirs.size() == 0);
- QVERIFY(operations.mkdirs.size() == 0);
- QVERIFY(operations.downloads.size() == 0);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-void PackageManifestTest::changed_file() {
- auto from = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/file": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/empty.txt",
- "sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "size": 0
- }
- },
- "executable": false
- }
- }
-}
-)END");
- auto to = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/file": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/space.txt",
- "sha1": "dd122581c8cd44d0227f9c305581ffcb4b6f1b46",
- "size": 1
- }
- },
- "executable": false
- }
- }
-}
-)END");
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 1);
- QCOMPARE(operations.deletes[0], Path("a/b/c/d/file"));
- QVERIFY(operations.rmdirs.size() == 0);
- QVERIFY(operations.mkdirs.size() == 0);
- QVERIFY(operations.downloads.size() == 1);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-void PackageManifestTest::added_file() {
- auto from = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d": {
- "type": "directory"
- }
- }
-}
-)END");
- auto to = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/file": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/space.txt",
- "sha1": "dd122581c8cd44d0227f9c305581ffcb4b6f1b46",
- "size": 1
- }
- },
- "executable": false
- }
- }
-}
-)END");
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 0);
- QVERIFY(operations.rmdirs.size() == 0);
- QVERIFY(operations.mkdirs.size() == 0);
- QVERIFY(operations.downloads.size() == 1);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-void PackageManifestTest::removed_file() {
- auto from = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d/file": {
- "type": "file",
- "downloads": {
- "raw": {
- "url": "http://dethware.org/space.txt",
- "sha1": "dd122581c8cd44d0227f9c305581ffcb4b6f1b46",
- "size": 1
- }
- },
- "executable": false
- }
- }
-}
-)END");
- auto to = Package::fromManifestContents(R"END(
-{
- "files": {
- "a/b/c/d": {
- "type": "directory"
- }
- }
-}
-)END");
- auto operations = UpdateOperations::resolve(from, to);
- QVERIFY(operations.deletes.size() == 1);
- QCOMPARE(operations.deletes[0], Path("a/b/c/d/file"));
- QVERIFY(operations.rmdirs.size() == 0);
- QVERIFY(operations.mkdirs.size() == 0);
- QVERIFY(operations.downloads.size() == 0);
- QVERIFY(operations.mklinks.size() == 0);
- QVERIFY(operations.executable_fixes.size() == 0);
-}
-
-QTEST_GUILESS_MAIN(PackageManifestTest)
-
-#include "PackageManifest_test.moc"
-