diff options
author | 2016-01-14 18:43:36 +0000 | |
---|---|---|
committer | 2016-01-14 18:43:36 +0000 | |
commit | 7b4199a5fa9f151fbf3af2a34f26d04215a1016c (patch) | |
tree | 111493b5fee26087dcc8abc1a1f56a140d549c8d /test/970-iface-super-resolution-generated/util-src/generate_java.py | |
parent | 15db4dcfcc17dfe6c41d3c7b26355ccfa2504f4e (diff) | |
parent | 705ad49f353d3f90d8b63625aca2c2035bacdbef (diff) |
Merge "Support directly invoking interface default methods"
Diffstat (limited to 'test/970-iface-super-resolution-generated/util-src/generate_java.py')
-rwxr-xr-x | test/970-iface-super-resolution-generated/util-src/generate_java.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/test/970-iface-super-resolution-generated/util-src/generate_java.py b/test/970-iface-super-resolution-generated/util-src/generate_java.py new file mode 100755 index 0000000000..c12f10d790 --- /dev/null +++ b/test/970-iface-super-resolution-generated/util-src/generate_java.py @@ -0,0 +1,77 @@ +#!/usr/bin/python3 +# +# Copyright (C) 2015 The Android Open Source Project +# +# 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. + +""" +Generate java test files for test 966. +""" + +import generate_smali as base +import os +import sys +from pathlib import Path + +BUILD_TOP = os.getenv("ANDROID_BUILD_TOP") +if BUILD_TOP is None: + print("ANDROID_BUILD_TOP not set. Please run build/envsetup.sh", file=sys.stderr) + sys.exit(1) + +# Allow us to import mixins. +sys.path.append(str(Path(BUILD_TOP)/"art"/"test"/"utils"/"python")) + +import testgen.mixins as mixins + +class JavaConverter(mixins.DumpMixin, mixins.Named, mixins.JavaFileMixin): + """ + A class that can convert a SmaliFile to a JavaFile. + """ + def __init__(self, inner): + self.inner = inner + + def get_name(self): + return self.inner.get_name() + + def __str__(self): + out = "" + for line in str(self.inner).splitlines(keepends = True): + if line.startswith("#"): + out += line[1:] + return out + +def main(argv): + final_java_dir = Path(argv[1]) + if not final_java_dir.exists() or not final_java_dir.is_dir(): + print("{} is not a valid java dir".format(final_java_dir), file=sys.stderr) + sys.exit(1) + initial_java_dir = Path(argv[2]) + if not initial_java_dir.exists() or not initial_java_dir.is_dir(): + print("{} is not a valid java dir".format(initial_java_dir), file=sys.stderr) + sys.exit(1) + expected_txt = Path(argv[3]) + mainclass, all_files = base.create_all_test_files() + with expected_txt.open('w') as out: + print(mainclass.get_expected(), file=out) + for f in all_files: + if f.initial_build_different(): + JavaConverter(f).dump(final_java_dir) + JavaConverter(f.get_initial_build_version()).dump(initial_java_dir) + else: + JavaConverter(f).dump(initial_java_dir) + if isinstance(f, base.TestInterface): + JavaConverter(f).dump(final_java_dir) + + +if __name__ == '__main__': + main(sys.argv) |