169570cc8Sopenharmony_ci/* 269570cc8Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 369570cc8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 469570cc8Sopenharmony_ci * you may not use this file except in compliance with the License. 569570cc8Sopenharmony_ci * You may obtain a copy of the License at 669570cc8Sopenharmony_ci * 769570cc8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 869570cc8Sopenharmony_ci * 969570cc8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1069570cc8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1169570cc8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1269570cc8Sopenharmony_ci * See the License for the specific language governing permissions and 1369570cc8Sopenharmony_ci * limitations under the License. 1469570cc8Sopenharmony_ci */ 1569570cc8Sopenharmony_ci 1669570cc8Sopenharmony_ci#include <gtest/gtest.h> 1769570cc8Sopenharmony_ci 1869570cc8Sopenharmony_ci#include <cerrno> 1969570cc8Sopenharmony_ci#include <climits> 2069570cc8Sopenharmony_ci#include <cstdlib> 2169570cc8Sopenharmony_ci#include <cstring> 2269570cc8Sopenharmony_ci#include <memory> 2369570cc8Sopenharmony_ci#include <string> 2469570cc8Sopenharmony_ci#include <sys/stat.h> 2569570cc8Sopenharmony_ci#include <sys/types.h> 2669570cc8Sopenharmony_ci#include <unistd.h> 2769570cc8Sopenharmony_ci 2869570cc8Sopenharmony_ci#include "hnp_base.h" 2969570cc8Sopenharmony_ci#include "hnp_pack.h" 3069570cc8Sopenharmony_ci#include "securec.h" 3169570cc8Sopenharmony_ci 3269570cc8Sopenharmony_ciusing namespace testing; 3369570cc8Sopenharmony_ciusing namespace testing::ext; 3469570cc8Sopenharmony_ci 3569570cc8Sopenharmony_ci#ifdef __cplusplus 3669570cc8Sopenharmony_ci extern "C" { 3769570cc8Sopenharmony_ci#endif 3869570cc8Sopenharmony_ci 3969570cc8Sopenharmony_ci 4069570cc8Sopenharmony_ci#ifdef __cplusplus 4169570cc8Sopenharmony_ci } 4269570cc8Sopenharmony_ci#endif 4369570cc8Sopenharmony_ci 4469570cc8Sopenharmony_cinamespace OHOS { 4569570cc8Sopenharmony_ciclass HnpPackTest : public testing::Test { 4669570cc8Sopenharmony_cipublic: 4769570cc8Sopenharmony_ci static void SetUpTestCase(); 4869570cc8Sopenharmony_ci static void TearDownTestCase(); 4969570cc8Sopenharmony_ci void SetUp(); 5069570cc8Sopenharmony_ci void TearDown(); 5169570cc8Sopenharmony_ci}; 5269570cc8Sopenharmony_ci 5369570cc8Sopenharmony_civoid HnpPackTest::SetUpTestCase() 5469570cc8Sopenharmony_ci{ 5569570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_TEST SetUpTestCase"; 5669570cc8Sopenharmony_ci} 5769570cc8Sopenharmony_ci 5869570cc8Sopenharmony_civoid HnpPackTest::TearDownTestCase() 5969570cc8Sopenharmony_ci{ 6069570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_TEST TearDownTestCase"; 6169570cc8Sopenharmony_ci} 6269570cc8Sopenharmony_ci 6369570cc8Sopenharmony_civoid HnpPackTest::SetUp() 6469570cc8Sopenharmony_ci{ 6569570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_TEST SetUp"; 6669570cc8Sopenharmony_ci} 6769570cc8Sopenharmony_ci 6869570cc8Sopenharmony_civoid HnpPackTest::TearDown() 6969570cc8Sopenharmony_ci{ 7069570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_TEST TearDown"; 7169570cc8Sopenharmony_ci} 7269570cc8Sopenharmony_ci 7369570cc8Sopenharmony_ci 7469570cc8Sopenharmony_ci/** 7569570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_001 7669570cc8Sopenharmony_ci* @tc.desc: Verify set Arg if HnpCmdPack succeed. 7769570cc8Sopenharmony_ci* @tc.type: FUNC 7869570cc8Sopenharmony_ci* @tc.require:issueI98PSE 7969570cc8Sopenharmony_ci* @tc.author: 8069570cc8Sopenharmony_ci*/ 8169570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_001, TestSize.Level0) 8269570cc8Sopenharmony_ci{ 8369570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_001 start"; 8469570cc8Sopenharmony_ci 8569570cc8Sopenharmony_ci // clear resource before test 8669570cc8Sopenharmony_ci remove("./hnp_out/sample.hnp"); 8769570cc8Sopenharmony_ci rmdir("hnp_out"); 8869570cc8Sopenharmony_ci remove("hnp_sample/hnp.json"); 8969570cc8Sopenharmony_ci rmdir("hnp_sample"); 9069570cc8Sopenharmony_ci 9169570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 9269570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 9369570cc8Sopenharmony_ci 9469570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 9569570cc8Sopenharmony_ci 9669570cc8Sopenharmony_ci { // param num not enough 9769570cc8Sopenharmony_ci char *argv[] = {arg1, arg2}; 9869570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 9969570cc8Sopenharmony_ci 10069570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_OPERATOR_ARGV_MISS); 10169570cc8Sopenharmony_ci } 10269570cc8Sopenharmony_ci { // src dir path is invalid 10369570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample2", arg5[] = "-o", arg6[] = "./hnp_out"; 10469570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 10569570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 10669570cc8Sopenharmony_ci 10769570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_PACK_GET_REALPATH_FAILED); 10869570cc8Sopenharmony_ci } 10969570cc8Sopenharmony_ci { // no name and version 11069570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 11169570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 11269570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 11369570cc8Sopenharmony_ci 11469570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_OPERATOR_ARGV_MISS); 11569570cc8Sopenharmony_ci } 11669570cc8Sopenharmony_ci { // ok 11769570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 11869570cc8Sopenharmony_ci char arg7[] = "-n", arg8[] = "sample", arg9[] = "-v", arg10[] = "1.1"; 11969570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10}; 12069570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 12169570cc8Sopenharmony_ci 12269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), 0); 12369570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_out/sample.hnp"), 0); 12469570cc8Sopenharmony_ci } 12569570cc8Sopenharmony_ci 12669570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 12769570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 12869570cc8Sopenharmony_ci 12969570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_001 end"; 13069570cc8Sopenharmony_ci} 13169570cc8Sopenharmony_ci 13269570cc8Sopenharmony_ci/** 13369570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_002 13469570cc8Sopenharmony_ci* @tc.desc: Verify set Arg with cfg if HnpCmdPack succeed. 13569570cc8Sopenharmony_ci* @tc.type: FUNC 13669570cc8Sopenharmony_ci* @tc.require:issueI98PSE 13769570cc8Sopenharmony_ci* @tc.author: 13869570cc8Sopenharmony_ci*/ 13969570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_002, TestSize.Level0) 14069570cc8Sopenharmony_ci{ 14169570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_002 start"; 14269570cc8Sopenharmony_ci 14369570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 14469570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 14569570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/hnp.json", "w"); 14669570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 14769570cc8Sopenharmony_ci fclose(fp); 14869570cc8Sopenharmony_ci 14969570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 15069570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 15169570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 15269570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 15369570cc8Sopenharmony_ci 15469570cc8Sopenharmony_ci { // cfg file content is empty 15569570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_READ_FILE_STREAM_FAILED); 15669570cc8Sopenharmony_ci } 15769570cc8Sopenharmony_ci { // cfg file not json formaat 15869570cc8Sopenharmony_ci char cfg[] = "this is for test!"; 15969570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 16069570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 16169570cc8Sopenharmony_ci fclose(fp); 16269570cc8Sopenharmony_ci 16369570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_JSON_FAILED); 16469570cc8Sopenharmony_ci } 16569570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/hnp.json"), 0); 16669570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 16769570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 16869570cc8Sopenharmony_ci 16969570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_002 end"; 17069570cc8Sopenharmony_ci} 17169570cc8Sopenharmony_ci 17269570cc8Sopenharmony_ci/** 17369570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_003 17469570cc8Sopenharmony_ci* @tc.desc: Verify set cfg type item invalid if HnpCmdPack succeed. 17569570cc8Sopenharmony_ci* @tc.type: FUNC 17669570cc8Sopenharmony_ci* @tc.require:issueI98PSE 17769570cc8Sopenharmony_ci* @tc.author: 17869570cc8Sopenharmony_ci*/ 17969570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_003, TestSize.Level0) 18069570cc8Sopenharmony_ci{ 18169570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_003 start"; 18269570cc8Sopenharmony_ci 18369570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 18469570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 18569570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/hnp.json", "w"); 18669570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 18769570cc8Sopenharmony_ci fclose(fp); 18869570cc8Sopenharmony_ci 18969570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 19069570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 19169570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 19269570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 19369570cc8Sopenharmony_ci 19469570cc8Sopenharmony_ci { // cfg file content has not type item 19569570cc8Sopenharmony_ci char cfg[] = "{\"typ\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 19669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 19769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 19869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 19969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 20069570cc8Sopenharmony_ci fclose(fp); 20169570cc8Sopenharmony_ci 20269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 20369570cc8Sopenharmony_ci } 20469570cc8Sopenharmony_ci { // type item value is not expected 20569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnpconfig\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 20669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 20769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 20869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 20969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 21069570cc8Sopenharmony_ci fclose(fp); 21169570cc8Sopenharmony_ci 21269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 21369570cc8Sopenharmony_ci } 21469570cc8Sopenharmony_ci 21569570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/hnp.json"), 0); 21669570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 21769570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 21869570cc8Sopenharmony_ci 21969570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_003 end"; 22069570cc8Sopenharmony_ci} 22169570cc8Sopenharmony_ci 22269570cc8Sopenharmony_ci/** 22369570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_004 22469570cc8Sopenharmony_ci* @tc.desc: Verify set cfg invalid if HnpCmdPack succeed. 22569570cc8Sopenharmony_ci* @tc.type: FUNC 22669570cc8Sopenharmony_ci* @tc.require:issueI98PSE 22769570cc8Sopenharmony_ci* @tc.author: 22869570cc8Sopenharmony_ci*/ 22969570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_004, TestSize.Level0) 23069570cc8Sopenharmony_ci{ 23169570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_004 start"; 23269570cc8Sopenharmony_ci 23369570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 23469570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 23569570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/hnp.json", "w"); 23669570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 23769570cc8Sopenharmony_ci fclose(fp); 23869570cc8Sopenharmony_ci 23969570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 24069570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 24169570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 24269570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 24369570cc8Sopenharmony_ci 24469570cc8Sopenharmony_ci { // cfg file content has not name item 24569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"version\":\"1.1\",\"install\":" 24669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 24769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 24869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 24969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 25069570cc8Sopenharmony_ci fclose(fp); 25169570cc8Sopenharmony_ci 25269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 25369570cc8Sopenharmony_ci } 25469570cc8Sopenharmony_ci { // cfg file content has not version item 25569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"install\":" 25669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 25769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 25869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 25969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 26069570cc8Sopenharmony_ci fclose(fp); 26169570cc8Sopenharmony_ci 26269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 26369570cc8Sopenharmony_ci } 26469570cc8Sopenharmony_ci { // cfg file content has not install item 26569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"uninstall\":" 26669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 26769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 26869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 26969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 27069570cc8Sopenharmony_ci fclose(fp); 27169570cc8Sopenharmony_ci 27269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 27369570cc8Sopenharmony_ci } 27469570cc8Sopenharmony_ci 27569570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/hnp.json"), 0); 27669570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 27769570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 27869570cc8Sopenharmony_ci 27969570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_004 end"; 28069570cc8Sopenharmony_ci} 28169570cc8Sopenharmony_ci 28269570cc8Sopenharmony_ci/** 28369570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_005 28469570cc8Sopenharmony_ci* @tc.desc: Verify set cfg links item invalid if HnpCmdPack succeed. 28569570cc8Sopenharmony_ci* @tc.type: FUNC 28669570cc8Sopenharmony_ci* @tc.require:issueI98PSE 28769570cc8Sopenharmony_ci* @tc.author: 28869570cc8Sopenharmony_ci*/ 28969570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_005, TestSize.Level0) 29069570cc8Sopenharmony_ci{ 29169570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_005 start"; 29269570cc8Sopenharmony_ci 29369570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 29469570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 29569570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/hnp.json", "w"); 29669570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 29769570cc8Sopenharmony_ci fclose(fp); 29869570cc8Sopenharmony_ci 29969570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 30069570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 30169570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 30269570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 30369570cc8Sopenharmony_ci 30469570cc8Sopenharmony_ci { // link arry item has not source item 30569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 30669570cc8Sopenharmony_ci "{\"links\":[{\"src\":\"bin/out\",\"target\":\"out\"},{\"source\":\"bin/out2\"," 30769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 30869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 30969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 31069570cc8Sopenharmony_ci fclose(fp); 31169570cc8Sopenharmony_ci 31269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_BASE_PARSE_ITEM_NO_FOUND); 31369570cc8Sopenharmony_ci } 31469570cc8Sopenharmony_ci { // ok, link arry item has not target item 31569570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 31669570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"a.out\",\"tar\":\"out\"},{\"source\":\"a.out\"," 31769570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 31869570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 31969570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 32069570cc8Sopenharmony_ci fclose(fp); 32169570cc8Sopenharmony_ci 32269570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_PACK_GET_REALPATH_FAILED); 32369570cc8Sopenharmony_ci 32469570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/a.out", "w"); 32569570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 32669570cc8Sopenharmony_ci fclose(fp); 32769570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), 0); 32869570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/a.out"), 0); 32969570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_out/sample.hnp"), 0); 33069570cc8Sopenharmony_ci } 33169570cc8Sopenharmony_ci 33269570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/hnp.json"), 0); 33369570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 33469570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 33569570cc8Sopenharmony_ci 33669570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_005 end"; 33769570cc8Sopenharmony_ci} 33869570cc8Sopenharmony_ci 33969570cc8Sopenharmony_ci/** 34069570cc8Sopenharmony_ci* @tc.name: Hnp_Pack_006 34169570cc8Sopenharmony_ci* @tc.desc: Verify set cfg valid if HnpCmdPack succeed. 34269570cc8Sopenharmony_ci* @tc.type: FUNC 34369570cc8Sopenharmony_ci* @tc.require:issueI98PSE 34469570cc8Sopenharmony_ci* @tc.author: 34569570cc8Sopenharmony_ci*/ 34669570cc8Sopenharmony_ciHWTEST_F(HnpPackTest, Hnp_Pack_006, TestSize.Level0) 34769570cc8Sopenharmony_ci{ 34869570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_006 start"; 34969570cc8Sopenharmony_ci 35069570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 35169570cc8Sopenharmony_ci EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0); 35269570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/hnp.json", "w"); 35369570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 35469570cc8Sopenharmony_ci fclose(fp); 35569570cc8Sopenharmony_ci 35669570cc8Sopenharmony_ci char arg1[] = "hnp", arg2[] = "pack"; 35769570cc8Sopenharmony_ci char arg3[] = "-i", arg4[] = "./hnp_sample", arg5[] = "-o", arg6[] = "./hnp_out"; 35869570cc8Sopenharmony_ci char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6}; 35969570cc8Sopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 36069570cc8Sopenharmony_ci 36169570cc8Sopenharmony_ci { // ok. no links item in install item 36269570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":{}}"; 36369570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 36469570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 36569570cc8Sopenharmony_ci fclose(fp); 36669570cc8Sopenharmony_ci 36769570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), 0); 36869570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_out/sample.hnp"), 0); 36969570cc8Sopenharmony_ci } 37069570cc8Sopenharmony_ci { // ok. no array in links item 37169570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 37269570cc8Sopenharmony_ci "{\"links\":[]}}"; 37369570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 37469570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 37569570cc8Sopenharmony_ci fclose(fp); 37669570cc8Sopenharmony_ci 37769570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), 0); 37869570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_out/sample.hnp"), 0); 37969570cc8Sopenharmony_ci } 38069570cc8Sopenharmony_ci { // ok. 2 links 38169570cc8Sopenharmony_ci char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":" 38269570cc8Sopenharmony_ci "{\"links\":[{\"source\":\"a.out\",\"target\":\"out\"},{\"source\":\"a.out\"," 38369570cc8Sopenharmony_ci "\"target\":\"out2\"}]}}"; 38469570cc8Sopenharmony_ci fp = fopen("./hnp_sample/hnp.json", "w"); 38569570cc8Sopenharmony_ci EXPECT_EQ(fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp), strlen(cfg) + 1); 38669570cc8Sopenharmony_ci fclose(fp); 38769570cc8Sopenharmony_ci 38869570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), HNP_ERRNO_PACK_GET_REALPATH_FAILED); 38969570cc8Sopenharmony_ci 39069570cc8Sopenharmony_ci FILE *fp = fopen("./hnp_sample/a.out", "w"); 39169570cc8Sopenharmony_ci EXPECT_NE(fp, nullptr); 39269570cc8Sopenharmony_ci fclose(fp); 39369570cc8Sopenharmony_ci EXPECT_EQ(HnpCmdPack(argc, argv), 0); 39469570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/a.out"), 0); 39569570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_out/sample.hnp"), 0); 39669570cc8Sopenharmony_ci } 39769570cc8Sopenharmony_ci 39869570cc8Sopenharmony_ci EXPECT_EQ(remove("./hnp_sample/hnp.json"), 0); 39969570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_sample"), 0); 40069570cc8Sopenharmony_ci EXPECT_EQ(rmdir("hnp_out"), 0); 40169570cc8Sopenharmony_ci 40269570cc8Sopenharmony_ci GTEST_LOG_(INFO) << "Hnp_Pack_006 end"; 40369570cc8Sopenharmony_ci} 40469570cc8Sopenharmony_ci 40569570cc8Sopenharmony_ci 40669570cc8Sopenharmony_ci} // namespace OHOS 407