downloader: Fix lint errors.
Also get rid of mox.
BUG=chromium:403086
TEST=unittests, cros flash
Change-Id: I39072ebfae90f16894701303cc6ba132428ddc1b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/1827369
Commit-Queue: Achuith Bhandarkar <achuith@chromium.org>
Tested-by: Achuith Bhandarkar <achuith@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/downloader.py b/downloader.py
old mode 100755
new mode 100644
index 8afdda9..4138b09
--- a/downloader.py
+++ b/downloader.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
@@ -18,6 +17,15 @@
import threading
from datetime import datetime
+try:
+ import android_build
+except ImportError:
+ # Ignore android_build import failure. This is to support devserver running
+ # inside a ChromeOS device triggered by cros flash. Most ChromeOS test images
+ # do not have google-api-python-client module and they don't need to support
+ # Android updating, therefore, ignore the import failure here.
+ android_build = None
+
import build_artifact
import common_util
import log_util
@@ -27,19 +35,9 @@
try:
from chromite.lib import gs
-except ImportError as e:
+except ImportError:
gs = None
-try:
- import android_build
-except ImportError as e:
- # Ignore android_build import failure. This is to support devserver running
- # inside a ChromeOS device triggered by cros flash. Most ChromeOS test images
- # do not have google-api-python-client module and they don't need to support
- # Android updating, therefore, ignore the import failure here.
- android_build = None
-
-
class DownloaderException(Exception):
"""Exception that aggregates all exceptions raised during async download.
@@ -107,7 +105,7 @@
def TouchTimestampForStaged(directory_path):
file_name = os.path.join(directory_path, Downloader._TIMESTAMP_FILENAME)
# Easiest python version of |touch file_name|
- with file(file_name, 'a'):
+ with open(file_name, 'a'):
os.utime(file_name, None)
@staticmethod
diff --git a/downloader_unittest.py b/downloader_unittest.py
index 0082f75..f6dbe98 100755
--- a/downloader_unittest.py
+++ b/downloader_unittest.py
@@ -8,22 +8,22 @@
from __future__ import print_function
-import mox
import os
import shutil
import tempfile
import unittest
+import mock
+
import build_artifact
import downloader
-# pylint: disable=W0212,E1120
-class DownloaderTestBase(mox.MoxTestBase):
+# pylint: disable=protected-access,no-value-for-parameter
+class DownloaderTestBase(unittest.TestCase):
"""Downloader Unittests."""
def setUp(self):
- mox.MoxTestBase.setUp(self)
self._work_dir = tempfile.mkdtemp('downloader-test')
self.board = 'x86-mario-release'
self.build = 'R17-1413.0.0-a1-b1346'
@@ -34,31 +34,28 @@
def tearDown(self):
shutil.rmtree(self._work_dir, ignore_errors=True)
- def _SimpleDownloadOfTestSuites(self, downloader_instance):
+ @mock.patch('downloader.Downloader._DownloadArtifactsSerially')
+ @mock.patch('downloader.Downloader._DownloadArtifactsInBackground')
+ def _SimpleDownloadOfTestSuites(self, downloader_instance, bg_mock,
+ serial_mock):
"""Helper to verify test_suites are downloaded correctly.
Args:
downloader_instance: Downloader object to test with.
+ bg_mock: background download method mock.
+ serial_mock: serial download method mock.
"""
factory = build_artifact.ChromeOSArtifactFactory(
downloader_instance.GetBuildDir(), ['test_suites'],
None, downloader_instance.GetBuild())
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsSerially')
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsInBackground')
- downloader.Downloader._DownloadArtifactsInBackground(mox.In(mox.IsA(
- build_artifact.AutotestTarball)))
- downloader.Downloader._DownloadArtifactsSerially(
- [mox.IsA(build_artifact.BundledArtifact)], no_wait=True)
- self.mox.ReplayAll()
downloader_instance.Download(factory)
# Sanity check the timestamp file exists.
+ install_dir = os.path.join(self._work_dir, self.board, self.build)
self.assertTrue(os.path.exists(
- os.path.join(self._work_dir, self.board, self.build,
- downloader.Downloader._TIMESTAMP_FILENAME)))
- self.mox.VerifyAll()
+ os.path.join(install_dir, downloader.Downloader._TIMESTAMP_FILENAME)))
+ serial_mock.assert_called()
+ bg_mock.assert_called()
def testSimpleDownloadOfTestSuitesFromGS(self):
"""Basic test_suites test.
@@ -81,22 +78,18 @@
self._SimpleDownloadOfTestSuites(
downloader.LocalDownloader(self._work_dir, self.local_path))
- def _DownloadSymbolsHelper(self, downloader_instance):
+ @mock.patch('downloader.Downloader._DownloadArtifactsSerially')
+ @mock.patch('downloader.Downloader._DownloadArtifactsInBackground')
+ def _DownloadSymbolsHelper(self, downloader_instance, bg_mock, serial_mock):
"""Basic symbols download."""
factory = build_artifact.ChromeOSArtifactFactory(
downloader_instance.GetBuildDir(), ['symbols'],
None, downloader_instance.GetBuild())
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsSerially')
# Should not get called but mocking so that we know it wasn't called.
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsInBackground')
- downloader.Downloader._DownloadArtifactsSerially(
- [mox.IsA(build_artifact.BundledArtifact)], no_wait=True)
- self.mox.ReplayAll()
downloader_instance.Download(factory)
- self.mox.VerifyAll()
+ serial_mock.assert_called()
+ bg_mock.assert_not_called()
def testDownloadSymbolsFromGS(self):
"""Basic symbols download from Google Storage."""
@@ -112,11 +105,10 @@
downloader.LocalDownloader(self._work_dir, self.local_path))
-class AndroidDownloaderTestBase(mox.MoxTestBase):
+class AndroidDownloaderTestBase(unittest.TestCase):
"""Android Downloader Unittests."""
def setUp(self):
- mox.MoxTestBase.setUp(self)
self._work_dir = tempfile.mkdtemp('downloader-test')
self.branch = 'release'
self.target = 'shamu-userdebug'
@@ -125,27 +117,23 @@
def tearDown(self):
shutil.rmtree(self._work_dir, ignore_errors=True)
- def testDownloadFromAndroidBuildServer(self):
+ @mock.patch('downloader.Downloader._DownloadArtifactsSerially')
+ @mock.patch('downloader.Downloader._DownloadArtifactsInBackground')
+ def testDownloadFromAndroidBuildServer(self, bg_mock, serial_mock):
"""Basic test to check download from Android's build server works."""
downloader_instance = downloader.AndroidBuildDownloader(
self._work_dir, self.branch, self.build_id, self.target)
factory = build_artifact.AndroidArtifactFactory(
downloader_instance.GetBuildDir(), ['fastboot'],
None, downloader_instance.GetBuild())
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsSerially')
- self.mox.StubOutWithMock(downloader.Downloader,
- '_DownloadArtifactsInBackground')
- downloader.Downloader._DownloadArtifactsSerially(
- [mox.IsA(build_artifact.Artifact)], no_wait=True)
- self.mox.ReplayAll()
downloader_instance.Download(factory)
# Sanity check the timestamp file exists.
self.assertTrue(os.path.exists(
os.path.join(self._work_dir, self.branch, self.target, self.build_id,
downloader.Downloader._TIMESTAMP_FILENAME)))
- self.mox.VerifyAll()
+ serial_mock.assert_called()
+ bg_mock.assert_not_called()
if __name__ == '__main__':