Add more tests for derive_sdk am: b7545f9e07
Original change: https://android-review.googlesource.com/c/platform/packages/modules/SdkExtensions/+/1537284
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Id8909dd1567c0641f952e1249bd6c5a3ebb1c04f
diff --git a/derive_sdk/derive_sdk_test.cpp b/derive_sdk/derive_sdk_test.cpp
index 5dbfdb7..72ff9ab 100644
--- a/derive_sdk/derive_sdk_test.cpp
+++ b/derive_sdk/derive_sdk_test.cpp
@@ -14,16 +14,42 @@
* limitations under the License.
*/
+#define LOG_TAG "derive_sdk_test"
+
#include "derive_sdk.h"
+#include <android-base/file.h>
+#include <android-base/logging.h>
#include <android-base/properties.h>
#include <gtest/gtest.h>
+#include <sys/stat.h>
#include <cstdlib>
+#include "packages/modules/SdkExtensions/derive_sdk/sdk.pb.h"
+
+using com::android::sdkext::proto::SdkVersion;
+
class DeriveSdkTest : public ::testing::Test {
protected:
void TearDown() override { android::derivesdk::SetSdkLevels("/apex"); }
+
+ std::string dir() { return std::string(dir_.path); }
+
+ void MakeSdkVersion(std::string apex, int version) {
+ SdkVersion sdk_version;
+ sdk_version.set_version(version);
+ std::string buf;
+ ASSERT_TRUE(sdk_version.SerializeToString(&buf));
+ std::string path = dir() + "/" + apex;
+ ASSERT_EQ(0, mkdir(path.c_str(), 0755));
+ path += "/etc";
+ ASSERT_EQ(0, mkdir(path.c_str(), 0755));
+ path += "/sdkinfo.binarypb";
+ ASSERT_TRUE(android::base::WriteStringToFile(buf, path, true));
+ }
+
+ TemporaryDir dir_;
};
int R() {
@@ -32,6 +58,23 @@
TEST_F(DeriveSdkTest, CurrentSystemImageValue) { EXPECT_EQ(R(), 0); }
+TEST_F(DeriveSdkTest, OneApex) {
+ MakeSdkVersion("a", 3);
+
+ android::derivesdk::SetSdkLevels(dir());
+
+ EXPECT_EQ(R(), 3);
+}
+
+TEST_F(DeriveSdkTest, TwoApexes) {
+ MakeSdkVersion("a", 3);
+ MakeSdkVersion("b", 5);
+
+ android::derivesdk::SetSdkLevels(dir());
+
+ EXPECT_EQ(R(), 3);
+}
+
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();