def testOptimizations(self):
        repo_sync_manifest.main([
            '--repo-root',
            self.repo_dir,
            '--copy-repo',
            self.preload_src,
            '--git-cache',
            self.git_cache,
            '--repo-url',
            self.repo_url,
        ])

        # Ensure manifest_versions is not updated.
        self.assertEqual(self.refresh_manifest_mock.mock_calls, [])

        # Ensure RepoRepository created and Sync'd as expected.
        self.assertEqual(self.repo_mock.mock_calls, [
            mock.call(
                directory=self.repo_dir,
                manifest_repo_url=self.INT_MANIFEST_URL,
                branch='master',
                git_cache_dir=self.git_cache,
                repo_url=self.repo_url,
                groups=None,
            ),
            mock.call().PreLoad(self.preload_src),
            mock.call().Sync(detach=True, local_manifest=None)
        ])
    def testVersionExternal(self):
        self.resolve_version_mock.return_value = 'resolved_buildspec'

        repo_sync_manifest.main([
            '--repo-root',
            self.repo_dir,
            '--version',
            '1.2.3',
            '--manifest-versions-ext',
            self.mv_ext,
            '--external',
        ])

        # Ensure manifest-versions interactions are correct.
        self.assertEqual(self.refresh_manifest_mock.mock_calls,
                         [mock.call(self.mv_ext, self.MV_EXT_URL)])
        self.assertEqual(self.resolve_buildspec_mock.mock_calls, [])
        self.assertEqual(self.resolve_version_mock.mock_calls,
                         [mock.call(self.mv_ext, '1.2.3')])

        # Ensure RepoRepository created and Sync'd as expected.
        self.assertEqual(self.repo_mock.mock_calls, [
            mock.call(
                directory=self.repo_dir,
                manifest_repo_url=self.EXT_MANIFEST_URL,
                branch='master',
                git_cache_dir=None,
                repo_url=None,
                groups=None,
            ),
            mock.call().Sync(detach=True, local_manifest='resolved_buildspec')
        ])
    def testBuildSpecNoManifestVersions(self):
        with self.assertRaises(AssertionError):
            repo_sync_manifest.main([
                '--repo-root',
                self.repo_dir,
                '--buildspec',
                'test/spec',
            ])

        with self.assertRaises(AssertionError):
            repo_sync_manifest.main([
                '--repo-root',
                self.repo_dir,
                '--buildspec',
                'test/spec',
                '--external',
            ])
    def testBranch(self):
        repo_sync_manifest.main(
            ['--repo-root', self.repo_dir, '--branch', 'branch'])

        # Ensure RepoRepository created and Sync'd as expected.
        self.assertEqual(self.repo_mock.mock_calls, [
            mock.call(
                directory=self.repo_dir,
                manifest_repo_url=self.INT_MANIFEST_URL,
                branch='branch',
                git_cache_dir=None,
                repo_url=None,
                groups=None,
            ),
            mock.call().Sync(detach=True, local_manifest=None)
        ])

        # Ensure manifest_versions is not updated.
        self.assertEqual(self.refresh_manifest_mock.mock_calls, [])
    def testMinimalManifestUrl(self):
        repo_sync_manifest.main([
            '--repo-root',
            self.repo_dir,
            '--manifest-url',
            self.manifest_url,
        ])

        # Ensure manifest_versions is not updated.
        self.assertEqual(self.refresh_manifest_mock.mock_calls, [])

        # Ensure RepoRepository created and Sync'd as expected.
        self.assertEqual(self.repo_mock.mock_calls, [
            mock.call(
                directory=self.repo_dir,
                manifest_repo_url=self.manifest_url,
                branch='master',
                git_cache_dir=None,
                repo_url=None,
                groups=None,
            ),
            mock.call().Sync(detach=True, local_manifest=None)
        ])
 def notestHelp(self):
     with self.assertRaises(SystemExit):
         repo_sync_manifest.main([
             '--help',
         ])