aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-06-13 03:11:07 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-06-13 03:11:07 +0000
commit3a243f1054388bcac4734182a1171f12fc3f7ed2 (patch)
tree22a04d95ef122fa7e11fb773115ce817489b2a60
parentc8a4bde43d708200302bd5aadb4ea21d37178ef1 (diff)
parentf840ab08799b36d1f95726fc2b24b3a4612b380c (diff)
downloadaidl-3a243f1054388bcac4734182a1171f12fc3f7ed2.tar.gz
Snap for 5656475 from f840ab08799b36d1f95726fc2b24b3a4612b380c to qt-releaseandroid-vts-10.0_r9android-vts-10.0_r8android-vts-10.0_r7android-vts-10.0_r6android-vts-10.0_r5android-vts-10.0_r4android-vts-10.0_r3android-vts-10.0_r2android-vts-10.0_r16android-vts-10.0_r15android-vts-10.0_r14android-vts-10.0_r13android-vts-10.0_r12android-vts-10.0_r11android-vts-10.0_r10android-vts-10.0_r1android-security-10.0.0_r66android-security-10.0.0_r65android-security-10.0.0_r64android-security-10.0.0_r63android-security-10.0.0_r62android-security-10.0.0_r61android-security-10.0.0_r60android-security-10.0.0_r59android-security-10.0.0_r58android-security-10.0.0_r57android-security-10.0.0_r56android-security-10.0.0_r55android-security-10.0.0_r54android-security-10.0.0_r53android-security-10.0.0_r52android-security-10.0.0_r51android-security-10.0.0_r50android-security-10.0.0_r49android-security-10.0.0_r48android-cts-10.0_r9android-cts-10.0_r8android-cts-10.0_r7android-cts-10.0_r6android-cts-10.0_r5android-cts-10.0_r4android-cts-10.0_r3android-cts-10.0_r2android-cts-10.0_r16android-cts-10.0_r15android-cts-10.0_r14android-cts-10.0_r13android-cts-10.0_r12android-cts-10.0_r11android-cts-10.0_r10android-cts-10.0_r1android-10.0.0_r6android-10.0.0_r5android-10.0.0_r47android-10.0.0_r46android-10.0.0_r4android-10.0.0_r3android-10.0.0_r2android-10.0.0_r17android-10.0.0_r11android-10.0.0_r10android-10.0.0_r1android10-tests-releaseandroid10-s3-releaseandroid10-s2-releaseandroid10-s1-releaseandroid10-release
Change-Id: I84147691e9b2282791640ba3b2f29d5f3f393e73
-rw-r--r--aidl_unittest.cpp34
-rw-r--r--options.cpp13
2 files changed, 40 insertions, 7 deletions
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 8c4d7965..3c5c6413 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -1323,5 +1323,39 @@ TEST_F(AidlTest, FailOnPartiallyAssignedIds) {
EXPECT_NE(0, ::android::aidl::compile_aidl(options, io_delegate_));
}
+class AidlOutputPathTest : public AidlTest {
+ protected:
+ void SetUp() override {
+ AidlTest::SetUp();
+ io_delegate_.SetFileContents("sub/dir/foo/bar/IFoo.aidl", "package foo.bar; interface IFoo {}");
+ }
+
+ void Test(const Options& options, const std::string expected_output_path) {
+ EXPECT_EQ(0, ::android::aidl::compile_aidl(options, io_delegate_));
+ // check the existence
+ EXPECT_TRUE(io_delegate_.GetWrittenContents(expected_output_path, nullptr));
+ }
+};
+
+TEST_F(AidlOutputPathTest, OutDirWithNoOutputFile) {
+ // <out_dir> / <package_name> / <type_name>.java
+ Test(Options::From("aidl -o out sub/dir/foo/bar/IFoo.aidl"), "out/foo/bar/IFoo.java");
+}
+
+TEST_F(AidlOutputPathTest, OutDirWithOutputFile) {
+ // when output file is explicitly set, it is always respected. -o option is
+ // ignored.
+ Test(Options::From("aidl -o out sub/dir/foo/bar/IFoo.aidl output/IFoo.java"), "output/IFoo.java");
+}
+
+TEST_F(AidlOutputPathTest, NoOutDirWithOutputFile) {
+ Test(Options::From("aidl -o out sub/dir/foo/bar/IFoo.aidl output/IFoo.java"), "output/IFoo.java");
+}
+
+TEST_F(AidlOutputPathTest, NoOutDirWithNoOutputFile) {
+ // output is the same as the input file except for the suffix
+ Test(Options::From("aidl sub/dir/foo/bar/IFoo.aidl"), "sub/dir/foo/bar/IFoo.java");
+}
+
} // namespace aidl
} // namespace android
diff --git a/options.cpp b/options.cpp
index 351b4f6a..ff99dad0 100644
--- a/options.cpp
+++ b/options.cpp
@@ -309,18 +309,17 @@ Options::Options(int argc, const char* const argv[], Options::Language default_l
input_files_.emplace_back(argv[optind++]);
if (argc - optind >= 1) {
output_file_ = argv[optind++];
- } else {
- // when output is omitted, output is by default set to the input
- // file path with .aidl is replaced to .java.
+ } else if (output_dir_.empty()) {
+ // when output is omitted and -o option isn't set, the output is by
+ // default set to the input file path with .aidl is replaced to .java.
+ // If -o option is set, the output path is calculated by
+ // generate_outputFileName which returns "<output_dir>/<package/name>/
+ // <typename>.java"
output_file_ = input_files_.front();
if (android::base::EndsWith(output_file_, ".aidl")) {
output_file_ = output_file_.substr(0, output_file_.length() - strlen(".aidl"));
}
output_file_ += ".java";
-
- if (!output_dir_.empty()) {
- output_file_ = output_dir_ + output_file_;
- }
}
} else if (IsCppOutput()) {
input_files_.emplace_back(argv[optind++]);