def test_run(self):
        expected_destination_path = FilePath(self.mktemp())
        expected_distribution = 'centos7'
        expected_package_uri = 'http://www.example.com/foo/bar.whl'
        fake_sys_module = FakeSysModule(
            argv=[
                'build-command-name',
                '--destination-path', expected_destination_path.path,
                '--distribution=%s' % (expected_distribution,),
                expected_package_uri]
        )
        script = BuildScript(sys_module=fake_sys_module)
        build_step = SpyStep()
        arguments = []

        def record_arguments(*args, **kwargs):
            arguments.append((args, kwargs))
            return build_step
        script.build_command = record_arguments
        script.main(top_level=FLOCKER_PATH)
        expected_build_arguments = [(
            (),
            dict(destination_path=expected_destination_path,
                 distribution=expected_distribution,
                 package_uri=expected_package_uri,
                 top_level=FLOCKER_PATH)
        )]
        self.assertEqual(expected_build_arguments, arguments)
        self.assertTrue(build_step.ran)
``BuildScript.main`` calls ``run`` on the instance returned by
dataset/ETHPy150Open ClusterHQ/flocker/admin/test/test_packaging.py/BuildScriptTests.test_run