# Copyright 2015 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import difflib import unittest2 from apitools.gen import gen_client from apitools.gen import test_utils def GetSampleClientPath(api_name, *path): return os.path.join(os.path.dirname(__file__), api_name + '_sample', *path) def _GetContent(file_path): with open(file_path) as f: return f.read() @test_utils.RunOnlyOnPython27 class ClientGenCliTest(unittest2.TestCase): def AssertDiffEqual(self, expected, actual): """Like unittest.assertEqual with a diff in the exception message.""" if expected != actual: unified_diff = difflib.unified_diff( expected.splitlines(), actual.splitlines()) raise AssertionError('\n'.join(unified_diff)) def _CheckGeneratedFiles(self, api_name, api_version): prefix = api_name + '_' + api_version with test_utils.TempDir() as tmp_dir_path: gen_client.main([ gen_client.__file__, '--generate_cli', '--init-file', 'empty', '--infile', GetSampleClientPath(api_name, prefix + '.json'), '--outdir', tmp_dir_path, '--overwrite', '--root_package', 'samples.{0}_sample.{0}_{1}'.format(api_name, api_version), 'client' ]) expected_files = ( set([prefix + '.py']) | # CLI files set([prefix + '_client.py', prefix + '_messages.py', '__init__.py'])) self.assertEquals(expected_files, set(os.listdir(tmp_dir_path))) for expected_file in expected_files: self.AssertDiffEqual( _GetContent(GetSampleClientPath( api_name, prefix, expected_file)), _GetContent(os.path.join(tmp_dir_path, expected_file))) def testGenClient_BigqueryDoc(self): self._CheckGeneratedFiles('bigquery', 'v2') def testGenClient_DnsDoc(self): self._CheckGeneratedFiles('dns', 'v1') def testGenClient_FusiontablesDoc(self): self._CheckGeneratedFiles('fusiontables', 'v1') def testGenClient_IamDoc(self): self._CheckGeneratedFiles('iam', 'v1') def testGenClient_ServicemanagementDoc(self): self._CheckGeneratedFiles('servicemanagement', 'v1') def testGenClient_StorageDoc(self): self._CheckGeneratedFiles('storage', 'v1')