java_sdk_test.go 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731
  1. // Copyright (C) 2019 The Android Open Source Project
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package sdk
  15. import (
  16. "testing"
  17. "android/soong/java"
  18. )
  19. func testSdkWithJava(t *testing.T, bp string) *testSdkResult {
  20. t.Helper()
  21. fs := map[string][]byte{
  22. "Test.java": nil,
  23. "resource.test": nil,
  24. "aidl/foo/bar/Test.aidl": nil,
  25. // For java_import
  26. "prebuilt.jar": nil,
  27. // For java_sdk_library
  28. "api/current.txt": nil,
  29. "api/removed.txt": nil,
  30. "api/system-current.txt": nil,
  31. "api/system-removed.txt": nil,
  32. "api/test-current.txt": nil,
  33. "api/test-removed.txt": nil,
  34. "api/module-lib-current.txt": nil,
  35. "api/module-lib-removed.txt": nil,
  36. "api/system-server-current.txt": nil,
  37. "api/system-server-removed.txt": nil,
  38. "build/soong/scripts/gen-java-current-api-files.sh": nil,
  39. "docs/known_doctags": nil,
  40. }
  41. // for java_sdk_library tests
  42. bp = `
  43. java_system_modules_import {
  44. name: "core-current-stubs-system-modules",
  45. }
  46. java_system_modules_import {
  47. name: "stable-core-platform-api-stubs-system-modules",
  48. }
  49. java_import {
  50. name: "stable.core.platform.api.stubs",
  51. }
  52. java_import {
  53. name: "android_stubs_current",
  54. }
  55. java_import {
  56. name: "android_system_stubs_current",
  57. }
  58. java_import {
  59. name: "android_test_stubs_current",
  60. }
  61. java_import {
  62. name: "android_module_lib_stubs_current",
  63. }
  64. java_import {
  65. name: "android_system_server_stubs_current",
  66. }
  67. java_import {
  68. name: "core-lambda-stubs",
  69. sdk_version: "none",
  70. }
  71. java_import {
  72. name: "ext",
  73. sdk_version: "none",
  74. }
  75. java_import {
  76. name: "framework",
  77. sdk_version: "none",
  78. }
  79. ` + bp
  80. return testSdkWithFs(t, bp, fs)
  81. }
  82. // Contains tests for SDK members provided by the java package.
  83. func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
  84. result := testSdkWithJava(t, `
  85. sdk {
  86. name: "mysdk",
  87. java_header_libs: ["sdkmember"],
  88. }
  89. java_library {
  90. name: "sdkmember",
  91. srcs: ["Test.java"],
  92. system_modules: "none",
  93. sdk_version: "none",
  94. }
  95. java_import {
  96. name: "sdkmember",
  97. prefer: true,
  98. jars: ["prebuilt.jar"],
  99. }
  100. `)
  101. // Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
  102. java.CheckModuleDependencies(t, result.ctx, "mysdk", "android_common", []string{"sdkmember"})
  103. result.CheckSnapshot("mysdk", "",
  104. checkAndroidBpContents(`// This is auto-generated. DO NOT EDIT.
  105. java_import {
  106. name: "mysdk_sdkmember@current",
  107. sdk_member_name: "sdkmember",
  108. visibility: ["//visibility:public"],
  109. jars: ["java/sdkmember.jar"],
  110. }
  111. java_import {
  112. name: "sdkmember",
  113. prefer: false,
  114. visibility: ["//visibility:public"],
  115. jars: ["java/sdkmember.jar"],
  116. }
  117. sdk_snapshot {
  118. name: "mysdk@current",
  119. visibility: ["//visibility:public"],
  120. java_header_libs: ["mysdk_sdkmember@current"],
  121. }
  122. `))
  123. }
  124. func TestBasicSdkWithJavaLibrary(t *testing.T) {
  125. result := testSdkWithJava(t, `
  126. sdk {
  127. name: "mysdk",
  128. java_header_libs: ["sdkmember"],
  129. }
  130. sdk_snapshot {
  131. name: "mysdk@1",
  132. java_header_libs: ["sdkmember_mysdk_1"],
  133. }
  134. sdk_snapshot {
  135. name: "mysdk@2",
  136. java_header_libs: ["sdkmember_mysdk_2"],
  137. }
  138. java_library {
  139. name: "sdkmember",
  140. srcs: ["Test.java"],
  141. system_modules: "none",
  142. sdk_version: "none",
  143. host_supported: true,
  144. }
  145. java_import {
  146. name: "sdkmember_mysdk_1",
  147. sdk_member_name: "sdkmember",
  148. host_supported: true,
  149. }
  150. java_import {
  151. name: "sdkmember_mysdk_2",
  152. sdk_member_name: "sdkmember",
  153. host_supported: true,
  154. }
  155. java_library {
  156. name: "myjavalib",
  157. srcs: ["Test.java"],
  158. libs: ["sdkmember"],
  159. system_modules: "none",
  160. sdk_version: "none",
  161. compile_dex: true,
  162. host_supported: true,
  163. apex_available: [
  164. "myapex",
  165. "myapex2",
  166. ],
  167. }
  168. apex {
  169. name: "myapex",
  170. java_libs: ["myjavalib"],
  171. uses_sdks: ["mysdk@1"],
  172. key: "myapex.key",
  173. certificate: ":myapex.cert",
  174. }
  175. apex {
  176. name: "myapex2",
  177. java_libs: ["myjavalib"],
  178. uses_sdks: ["mysdk@2"],
  179. key: "myapex.key",
  180. certificate: ":myapex.cert",
  181. }
  182. `)
  183. sdkMemberV1 := result.ctx.ModuleForTests("sdkmember_mysdk_1", "android_common").Rule("combineJar").Output
  184. sdkMemberV2 := result.ctx.ModuleForTests("sdkmember_mysdk_2", "android_common").Rule("combineJar").Output
  185. javalibForMyApex := result.ctx.ModuleForTests("myjavalib", "android_common_apex10000_mysdk_1")
  186. javalibForMyApex2 := result.ctx.ModuleForTests("myjavalib", "android_common_apex10000_mysdk_2")
  187. // Depending on the uses_sdks value, different libs are linked
  188. ensureListContains(t, pathsToStrings(javalibForMyApex.Rule("javac").Implicits), sdkMemberV1.String())
  189. ensureListContains(t, pathsToStrings(javalibForMyApex2.Rule("javac").Implicits), sdkMemberV2.String())
  190. }
  191. func TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
  192. result := testSdkWithJava(t, `
  193. sdk {
  194. name: "mysdk",
  195. java_header_libs: ["myjavalib"],
  196. }
  197. java_library {
  198. name: "myjavalib",
  199. srcs: ["Test.java"],
  200. aidl: {
  201. export_include_dirs: ["aidl"],
  202. },
  203. system_modules: "none",
  204. sdk_version: "none",
  205. compile_dex: true,
  206. host_supported: true,
  207. }
  208. `)
  209. result.CheckSnapshot("mysdk", "",
  210. checkAndroidBpContents(`
  211. // This is auto-generated. DO NOT EDIT.
  212. java_import {
  213. name: "mysdk_myjavalib@current",
  214. sdk_member_name: "myjavalib",
  215. visibility: ["//visibility:public"],
  216. jars: ["java/myjavalib.jar"],
  217. }
  218. java_import {
  219. name: "myjavalib",
  220. prefer: false,
  221. visibility: ["//visibility:public"],
  222. jars: ["java/myjavalib.jar"],
  223. }
  224. sdk_snapshot {
  225. name: "mysdk@current",
  226. visibility: ["//visibility:public"],
  227. java_header_libs: ["mysdk_myjavalib@current"],
  228. }
  229. `),
  230. checkAllCopyRules(`
  231. .intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
  232. aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
  233. `),
  234. )
  235. }
  236. func TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
  237. result := testSdkWithJava(t, `
  238. sdk {
  239. name: "mysdk",
  240. device_supported: false,
  241. host_supported: true,
  242. java_header_libs: ["myjavalib"],
  243. }
  244. java_library {
  245. name: "myjavalib",
  246. device_supported: false,
  247. host_supported: true,
  248. srcs: ["Test.java"],
  249. aidl: {
  250. export_include_dirs: ["aidl"],
  251. },
  252. system_modules: "none",
  253. sdk_version: "none",
  254. compile_dex: true,
  255. }
  256. `)
  257. result.CheckSnapshot("mysdk", "",
  258. checkAndroidBpContents(`
  259. // This is auto-generated. DO NOT EDIT.
  260. java_import {
  261. name: "mysdk_myjavalib@current",
  262. sdk_member_name: "myjavalib",
  263. visibility: ["//visibility:public"],
  264. device_supported: false,
  265. host_supported: true,
  266. jars: ["java/myjavalib.jar"],
  267. }
  268. java_import {
  269. name: "myjavalib",
  270. prefer: false,
  271. visibility: ["//visibility:public"],
  272. device_supported: false,
  273. host_supported: true,
  274. jars: ["java/myjavalib.jar"],
  275. }
  276. sdk_snapshot {
  277. name: "mysdk@current",
  278. visibility: ["//visibility:public"],
  279. device_supported: false,
  280. host_supported: true,
  281. java_header_libs: ["mysdk_myjavalib@current"],
  282. }
  283. `),
  284. checkAllCopyRules(`
  285. .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
  286. aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
  287. `),
  288. )
  289. }
  290. func TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
  291. result := testSdkWithJava(t, `
  292. sdk {
  293. name: "mysdk",
  294. host_supported: true,
  295. java_header_libs: ["myjavalib"],
  296. }
  297. java_library {
  298. name: "myjavalib",
  299. host_supported: true,
  300. srcs: ["Test.java"],
  301. system_modules: "none",
  302. sdk_version: "none",
  303. compile_dex: true,
  304. }
  305. `)
  306. result.CheckSnapshot("mysdk", "",
  307. checkAndroidBpContents(`
  308. // This is auto-generated. DO NOT EDIT.
  309. java_import {
  310. name: "mysdk_myjavalib@current",
  311. sdk_member_name: "myjavalib",
  312. visibility: ["//visibility:public"],
  313. host_supported: true,
  314. target: {
  315. android: {
  316. jars: ["java/android/myjavalib.jar"],
  317. },
  318. linux_glibc: {
  319. jars: ["java/linux_glibc/myjavalib.jar"],
  320. },
  321. },
  322. }
  323. java_import {
  324. name: "myjavalib",
  325. prefer: false,
  326. visibility: ["//visibility:public"],
  327. host_supported: true,
  328. target: {
  329. android: {
  330. jars: ["java/android/myjavalib.jar"],
  331. },
  332. linux_glibc: {
  333. jars: ["java/linux_glibc/myjavalib.jar"],
  334. },
  335. },
  336. }
  337. sdk_snapshot {
  338. name: "mysdk@current",
  339. visibility: ["//visibility:public"],
  340. host_supported: true,
  341. java_header_libs: ["mysdk_myjavalib@current"],
  342. }
  343. `),
  344. checkAllCopyRules(`
  345. .intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
  346. .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
  347. `),
  348. )
  349. }
  350. func TestSnapshotWithJavaImplLibrary(t *testing.T) {
  351. result := testSdkWithJava(t, `
  352. module_exports {
  353. name: "myexports",
  354. java_libs: ["myjavalib"],
  355. }
  356. java_library {
  357. name: "myjavalib",
  358. srcs: ["Test.java"],
  359. java_resources: ["resource.txt"],
  360. aidl: {
  361. export_include_dirs: ["aidl"],
  362. },
  363. system_modules: "none",
  364. sdk_version: "none",
  365. compile_dex: true,
  366. host_supported: true,
  367. }
  368. `)
  369. result.CheckSnapshot("myexports", "",
  370. checkAndroidBpContents(`
  371. // This is auto-generated. DO NOT EDIT.
  372. java_import {
  373. name: "myexports_myjavalib@current",
  374. sdk_member_name: "myjavalib",
  375. visibility: ["//visibility:public"],
  376. jars: ["java/myjavalib.jar"],
  377. }
  378. java_import {
  379. name: "myjavalib",
  380. prefer: false,
  381. visibility: ["//visibility:public"],
  382. jars: ["java/myjavalib.jar"],
  383. }
  384. module_exports_snapshot {
  385. name: "myexports@current",
  386. visibility: ["//visibility:public"],
  387. java_libs: ["myexports_myjavalib@current"],
  388. }
  389. `),
  390. checkAllCopyRules(`
  391. .intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar
  392. aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
  393. `),
  394. )
  395. }
  396. func TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
  397. result := testSdkWithJava(t, `
  398. module_exports {
  399. name: "myexports",
  400. device_supported: false,
  401. host_supported: true,
  402. java_libs: ["myjavalib"],
  403. }
  404. java_library {
  405. name: "myjavalib",
  406. device_supported: false,
  407. host_supported: true,
  408. srcs: ["Test.java"],
  409. aidl: {
  410. export_include_dirs: ["aidl"],
  411. },
  412. system_modules: "none",
  413. sdk_version: "none",
  414. compile_dex: true,
  415. }
  416. `)
  417. result.CheckSnapshot("myexports", "",
  418. checkAndroidBpContents(`
  419. // This is auto-generated. DO NOT EDIT.
  420. java_import {
  421. name: "myexports_myjavalib@current",
  422. sdk_member_name: "myjavalib",
  423. visibility: ["//visibility:public"],
  424. device_supported: false,
  425. host_supported: true,
  426. jars: ["java/myjavalib.jar"],
  427. }
  428. java_import {
  429. name: "myjavalib",
  430. prefer: false,
  431. visibility: ["//visibility:public"],
  432. device_supported: false,
  433. host_supported: true,
  434. jars: ["java/myjavalib.jar"],
  435. }
  436. module_exports_snapshot {
  437. name: "myexports@current",
  438. visibility: ["//visibility:public"],
  439. device_supported: false,
  440. host_supported: true,
  441. java_libs: ["myexports_myjavalib@current"],
  442. }
  443. `),
  444. checkAllCopyRules(`
  445. .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
  446. aidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
  447. `),
  448. )
  449. }
  450. func TestSnapshotWithJavaTest(t *testing.T) {
  451. result := testSdkWithJava(t, `
  452. module_exports {
  453. name: "myexports",
  454. java_tests: ["myjavatests"],
  455. }
  456. java_test {
  457. name: "myjavatests",
  458. srcs: ["Test.java"],
  459. system_modules: "none",
  460. sdk_version: "none",
  461. compile_dex: true,
  462. host_supported: true,
  463. }
  464. `)
  465. result.CheckSnapshot("myexports", "",
  466. checkAndroidBpContents(`
  467. // This is auto-generated. DO NOT EDIT.
  468. java_test_import {
  469. name: "myexports_myjavatests@current",
  470. sdk_member_name: "myjavatests",
  471. visibility: ["//visibility:public"],
  472. jars: ["java/myjavatests.jar"],
  473. test_config: "java/myjavatests-AndroidTest.xml",
  474. }
  475. java_test_import {
  476. name: "myjavatests",
  477. prefer: false,
  478. visibility: ["//visibility:public"],
  479. jars: ["java/myjavatests.jar"],
  480. test_config: "java/myjavatests-AndroidTest.xml",
  481. }
  482. module_exports_snapshot {
  483. name: "myexports@current",
  484. visibility: ["//visibility:public"],
  485. java_tests: ["myexports_myjavatests@current"],
  486. }
  487. `),
  488. checkAllCopyRules(`
  489. .intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
  490. .intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
  491. `),
  492. )
  493. }
  494. func TestHostSnapshotWithJavaTest(t *testing.T) {
  495. result := testSdkWithJava(t, `
  496. module_exports {
  497. name: "myexports",
  498. device_supported: false,
  499. host_supported: true,
  500. java_tests: ["myjavatests"],
  501. }
  502. java_test {
  503. name: "myjavatests",
  504. device_supported: false,
  505. host_supported: true,
  506. srcs: ["Test.java"],
  507. system_modules: "none",
  508. sdk_version: "none",
  509. compile_dex: true,
  510. }
  511. `)
  512. result.CheckSnapshot("myexports", "",
  513. checkAndroidBpContents(`
  514. // This is auto-generated. DO NOT EDIT.
  515. java_test_import {
  516. name: "myexports_myjavatests@current",
  517. sdk_member_name: "myjavatests",
  518. visibility: ["//visibility:public"],
  519. device_supported: false,
  520. host_supported: true,
  521. jars: ["java/myjavatests.jar"],
  522. test_config: "java/myjavatests-AndroidTest.xml",
  523. }
  524. java_test_import {
  525. name: "myjavatests",
  526. prefer: false,
  527. visibility: ["//visibility:public"],
  528. device_supported: false,
  529. host_supported: true,
  530. jars: ["java/myjavatests.jar"],
  531. test_config: "java/myjavatests-AndroidTest.xml",
  532. }
  533. module_exports_snapshot {
  534. name: "myexports@current",
  535. visibility: ["//visibility:public"],
  536. device_supported: false,
  537. host_supported: true,
  538. java_tests: ["myexports_myjavatests@current"],
  539. }
  540. `),
  541. checkAllCopyRules(`
  542. .intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
  543. .intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
  544. `),
  545. )
  546. }
  547. func testSdkWithDroidstubs(t *testing.T, bp string) *testSdkResult {
  548. t.Helper()
  549. fs := map[string][]byte{
  550. "foo/bar/Foo.java": nil,
  551. "stubs-sources/foo/bar/Foo.java": nil,
  552. }
  553. return testSdkWithFs(t, bp, fs)
  554. }
  555. // Note: This test does not verify that a droidstubs can be referenced, either
  556. // directly or indirectly from an APEX as droidstubs can never be a part of an
  557. // apex.
  558. func TestBasicSdkWithDroidstubs(t *testing.T) {
  559. testSdkWithDroidstubs(t, `
  560. sdk {
  561. name: "mysdk",
  562. stubs_sources: ["mystub"],
  563. }
  564. sdk_snapshot {
  565. name: "mysdk@10",
  566. stubs_sources: ["mystub_mysdk@10"],
  567. }
  568. prebuilt_stubs_sources {
  569. name: "mystub_mysdk@10",
  570. sdk_member_name: "mystub",
  571. srcs: ["stubs-sources/foo/bar/Foo.java"],
  572. }
  573. droidstubs {
  574. name: "mystub",
  575. srcs: ["foo/bar/Foo.java"],
  576. sdk_version: "none",
  577. system_modules: "none",
  578. }
  579. java_library {
  580. name: "myjavalib",
  581. srcs: [":mystub"],
  582. sdk_version: "none",
  583. system_modules: "none",
  584. }
  585. `)
  586. }
  587. func TestSnapshotWithDroidstubs(t *testing.T) {
  588. result := testSdkWithDroidstubs(t, `
  589. module_exports {
  590. name: "myexports",
  591. stubs_sources: ["myjavaapistubs"],
  592. }
  593. droidstubs {
  594. name: "myjavaapistubs",
  595. srcs: ["foo/bar/Foo.java"],
  596. system_modules: "none",
  597. sdk_version: "none",
  598. }
  599. `)
  600. result.CheckSnapshot("myexports", "",
  601. checkAndroidBpContents(`
  602. // This is auto-generated. DO NOT EDIT.
  603. prebuilt_stubs_sources {
  604. name: "myexports_myjavaapistubs@current",
  605. sdk_member_name: "myjavaapistubs",
  606. visibility: ["//visibility:public"],
  607. srcs: ["java/myjavaapistubs_stubs_sources"],
  608. }
  609. prebuilt_stubs_sources {
  610. name: "myjavaapistubs",
  611. prefer: false,
  612. visibility: ["//visibility:public"],
  613. srcs: ["java/myjavaapistubs_stubs_sources"],
  614. }
  615. module_exports_snapshot {
  616. name: "myexports@current",
  617. visibility: ["//visibility:public"],
  618. stubs_sources: ["myexports_myjavaapistubs@current"],
  619. }
  620. `),
  621. checkAllCopyRules(""),
  622. checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
  623. )
  624. }
  625. func TestHostSnapshotWithDroidstubs(t *testing.T) {
  626. result := testSdkWithDroidstubs(t, `
  627. module_exports {
  628. name: "myexports",
  629. device_supported: false,
  630. host_supported: true,
  631. stubs_sources: ["myjavaapistubs"],
  632. }
  633. droidstubs {
  634. name: "myjavaapistubs",
  635. device_supported: false,
  636. host_supported: true,
  637. srcs: ["foo/bar/Foo.java"],
  638. system_modules: "none",
  639. sdk_version: "none",
  640. }
  641. `)
  642. result.CheckSnapshot("myexports", "",
  643. checkAndroidBpContents(`
  644. // This is auto-generated. DO NOT EDIT.
  645. prebuilt_stubs_sources {
  646. name: "myexports_myjavaapistubs@current",
  647. sdk_member_name: "myjavaapistubs",
  648. visibility: ["//visibility:public"],
  649. device_supported: false,
  650. host_supported: true,
  651. srcs: ["java/myjavaapistubs_stubs_sources"],
  652. }
  653. prebuilt_stubs_sources {
  654. name: "myjavaapistubs",
  655. prefer: false,
  656. visibility: ["//visibility:public"],
  657. device_supported: false,
  658. host_supported: true,
  659. srcs: ["java/myjavaapistubs_stubs_sources"],
  660. }
  661. module_exports_snapshot {
  662. name: "myexports@current",
  663. visibility: ["//visibility:public"],
  664. device_supported: false,
  665. host_supported: true,
  666. stubs_sources: ["myexports_myjavaapistubs@current"],
  667. }
  668. `),
  669. checkAllCopyRules(""),
  670. checkMergeZips(".intermediates/myexports/common_os/tmp/java/myjavaapistubs_stubs_sources.zip"),
  671. )
  672. }
  673. func TestSnapshotWithJavaSystemModules(t *testing.T) {
  674. result := testSdkWithJava(t, `
  675. sdk {
  676. name: "mysdk",
  677. java_header_libs: ["exported-system-module"],
  678. java_system_modules: ["my-system-modules"],
  679. }
  680. java_system_modules {
  681. name: "my-system-modules",
  682. libs: ["system-module", "exported-system-module"],
  683. }
  684. java_library {
  685. name: "system-module",
  686. srcs: ["Test.java"],
  687. sdk_version: "none",
  688. system_modules: "none",
  689. }
  690. java_library {
  691. name: "exported-system-module",
  692. srcs: ["Test.java"],
  693. sdk_version: "none",
  694. system_modules: "none",
  695. }
  696. `)
  697. result.CheckSnapshot("mysdk", "",
  698. checkAndroidBpContents(`
  699. // This is auto-generated. DO NOT EDIT.
  700. java_import {
  701. name: "mysdk_exported-system-module@current",
  702. sdk_member_name: "exported-system-module",
  703. visibility: ["//visibility:public"],
  704. jars: ["java/exported-system-module.jar"],
  705. }
  706. java_import {
  707. name: "exported-system-module",
  708. prefer: false,
  709. visibility: ["//visibility:public"],
  710. jars: ["java/exported-system-module.jar"],
  711. }
  712. java_import {
  713. name: "mysdk_system-module@current",
  714. sdk_member_name: "system-module",
  715. visibility: ["//visibility:private"],
  716. jars: ["java/system-module.jar"],
  717. }
  718. java_import {
  719. name: "mysdk_system-module",
  720. prefer: false,
  721. visibility: ["//visibility:private"],
  722. jars: ["java/system-module.jar"],
  723. }
  724. java_system_modules_import {
  725. name: "mysdk_my-system-modules@current",
  726. sdk_member_name: "my-system-modules",
  727. visibility: ["//visibility:public"],
  728. libs: [
  729. "mysdk_system-module@current",
  730. "mysdk_exported-system-module@current",
  731. ],
  732. }
  733. java_system_modules_import {
  734. name: "my-system-modules",
  735. prefer: false,
  736. visibility: ["//visibility:public"],
  737. libs: [
  738. "mysdk_system-module",
  739. "exported-system-module",
  740. ],
  741. }
  742. sdk_snapshot {
  743. name: "mysdk@current",
  744. visibility: ["//visibility:public"],
  745. java_header_libs: ["mysdk_exported-system-module@current"],
  746. java_system_modules: ["mysdk_my-system-modules@current"],
  747. }
  748. `),
  749. checkAllCopyRules(`
  750. .intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
  751. .intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
  752. `),
  753. )
  754. }
  755. func TestHostSnapshotWithJavaSystemModules(t *testing.T) {
  756. result := testSdkWithJava(t, `
  757. sdk {
  758. name: "mysdk",
  759. device_supported: false,
  760. host_supported: true,
  761. java_system_modules: ["my-system-modules"],
  762. }
  763. java_system_modules {
  764. name: "my-system-modules",
  765. device_supported: false,
  766. host_supported: true,
  767. libs: ["system-module"],
  768. }
  769. java_library {
  770. name: "system-module",
  771. device_supported: false,
  772. host_supported: true,
  773. srcs: ["Test.java"],
  774. sdk_version: "none",
  775. system_modules: "none",
  776. }
  777. `)
  778. result.CheckSnapshot("mysdk", "",
  779. checkAndroidBpContents(`
  780. // This is auto-generated. DO NOT EDIT.
  781. java_import {
  782. name: "mysdk_system-module@current",
  783. sdk_member_name: "system-module",
  784. visibility: ["//visibility:private"],
  785. device_supported: false,
  786. host_supported: true,
  787. jars: ["java/system-module.jar"],
  788. }
  789. java_import {
  790. name: "mysdk_system-module",
  791. prefer: false,
  792. visibility: ["//visibility:private"],
  793. device_supported: false,
  794. host_supported: true,
  795. jars: ["java/system-module.jar"],
  796. }
  797. java_system_modules_import {
  798. name: "mysdk_my-system-modules@current",
  799. sdk_member_name: "my-system-modules",
  800. visibility: ["//visibility:public"],
  801. device_supported: false,
  802. host_supported: true,
  803. libs: ["mysdk_system-module@current"],
  804. }
  805. java_system_modules_import {
  806. name: "my-system-modules",
  807. prefer: false,
  808. visibility: ["//visibility:public"],
  809. device_supported: false,
  810. host_supported: true,
  811. libs: ["mysdk_system-module"],
  812. }
  813. sdk_snapshot {
  814. name: "mysdk@current",
  815. visibility: ["//visibility:public"],
  816. device_supported: false,
  817. host_supported: true,
  818. java_system_modules: ["mysdk_my-system-modules@current"],
  819. }
  820. `),
  821. checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac/system-module.jar -> java/system-module.jar"),
  822. )
  823. }
  824. func TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
  825. result := testSdkWithJava(t, `
  826. module_exports {
  827. name: "myexports",
  828. host_supported: true,
  829. java_libs: ["myjavalib"],
  830. target: {
  831. android: {
  832. java_header_libs: ["androidjavalib"],
  833. },
  834. host: {
  835. java_header_libs: ["hostjavalib"],
  836. },
  837. },
  838. }
  839. java_library {
  840. name: "myjavalib",
  841. host_supported: true,
  842. srcs: ["Test.java"],
  843. system_modules: "none",
  844. sdk_version: "none",
  845. }
  846. java_library {
  847. name: "androidjavalib",
  848. srcs: ["Test.java"],
  849. system_modules: "none",
  850. sdk_version: "none",
  851. }
  852. java_library_host {
  853. name: "hostjavalib",
  854. srcs: ["Test.java"],
  855. }
  856. `)
  857. result.CheckSnapshot("myexports", "",
  858. checkAndroidBpContents(`
  859. // This is auto-generated. DO NOT EDIT.
  860. java_import {
  861. name: "myexports_hostjavalib@current",
  862. sdk_member_name: "hostjavalib",
  863. visibility: ["//visibility:public"],
  864. device_supported: false,
  865. host_supported: true,
  866. jars: ["java/hostjavalib.jar"],
  867. }
  868. java_import {
  869. name: "hostjavalib",
  870. prefer: false,
  871. visibility: ["//visibility:public"],
  872. device_supported: false,
  873. host_supported: true,
  874. jars: ["java/hostjavalib.jar"],
  875. }
  876. java_import {
  877. name: "myexports_androidjavalib@current",
  878. sdk_member_name: "androidjavalib",
  879. visibility: ["//visibility:public"],
  880. jars: ["java/androidjavalib.jar"],
  881. }
  882. java_import {
  883. name: "androidjavalib",
  884. prefer: false,
  885. visibility: ["//visibility:public"],
  886. jars: ["java/androidjavalib.jar"],
  887. }
  888. java_import {
  889. name: "myexports_myjavalib@current",
  890. sdk_member_name: "myjavalib",
  891. visibility: ["//visibility:public"],
  892. host_supported: true,
  893. target: {
  894. android: {
  895. jars: ["java/android/myjavalib.jar"],
  896. },
  897. linux_glibc: {
  898. jars: ["java/linux_glibc/myjavalib.jar"],
  899. },
  900. },
  901. }
  902. java_import {
  903. name: "myjavalib",
  904. prefer: false,
  905. visibility: ["//visibility:public"],
  906. host_supported: true,
  907. target: {
  908. android: {
  909. jars: ["java/android/myjavalib.jar"],
  910. },
  911. linux_glibc: {
  912. jars: ["java/linux_glibc/myjavalib.jar"],
  913. },
  914. },
  915. }
  916. module_exports_snapshot {
  917. name: "myexports@current",
  918. visibility: ["//visibility:public"],
  919. host_supported: true,
  920. java_libs: ["myexports_myjavalib@current"],
  921. target: {
  922. android: {
  923. java_header_libs: ["myexports_androidjavalib@current"],
  924. },
  925. linux_glibc: {
  926. java_header_libs: ["myexports_hostjavalib@current"],
  927. },
  928. },
  929. }
  930. `),
  931. checkAllCopyRules(`
  932. .intermediates/hostjavalib/linux_glibc_common/javac/hostjavalib.jar -> java/hostjavalib.jar
  933. .intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
  934. .intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
  935. .intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
  936. `),
  937. )
  938. }
  939. func TestSnapshotWithJavaSdkLibrary(t *testing.T) {
  940. result := testSdkWithJava(t, `
  941. sdk {
  942. name: "mysdk",
  943. java_sdk_libs: ["myjavalib"],
  944. }
  945. java_sdk_library {
  946. name: "myjavalib",
  947. apex_available: ["//apex_available:anyapex"],
  948. srcs: ["Test.java"],
  949. sdk_version: "current",
  950. shared_library: false,
  951. stubs_library_visibility: ["//other"],
  952. stubs_source_visibility: ["//another"],
  953. }
  954. `)
  955. result.CheckSnapshot("mysdk", "",
  956. checkAndroidBpContents(`
  957. // This is auto-generated. DO NOT EDIT.
  958. java_sdk_library_import {
  959. name: "mysdk_myjavalib@current",
  960. sdk_member_name: "myjavalib",
  961. visibility: ["//visibility:public"],
  962. apex_available: ["//apex_available:anyapex"],
  963. shared_library: false,
  964. public: {
  965. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  966. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  967. current_api: "sdk_library/public/myjavalib.txt",
  968. removed_api: "sdk_library/public/myjavalib-removed.txt",
  969. sdk_version: "current",
  970. },
  971. system: {
  972. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  973. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  974. current_api: "sdk_library/system/myjavalib.txt",
  975. removed_api: "sdk_library/system/myjavalib-removed.txt",
  976. sdk_version: "system_current",
  977. },
  978. test: {
  979. jars: ["sdk_library/test/myjavalib-stubs.jar"],
  980. stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
  981. current_api: "sdk_library/test/myjavalib.txt",
  982. removed_api: "sdk_library/test/myjavalib-removed.txt",
  983. sdk_version: "test_current",
  984. },
  985. }
  986. java_sdk_library_import {
  987. name: "myjavalib",
  988. prefer: false,
  989. visibility: ["//visibility:public"],
  990. apex_available: ["//apex_available:anyapex"],
  991. shared_library: false,
  992. public: {
  993. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  994. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  995. current_api: "sdk_library/public/myjavalib.txt",
  996. removed_api: "sdk_library/public/myjavalib-removed.txt",
  997. sdk_version: "current",
  998. },
  999. system: {
  1000. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  1001. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  1002. current_api: "sdk_library/system/myjavalib.txt",
  1003. removed_api: "sdk_library/system/myjavalib-removed.txt",
  1004. sdk_version: "system_current",
  1005. },
  1006. test: {
  1007. jars: ["sdk_library/test/myjavalib-stubs.jar"],
  1008. stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
  1009. current_api: "sdk_library/test/myjavalib.txt",
  1010. removed_api: "sdk_library/test/myjavalib-removed.txt",
  1011. sdk_version: "test_current",
  1012. },
  1013. }
  1014. sdk_snapshot {
  1015. name: "mysdk@current",
  1016. visibility: ["//visibility:public"],
  1017. java_sdk_libs: ["mysdk_myjavalib@current"],
  1018. }
  1019. `),
  1020. checkAllCopyRules(`
  1021. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1022. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1023. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1024. .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
  1025. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
  1026. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
  1027. .intermediates/myjavalib.stubs.test/android_common/javac/myjavalib.stubs.test.jar -> sdk_library/test/myjavalib-stubs.jar
  1028. .intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
  1029. .intermediates/myjavalib.stubs.source.test/android_common/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
  1030. `),
  1031. checkMergeZips(
  1032. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1033. ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
  1034. ".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip"),
  1035. )
  1036. }
  1037. func TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
  1038. result := testSdkWithJava(t, `
  1039. sdk {
  1040. name: "mysdk",
  1041. java_sdk_libs: ["myjavalib"],
  1042. }
  1043. java_sdk_library {
  1044. name: "myjavalib",
  1045. srcs: ["Test.java"],
  1046. sdk_version: "none",
  1047. system_modules: "none",
  1048. }
  1049. `)
  1050. result.CheckSnapshot("mysdk", "",
  1051. checkAndroidBpContents(`
  1052. // This is auto-generated. DO NOT EDIT.
  1053. java_sdk_library_import {
  1054. name: "mysdk_myjavalib@current",
  1055. sdk_member_name: "myjavalib",
  1056. visibility: ["//visibility:public"],
  1057. shared_library: true,
  1058. public: {
  1059. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1060. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1061. current_api: "sdk_library/public/myjavalib.txt",
  1062. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1063. sdk_version: "none",
  1064. },
  1065. }
  1066. java_sdk_library_import {
  1067. name: "myjavalib",
  1068. prefer: false,
  1069. visibility: ["//visibility:public"],
  1070. shared_library: true,
  1071. public: {
  1072. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1073. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1074. current_api: "sdk_library/public/myjavalib.txt",
  1075. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1076. sdk_version: "none",
  1077. },
  1078. }
  1079. sdk_snapshot {
  1080. name: "mysdk@current",
  1081. visibility: ["//visibility:public"],
  1082. java_sdk_libs: ["mysdk_myjavalib@current"],
  1083. }
  1084. `),
  1085. checkAllCopyRules(`
  1086. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1087. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1088. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1089. `),
  1090. checkMergeZips(
  1091. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1092. ),
  1093. )
  1094. }
  1095. func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
  1096. result := testSdkWithJava(t, `
  1097. sdk {
  1098. name: "mysdk",
  1099. java_sdk_libs: ["myjavalib"],
  1100. }
  1101. java_sdk_library {
  1102. name: "myjavalib",
  1103. srcs: ["Test.java"],
  1104. sdk_version: "module_current",
  1105. public: {
  1106. enabled: true,
  1107. sdk_version: "module_current",
  1108. },
  1109. }
  1110. `)
  1111. result.CheckSnapshot("mysdk", "",
  1112. checkAndroidBpContents(`
  1113. // This is auto-generated. DO NOT EDIT.
  1114. java_sdk_library_import {
  1115. name: "mysdk_myjavalib@current",
  1116. sdk_member_name: "myjavalib",
  1117. visibility: ["//visibility:public"],
  1118. shared_library: true,
  1119. public: {
  1120. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1121. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1122. current_api: "sdk_library/public/myjavalib.txt",
  1123. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1124. sdk_version: "module_current",
  1125. },
  1126. }
  1127. java_sdk_library_import {
  1128. name: "myjavalib",
  1129. prefer: false,
  1130. visibility: ["//visibility:public"],
  1131. shared_library: true,
  1132. public: {
  1133. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1134. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1135. current_api: "sdk_library/public/myjavalib.txt",
  1136. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1137. sdk_version: "module_current",
  1138. },
  1139. }
  1140. sdk_snapshot {
  1141. name: "mysdk@current",
  1142. visibility: ["//visibility:public"],
  1143. java_sdk_libs: ["mysdk_myjavalib@current"],
  1144. }
  1145. `),
  1146. checkAllCopyRules(`
  1147. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1148. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1149. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1150. `),
  1151. checkMergeZips(
  1152. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1153. ),
  1154. )
  1155. }
  1156. func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
  1157. result := testSdkWithJava(t, `
  1158. sdk {
  1159. name: "mysdk",
  1160. java_sdk_libs: ["myjavalib"],
  1161. }
  1162. java_sdk_library {
  1163. name: "myjavalib",
  1164. apex_available: ["//apex_available:anyapex"],
  1165. srcs: ["Test.java"],
  1166. sdk_version: "current",
  1167. public: {
  1168. enabled: true,
  1169. },
  1170. system: {
  1171. enabled: true,
  1172. },
  1173. }
  1174. `)
  1175. result.CheckSnapshot("mysdk", "",
  1176. checkAndroidBpContents(`
  1177. // This is auto-generated. DO NOT EDIT.
  1178. java_sdk_library_import {
  1179. name: "mysdk_myjavalib@current",
  1180. sdk_member_name: "myjavalib",
  1181. visibility: ["//visibility:public"],
  1182. apex_available: ["//apex_available:anyapex"],
  1183. shared_library: true,
  1184. public: {
  1185. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1186. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1187. current_api: "sdk_library/public/myjavalib.txt",
  1188. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1189. sdk_version: "current",
  1190. },
  1191. system: {
  1192. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  1193. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  1194. current_api: "sdk_library/system/myjavalib.txt",
  1195. removed_api: "sdk_library/system/myjavalib-removed.txt",
  1196. sdk_version: "system_current",
  1197. },
  1198. }
  1199. java_sdk_library_import {
  1200. name: "myjavalib",
  1201. prefer: false,
  1202. visibility: ["//visibility:public"],
  1203. apex_available: ["//apex_available:anyapex"],
  1204. shared_library: true,
  1205. public: {
  1206. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1207. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1208. current_api: "sdk_library/public/myjavalib.txt",
  1209. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1210. sdk_version: "current",
  1211. },
  1212. system: {
  1213. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  1214. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  1215. current_api: "sdk_library/system/myjavalib.txt",
  1216. removed_api: "sdk_library/system/myjavalib-removed.txt",
  1217. sdk_version: "system_current",
  1218. },
  1219. }
  1220. sdk_snapshot {
  1221. name: "mysdk@current",
  1222. visibility: ["//visibility:public"],
  1223. java_sdk_libs: ["mysdk_myjavalib@current"],
  1224. }
  1225. `),
  1226. checkAllCopyRules(`
  1227. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1228. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1229. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1230. .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
  1231. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
  1232. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
  1233. `),
  1234. checkMergeZips(
  1235. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1236. ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
  1237. ),
  1238. )
  1239. }
  1240. func TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
  1241. result := testSdkWithJava(t, `
  1242. sdk {
  1243. name: "mysdk",
  1244. java_sdk_libs: ["myjavalib"],
  1245. }
  1246. java_sdk_library {
  1247. name: "myjavalib",
  1248. apex_available: ["//apex_available:anyapex"],
  1249. srcs: ["Test.java"],
  1250. sdk_version: "current",
  1251. public: {
  1252. enabled: true,
  1253. },
  1254. system: {
  1255. enabled: true,
  1256. },
  1257. module_lib: {
  1258. enabled: true,
  1259. },
  1260. }
  1261. `)
  1262. result.CheckSnapshot("mysdk", "",
  1263. checkAndroidBpContents(`
  1264. // This is auto-generated. DO NOT EDIT.
  1265. java_sdk_library_import {
  1266. name: "mysdk_myjavalib@current",
  1267. sdk_member_name: "myjavalib",
  1268. visibility: ["//visibility:public"],
  1269. apex_available: ["//apex_available:anyapex"],
  1270. shared_library: true,
  1271. public: {
  1272. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1273. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1274. current_api: "sdk_library/public/myjavalib.txt",
  1275. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1276. sdk_version: "current",
  1277. },
  1278. system: {
  1279. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  1280. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  1281. current_api: "sdk_library/system/myjavalib.txt",
  1282. removed_api: "sdk_library/system/myjavalib-removed.txt",
  1283. sdk_version: "system_current",
  1284. },
  1285. module_lib: {
  1286. jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
  1287. stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
  1288. current_api: "sdk_library/module-lib/myjavalib.txt",
  1289. removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
  1290. sdk_version: "module_current",
  1291. },
  1292. }
  1293. java_sdk_library_import {
  1294. name: "myjavalib",
  1295. prefer: false,
  1296. visibility: ["//visibility:public"],
  1297. apex_available: ["//apex_available:anyapex"],
  1298. shared_library: true,
  1299. public: {
  1300. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1301. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1302. current_api: "sdk_library/public/myjavalib.txt",
  1303. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1304. sdk_version: "current",
  1305. },
  1306. system: {
  1307. jars: ["sdk_library/system/myjavalib-stubs.jar"],
  1308. stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
  1309. current_api: "sdk_library/system/myjavalib.txt",
  1310. removed_api: "sdk_library/system/myjavalib-removed.txt",
  1311. sdk_version: "system_current",
  1312. },
  1313. module_lib: {
  1314. jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
  1315. stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
  1316. current_api: "sdk_library/module-lib/myjavalib.txt",
  1317. removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
  1318. sdk_version: "module_current",
  1319. },
  1320. }
  1321. sdk_snapshot {
  1322. name: "mysdk@current",
  1323. visibility: ["//visibility:public"],
  1324. java_sdk_libs: ["mysdk_myjavalib@current"],
  1325. }
  1326. `),
  1327. checkAllCopyRules(`
  1328. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1329. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1330. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1331. .intermediates/myjavalib.stubs.system/android_common/javac/myjavalib.stubs.system.jar -> sdk_library/system/myjavalib-stubs.jar
  1332. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
  1333. .intermediates/myjavalib.stubs.source.system/android_common/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
  1334. .intermediates/myjavalib.stubs.module_lib/android_common/javac/myjavalib.stubs.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
  1335. .intermediates/myjavalib.stubs.source.module_lib/android_common/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
  1336. .intermediates/myjavalib.stubs.source.module_lib/android_common/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
  1337. `),
  1338. checkMergeZips(
  1339. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1340. ".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
  1341. ".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
  1342. ),
  1343. )
  1344. }
  1345. func TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
  1346. result := testSdkWithJava(t, `
  1347. sdk {
  1348. name: "mysdk",
  1349. java_sdk_libs: ["myjavalib"],
  1350. }
  1351. java_sdk_library {
  1352. name: "myjavalib",
  1353. apex_available: ["//apex_available:anyapex"],
  1354. srcs: ["Test.java"],
  1355. sdk_version: "current",
  1356. public: {
  1357. enabled: true,
  1358. },
  1359. system_server: {
  1360. enabled: true,
  1361. },
  1362. }
  1363. `)
  1364. result.CheckSnapshot("mysdk", "",
  1365. checkAndroidBpContents(`
  1366. // This is auto-generated. DO NOT EDIT.
  1367. java_sdk_library_import {
  1368. name: "mysdk_myjavalib@current",
  1369. sdk_member_name: "myjavalib",
  1370. visibility: ["//visibility:public"],
  1371. apex_available: ["//apex_available:anyapex"],
  1372. shared_library: true,
  1373. public: {
  1374. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1375. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1376. current_api: "sdk_library/public/myjavalib.txt",
  1377. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1378. sdk_version: "current",
  1379. },
  1380. system_server: {
  1381. jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
  1382. stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
  1383. current_api: "sdk_library/system-server/myjavalib.txt",
  1384. removed_api: "sdk_library/system-server/myjavalib-removed.txt",
  1385. sdk_version: "system_server_current",
  1386. },
  1387. }
  1388. java_sdk_library_import {
  1389. name: "myjavalib",
  1390. prefer: false,
  1391. visibility: ["//visibility:public"],
  1392. apex_available: ["//apex_available:anyapex"],
  1393. shared_library: true,
  1394. public: {
  1395. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1396. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1397. current_api: "sdk_library/public/myjavalib.txt",
  1398. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1399. sdk_version: "current",
  1400. },
  1401. system_server: {
  1402. jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
  1403. stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
  1404. current_api: "sdk_library/system-server/myjavalib.txt",
  1405. removed_api: "sdk_library/system-server/myjavalib-removed.txt",
  1406. sdk_version: "system_server_current",
  1407. },
  1408. }
  1409. sdk_snapshot {
  1410. name: "mysdk@current",
  1411. visibility: ["//visibility:public"],
  1412. java_sdk_libs: ["mysdk_myjavalib@current"],
  1413. }
  1414. `),
  1415. checkAllCopyRules(`
  1416. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1417. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1418. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1419. .intermediates/myjavalib.stubs.system_server/android_common/javac/myjavalib.stubs.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar
  1420. .intermediates/myjavalib.stubs.source.system_server/android_common/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
  1421. .intermediates/myjavalib.stubs.source.system_server/android_common/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt
  1422. `),
  1423. checkMergeZips(
  1424. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1425. ".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
  1426. ),
  1427. )
  1428. }
  1429. func TestSnapshotWithJavaSdkLibrary_NamingScheme(t *testing.T) {
  1430. result := testSdkWithJava(t, `
  1431. sdk {
  1432. name: "mysdk",
  1433. java_sdk_libs: ["myjavalib"],
  1434. }
  1435. java_sdk_library {
  1436. name: "myjavalib",
  1437. apex_available: ["//apex_available:anyapex"],
  1438. srcs: ["Test.java"],
  1439. sdk_version: "current",
  1440. naming_scheme: "default",
  1441. public: {
  1442. enabled: true,
  1443. },
  1444. }
  1445. `)
  1446. result.CheckSnapshot("mysdk", "",
  1447. checkAndroidBpContents(`
  1448. // This is auto-generated. DO NOT EDIT.
  1449. java_sdk_library_import {
  1450. name: "mysdk_myjavalib@current",
  1451. sdk_member_name: "myjavalib",
  1452. visibility: ["//visibility:public"],
  1453. apex_available: ["//apex_available:anyapex"],
  1454. naming_scheme: "default",
  1455. shared_library: true,
  1456. public: {
  1457. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1458. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1459. current_api: "sdk_library/public/myjavalib.txt",
  1460. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1461. sdk_version: "current",
  1462. },
  1463. }
  1464. java_sdk_library_import {
  1465. name: "myjavalib",
  1466. prefer: false,
  1467. visibility: ["//visibility:public"],
  1468. apex_available: ["//apex_available:anyapex"],
  1469. naming_scheme: "default",
  1470. shared_library: true,
  1471. public: {
  1472. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1473. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1474. current_api: "sdk_library/public/myjavalib.txt",
  1475. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1476. sdk_version: "current",
  1477. },
  1478. }
  1479. sdk_snapshot {
  1480. name: "mysdk@current",
  1481. visibility: ["//visibility:public"],
  1482. java_sdk_libs: ["mysdk_myjavalib@current"],
  1483. }
  1484. `),
  1485. checkAllCopyRules(`
  1486. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1487. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1488. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1489. `),
  1490. checkMergeZips(
  1491. ".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
  1492. ),
  1493. )
  1494. }
  1495. func TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) {
  1496. result := testSdkWithJava(t, `
  1497. sdk {
  1498. name: "mysdk",
  1499. java_sdk_libs: ["myjavalib"],
  1500. }
  1501. java_sdk_library {
  1502. name: "myjavalib",
  1503. srcs: ["Test.java"],
  1504. sdk_version: "current",
  1505. public: {
  1506. enabled: true,
  1507. },
  1508. doctag_files: ["docs/known_doctags"],
  1509. }
  1510. filegroup {
  1511. name: "mygroup",
  1512. srcs: [":myjavalib{.doctags}"],
  1513. }
  1514. `)
  1515. result.CheckSnapshot("mysdk", "",
  1516. checkAndroidBpContents(`
  1517. // This is auto-generated. DO NOT EDIT.
  1518. java_sdk_library_import {
  1519. name: "mysdk_myjavalib@current",
  1520. sdk_member_name: "myjavalib",
  1521. visibility: ["//visibility:public"],
  1522. shared_library: true,
  1523. doctag_files: ["doctags/docs/known_doctags"],
  1524. public: {
  1525. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1526. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1527. current_api: "sdk_library/public/myjavalib.txt",
  1528. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1529. sdk_version: "current",
  1530. },
  1531. }
  1532. java_sdk_library_import {
  1533. name: "myjavalib",
  1534. prefer: false,
  1535. visibility: ["//visibility:public"],
  1536. shared_library: true,
  1537. doctag_files: ["doctags/docs/known_doctags"],
  1538. public: {
  1539. jars: ["sdk_library/public/myjavalib-stubs.jar"],
  1540. stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
  1541. current_api: "sdk_library/public/myjavalib.txt",
  1542. removed_api: "sdk_library/public/myjavalib-removed.txt",
  1543. sdk_version: "current",
  1544. },
  1545. }
  1546. sdk_snapshot {
  1547. name: "mysdk@current",
  1548. visibility: ["//visibility:public"],
  1549. java_sdk_libs: ["mysdk_myjavalib@current"],
  1550. }
  1551. `),
  1552. checkAllCopyRules(`
  1553. .intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
  1554. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
  1555. .intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
  1556. docs/known_doctags -> doctags/docs/known_doctags
  1557. `),
  1558. )
  1559. }