Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Unified Diff: chrome/installer/mac/app/testing/Unpacker_test.mm

Issue 2203583002: Added unpacking step (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added DMG to build file Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/mac/app/testing/Unpacker_test.mm
diff --git a/chrome/installer/mac/app/testing/Unpacker_test.mm b/chrome/installer/mac/app/testing/Unpacker_test.mm
new file mode 100644
index 0000000000000000000000000000000000000000..3f6d6326b7cf85b6de7f1aba1a4b752835401edf
--- /dev/null
+++ b/chrome/installer/mac/app/testing/Unpacker_test.mm
@@ -0,0 +1,110 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/installer/mac/app/Unpacker.h"
+
+#include "base/base_paths.h"
+#include "base/files/file_path.h"
+#include "base/path_service.h"
+#include "base/strings/sys_string_conversions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#import "chrome/installer/mac/app/Downloader.h"
+
+@interface TestDelegate : NSObject<UnpackDelegate>
+@property(nonatomic) BOOL pass;
+@property(nonatomic) dispatch_semaphore_t test_semaphore;
+- (void)fail;
+- (void)succeed;
+- (void)wait;
+@end
+
+@implementation TestDelegate
+@synthesize pass = pass_;
+@synthesize test_semaphore = test_semaphore_;
+
+- (id)init {
+ if ((self = [super init])) {
+ test_semaphore_ = dispatch_semaphore_create(0);
+ pass_ = NO;
+ }
+ return self;
+}
+
+- (void)succeed {
+ pass_ = YES;
+ dispatch_semaphore_signal(test_semaphore_);
+}
+- (void)fail {
+ pass_ = NO;
+ dispatch_semaphore_signal(test_semaphore_);
+}
+- (void)wait {
+ dispatch_semaphore_wait(test_semaphore_, DISPATCH_TIME_FOREVER);
+}
+
+- (void)unpacker:(Unpacker*)unpacker onMountSuccess:(NSString*)tempAppPath {
+ if ([[NSFileManager defaultManager] fileExistsAtPath:tempAppPath]) {
+ [self succeed];
+ } else {
+ [self fail];
+ }
+}
+- (void)unpacker:(Unpacker*)unpacker onMountFailure:(NSError*)error {
+ [self fail];
+}
+
+- (void)unpacker:(Unpacker*)unpacker onUnmountSuccess:(NSString*)mountpath {
+ if (![[NSFileManager defaultManager]
+ fileExistsAtPath:[NSString pathWithComponents:@[
+ mountpath, @"Google Chrome.app"
+ ]]]) {
+ [self succeed];
+ } else {
+ [self fail];
+ }
+}
+- (void)unpacker:(Unpacker*)unpacker onUnmountFailure:(NSError*)error {
+ [self fail];
+}
+
+@end
+
+namespace {
+
+TEST(UnpackerTest, IntegrationTest) {
+ // create objects and semaphore
+ Unpacker* unpack = [[Unpacker alloc] init];
+ TestDelegate* test_delegate = [[TestDelegate alloc] init];
+ unpack.delegate = test_delegate;
+
+ // get a disk image to use to test
+ base::FilePath originalPath;
+ PathService::Get(base::DIR_SOURCE_ROOT, &originalPath);
+ originalPath = originalPath.AppendASCII("chrome/test/data/mac_installer/");
+ base::FilePath copiedPath = base::FilePath(originalPath);
+ NSString* diskImageOriginalPath = base::SysUTF8ToNSString(
+ (originalPath.AppendASCII("test-dmg.dmg")).value());
+ NSString* diskImageCopiedPath = base::SysUTF8ToNSString(
+ (originalPath.AppendASCII("test-dmg2.dmg")).value());
+ [[NSFileManager defaultManager] copyItemAtPath:diskImageOriginalPath
+ toPath:diskImageCopiedPath
+ error:nil];
+ NSURL* dmgURL = [NSURL fileURLWithPath:diskImageCopiedPath isDirectory:NO];
+ // start mount step
+ [unpack mountDMGFromURL:dmgURL];
+ [test_delegate wait];
+
+ // is the disk image mounted?
+ ASSERT_TRUE([test_delegate pass]);
+
+ // start unmount step
+ [unpack unmountDMG];
+ [test_delegate wait];
+
+ // is the disk image gone?
+ EXPECT_TRUE([test_delegate pass]);
+}
+
+} // namespace
« no previous file with comments | « chrome/installer/mac/app/testing/OmahaXMLRequest_test.mm ('k') | chrome/installer/mac/app/testing/requestCheck.dtd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698