Index: native_client_sdk/src/project_templates/init_project_test.py |
diff --git a/native_client_sdk/src/project_templates/init_project_test.py b/native_client_sdk/src/project_templates/init_project_test.py |
deleted file mode 100755 |
index ae1d0b291fe31ffcfe50ec9d4a62e491486fbdbb..0000000000000000000000000000000000000000 |
--- a/native_client_sdk/src/project_templates/init_project_test.py |
+++ /dev/null |
@@ -1,263 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 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. |
- |
-"""Unit tests for init_project.py.""" |
- |
-__author__ = 'mlinck@google.com (Michael Linck)' |
- |
-import fileinput |
-import os |
-import shutil |
-import sys |
-import unittest |
-import mox |
-import init_project |
- |
- |
-def TestMock(file_path, open_func): |
- temp_file = open_func(file_path) |
- temp_file.close() |
- |
- |
-class TestGlobalFunctions(unittest.TestCase): |
- """Class for test cases to cover globally declared helper functions.""" |
- |
- def testGetCamelCaseName(self): |
- output = init_project.GetCamelCaseName('camel_case_name') |
- self.assertEqual(output, 'CamelCaseName') |
- output = init_project.GetCamelCaseName('print_42') |
- self.assertEqual(output, 'Print42') |
- |
- def testGetCodeDirectory(self): |
- output = init_project.GetCodeDirectory(True, '') |
- self.assertEqual(output, 'c') |
- output = init_project.GetCodeDirectory(False, '') |
- self.assertEqual(output, 'cc') |
- output = init_project.GetCodeDirectory(True, 'test') |
- self.assertEqual(output, 'test/c') |
- output = init_project.GetCodeDirectory(False, 'test') |
- self.assertEqual(output, 'test/cc') |
- |
- def testGetCodeSourceFiles(self): |
- output = init_project.GetCodeSourceFiles(False) |
- self.assertEqual(output, init_project.CC_SOURCE_FILES) |
- output = init_project.GetCodeSourceFiles(True) |
- self.assertEqual(output, init_project.C_SOURCE_FILES) |
- |
- def testGetCommonSourceFiles(self): |
- output = init_project.GetCommonSourceFiles() |
- expected_output_linux = init_project.COMMON_PROJECT_FILES |
- expected_output_windows = init_project.COMMON_PROJECT_FILES |
- expected_output_windows.extend(['scons.bat']) |
- linux_match = (output == expected_output_linux) |
- windows_match = (output == expected_output_windows) |
- passed = (linux_match | windows_match) |
- self.assertTrue(passed) |
- |
- def testGetHTMLDirectory(self): |
- output = init_project.GetHTMLDirectory('') |
- self.assertEqual(output, 'html') |
- output = init_project.GetHTMLDirectory('test') |
- self.assertEqual(output, 'test/html') |
- |
- def testGetHTMLSourceFiles(self): |
- output = init_project.GetHTMLSourceFiles() |
- self.assertEqual(output, init_project.HTML_FILES) |
- |
- def testGetTargetFileName(self): |
- output = init_project.GetTargetFileName('project_file.cc', 'bonkers') |
- self.assertEqual(output, 'bonkers.cc') |
- output = init_project.GetTargetFileName('constant.html', 'bonkers') |
- self.assertEqual(output, 'constant.html') |
- |
- def testParseArguments(self): |
- output = init_project.ParseArguments(['-n', 'test_name', '-d', 'test/dir']) |
- self.assertEqual(output.is_c_project, False) |
- self.assertEqual(output.project_name, 'test_name') |
- self.assertEqual(output.project_directory, 'test/dir') |
- output = init_project.ParseArguments(['-n', 'test_name_2', '-c']) |
- self.assertEqual(output.is_c_project, True) |
- self.assertEqual(output.project_name, 'test_name_2') |
- self.assertEqual(output.project_directory, |
- init_project.GetDefaultProjectDir()) |
- |
- |
-class TestProjectInitializer(unittest.TestCase): |
- """Class for test cases to cover public interface of ProjectInitializer.""" |
- |
- def __init__(self): |
- unittest.TestCase.__init__(self) |
- self.os_mock = None |
- self.fileinput_mock = None |
- self.sys_mock = None |
- self.shutil_mock = None |
- |
- def setUp(self): |
- self.script_dir = os.path.abspath(os.path.dirname(__file__)) |
- self.nacl_src_dir = os.getenv('NACL_SDK_ROOT', None) |
- self.mock_factory = mox.Mox() |
- # This mock is only valid for initialization and will be overwritten |
- # after ward by self.os_mock. |
- init_path_mock = self.mock_factory.CreateMock(os.path) |
- init_path_mock.join('test/dir', 'test_project').AndReturn( |
- 'test/dir/test_project') |
- init_path_mock.exists('test/dir/test_project').AndReturn(False) |
- init_os_mock = self.mock_factory.CreateMock(os) |
- init_os_mock.path = init_path_mock |
- init_os_mock.makedirs('test/dir/test_project') |
- self.mock_factory.ReplayAll() |
- self.test_subject = init_project.ProjectInitializer( |
- # True => is C project, False => is vs project |
- True, False, 'test_project', 'test/dir', 'pepper_14', self.script_dir, |
- self.nacl_src_dir, os_resource=init_os_mock) |
- self.mock_factory.VerifyAll() |
- self.InitializeResourceMocks() |
- |
- def InitializeResourceMocks(self): |
- """Can be called multiple times if multiple functions need to be tested.""" |
- self.fileinput_mock = self.mock_factory.CreateMock(fileinput) |
- self.test_subject.fileinput = self.fileinput_mock |
- self.os_mock = self.mock_factory.CreateMock(os) |
- self.test_subject.os = self.os_mock |
- self.shutil_mock = self.mock_factory.CreateMock(shutil) |
- self.test_subject.shutil = self.shutil_mock |
- self.sys_mock = self.mock_factory.CreateMock(sys) |
- self.test_subject.sys = self.sys_mock |
- |
- def testCopyAndRenameFiles(self): |
- self.shutil_mock.copy('source/dir/normal_name.txt', |
- 'test/dir/test_project/normal_name.txt') |
- self.shutil_mock.copy('source/dir/project_file.txt', |
- 'test/dir/test_project/test_project.txt') |
- self.os_mock.path = os.path |
- self.mock_factory.ReplayAll() |
- self.test_subject.CopyAndRenameFiles( |
- 'source/dir', ['normal_name.txt', 'project_file.txt']) |
- self.mock_factory.VerifyAll() |
- |
- def testPrepareDirectoryContent(self): |
- self.shutil_mock.copy( |
- '%s/c/build.scons' % self.script_dir, |
- 'test/dir/test_project/build.scons') |
- self.shutil_mock.copy( |
- '%s/c/project_file.c' % self.script_dir, |
- 'test/dir/test_project/test_project.c') |
- self.shutil_mock.copy( |
- '%s/html/project_file.html' % self.script_dir, |
- 'test/dir/test_project/test_project.html') |
- self.shutil_mock.copy( |
- '%s/scons' % self.script_dir, |
- 'test/dir/test_project/scons') |
- self.shutil_mock.copy( |
- '%s/scons.bat' % self.script_dir, |
- 'test/dir/test_project/scons.bat') |
- self.os_mock.path = os.path |
- self.mock_factory.ReplayAll() |
- self.test_subject.PrepareDirectoryContent() |
- self.mock_factory.VerifyAll() |
- |
- def testPrepareFileContent(self): |
- self.testCopyAndRenameFiles() |
- # We need a new set of resource mocks since the old ones have already been |
- # used. |
- self.InitializeResourceMocks() |
- path_mock = self.mock_factory.CreateMock(os.path) |
- stdout_mock = self.mock_factory.CreateMock(sys.stdout) |
- self.os_mock.path = path_mock |
- path_mock.abspath(self.nacl_src_dir).AndReturn(self.nacl_src_dir) |
- self.fileinput_mock.input( |
- 'test/dir/test_project/normal_name.txt', |
- inplace=1, mode='U').AndReturn( |
- ['A line with <PROJECT_NAME>.', |
- 'A line with <ProjectName>.', |
- 'A line with <NACL_SDK_ROOT>.', |
- 'A line with <NACL_PLATFORM>.']) |
- stdout_mock.write('A line with test_project.') |
- stdout_mock.write('A line with <ProjectName>.') |
- stdout_mock.write('A line with <NACL_SDK_ROOT>.') |
- stdout_mock.write('A line with <NACL_PLATFORM>.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/normal_name.txt', |
- inplace=1, mode='U').AndReturn( |
- ['A line with test_project.', |
- 'A line with <ProjectName>.', |
- 'A line with <NACL_SDK_ROOT>.', |
- 'A line with <NACL_PLATFORM>.']) |
- stdout_mock.write('A line with test_project.') |
- stdout_mock.write('A line with TestProject.') |
- stdout_mock.write('A line with <NACL_SDK_ROOT>.') |
- stdout_mock.write('A line with <NACL_PLATFORM>.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/normal_name.txt', |
- inplace=1, mode='U').AndReturn( |
- ['A line with test_project.', |
- 'A line with TestProject.', |
- 'A line with <NACL_SDK_ROOT>.', |
- 'A line with <NACL_PLATFORM>.']) |
- stdout_mock.write('A line with test_project.') |
- stdout_mock.write('A line with TestProject.') |
- stdout_mock.write('A line with %s.' % self.nacl_src_dir) |
- stdout_mock.write('A line with <NACL_PLATFORM>.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/normal_name.txt', |
- inplace=1, mode='U').AndReturn( |
- ['A line with test_project.', |
- 'A line with TestProject.', |
- 'A line with some/dir.', |
- 'A line with <NACL_PLATFORM>.']) |
- stdout_mock.write('A line with test_project.') |
- stdout_mock.write('A line with TestProject.') |
- stdout_mock.write('A line with some/dir.') |
- stdout_mock.write('A line with pepper_14.') |
- # One multi-line file with different replacements has already been mocked |
- # so we make this next test simpler. |
- self.fileinput_mock.input( |
- 'test/dir/test_project/test_project.txt', |
- inplace=1, mode='U').AndReturn(['A line with no replaceable text.']) |
- stdout_mock.write('A line with no replaceable text.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/test_project.txt', |
- inplace=1, mode='U').AndReturn(['A line with no replaceable text.']) |
- stdout_mock.write('A line with no replaceable text.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/test_project.txt', |
- inplace=1, mode='U').AndReturn(['A line with no replaceable text.']) |
- stdout_mock.write('A line with no replaceable text.') |
- self.fileinput_mock.input( |
- 'test/dir/test_project/test_project.txt', |
- inplace=1, mode='U').AndReturn(['A line with no replaceable text.']) |
- stdout_mock.write('A line with no replaceable text.') |
- self.sys_mock.stdout = stdout_mock |
- self.mock_factory.ReplayAll() |
- self.test_subject.PrepareFileContent() |
- self.mock_factory.VerifyAll() |
- |
- def testReplaceInFile(self): |
- self.fileinput_mock.input('test/path', inplace=1, mode='U').AndReturn( |
- ['A sentence replace_me.']) |
- stdout_mock = self.mock_factory.CreateMock(sys.stdout) |
- stdout_mock.write('A sentence with_this.') |
- self.sys_mock.stdout = stdout_mock |
- self.mock_factory.ReplayAll() |
- self.test_subject.ReplaceInFile('test/path', 'replace_me', 'with_this') |
- self.mock_factory.VerifyAll() |
- |
- |
-def RunTests(): |
- # It's possible to do this with one suite instead of two, but then it's |
- # harder to read the test output. |
- return_value = 1 |
- suite_one = unittest.TestLoader().loadTestsFromTestCase(TestGlobalFunctions) |
- result_one = unittest.TextTestRunner(verbosity=2).run(suite_one) |
- suite_two = unittest.TestLoader().loadTestsFromTestCase( |
- TestProjectInitializer) |
- result_two = unittest.TextTestRunner(verbosity=2).run(suite_two) |
- if result_one.wasSuccessful() and result_two.wasSuccessful(): |
- return_value = 0 |
- return return_value |
- |
- |
-if __name__ == '__main__': |
- sys.exit(RunTests()) |