blob: 4f8939284dcf87e079886bc5d1a3e285ddd8b2c1 [file]
#!/usr/bin/env python3
# Copyright (c) 2021 Project CHIP Authors
#
# 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.
"""
Test for GN Java build rules. This test should be executed using ninja, and
generate_jars_for_test.py should have been called before running this test.
"""
import json
import os
from os import path
import subprocess
import unittest
class JavaBuildTest(unittest.TestCase):
chip_root = os.getenv('PW_PROJECT_ROOT')
local_test_dir = '/build/chip/java/tests'
test_dir = chip_root + local_test_dir
jars_dir = 'python/lib' + local_test_dir
configs_dir = 'python/gen' + local_test_dir
tmp_dir = '/tmp/chip_java_build_test'
# Target names in the BUILD.gn
targets_to_check = [
'java_library',
'child_library',
'child_library_2',
'grandchild_library',
]
prebuilt_targets_to_check = [
'java_prebuilt',
'child_prebuilt'
]
def testExpectedJarsCreated(self):
jars_dir = JavaBuildTest.jars_dir
for target in JavaBuildTest.targets_to_check:
self.assertTrue(path.exists(jars_dir + '/' + target + '.jar'))
# Prebuilt jars should have been copied to the output directory.
self.assertTrue(path.exists(jars_dir + '/prebuilt_jar.jar'))
self.assertTrue(path.exists(jars_dir + '/child_jar.jar'))
def testBuildConfigMatchesExpected(self):
self.maxDiff = None
configs_dir = JavaBuildTest.configs_dir
expected_dir = JavaBuildTest.test_dir + '/expected_output'
for target in (JavaBuildTest.targets_to_check + JavaBuildTest.prebuilt_targets_to_check):
with open(expected_dir + '/' + target + '_expected.json', 'r') as expected_config, open(configs_dir + '/' + target + '.json', 'r') as actual_config:
expected_json = json.load(expected_config)['deps_info']
actual_json = json.load(actual_config)['deps_info']
self.assertEqual(expected_json['name'], actual_json['name'])
self.assertEqual(
expected_json['jar_path'], actual_json['jar_path'])
self.assertCountEqual(
expected_json['deps_configs'], actual_json['deps_configs'])
self.assertCountEqual(
expected_json['deps_jars'], actual_json['deps_jars'])
if __name__ == '__main__':
unittest.main()