diff --git a/tools/packchk/src/ValidateSemantic.cpp b/tools/packchk/src/ValidateSemantic.cpp index 0ec11c87d..e862036ce 100644 --- a/tools/packchk/src/ValidateSemantic.cpp +++ b/tools/packchk/src/ValidateSemantic.cpp @@ -622,6 +622,7 @@ bool ValidateSemantic::CheckDeviceDependencies(RteDeviceItem *device, RteProject } rteProject->Clear(); + rteProject->SetAttribute("update-rte-files", "0"); rteProject->AddTarget("Test", filter.GetAttributes(), true, true); rteProject->SetActiveTarget("Test"); RteTarget* target = rteProject->GetActiveTarget(); @@ -851,6 +852,7 @@ bool ValidateSemantic::TestMcuDependencies(RtePackage* pKg) if(!rteProject || !pKg) { return false; } + rteProject->SetAttribute("update-rte-files", "0"); model.GetLatestPackage("ARM.CMSIS"); @@ -883,6 +885,7 @@ bool ValidateSemantic::TestComponentDependencies() if(!rteProject) { return true; } + rteProject->SetAttribute("update-rte-files", "0"); bool bOk = true; for(auto &[compKey, component] : model.GetComponentList()) { @@ -908,6 +911,7 @@ bool ValidateSemantic::TestComponentDependencies() XmlItem filter; rteProject->Clear(); + rteProject->SetAttribute("update-rte-files", "0"); rteProject->AddTarget("Test", filter.GetAttributes(), true, true); rteProject->SetActiveTarget("Test"); RteTarget* target = rteProject->GetActiveTarget(); diff --git a/tools/packchk/test/integtests/src/PackChkIntegTests.cpp b/tools/packchk/test/integtests/src/PackChkIntegTests.cpp index 5ef4fa976..83ddb601c 100644 --- a/tools/packchk/test/integtests/src/PackChkIntegTests.cpp +++ b/tools/packchk/test/integtests/src/PackChkIntegTests.cpp @@ -12,6 +12,23 @@ using namespace std; +class CurrentFolderScope { +public: + explicit CurrentFolderScope(const string& path) : + m_previousPath(RteFsUtils::GetCurrentFolder(false)) + { + RteFsUtils::SetCurrentFolder(path); + } + + ~CurrentFolderScope() + { + RteFsUtils::SetCurrentFolder(m_previousPath); + } + +private: + string m_previousPath; +}; + class PackChkIntegTests : public ::testing::Test { public: void SetUp() override; @@ -135,6 +152,32 @@ TEST_F(PackChkIntegTests, CheckValidPack) { EXPECT_EQ(0, packChk.Check(2, argv, nullptr)); } +TEST_F(PackChkIntegTests, CheckValidPackDoesNotCreateRteDirectory) { + const char* argv[2]; + + const string& pdscFile = PackChkIntegTestEnv::globaltestdata_dir + + "/packs/ARM/RteTest_DFP/0.1.1/ARM.RteTest_DFP.pdsc"; + ASSERT_TRUE(RteFsUtils::Exists(pdscFile)); + + const string workDir = PackChkIntegTestEnv::testoutput_dir + "/NoRteSideEffects"; + if (RteFsUtils::Exists(workDir)) { + RteFsUtils::RemoveDir(workDir); + } + ASSERT_TRUE(RteFsUtils::CreateDirectories(workDir)); + ASSERT_FALSE(RteFsUtils::Exists(workDir + "/RTE")); + + argv[0] = (char*)""; + argv[1] = (char*)pdscFile.c_str(); + + { + CurrentFolderScope cwd(workDir); + PackChk packChk; + EXPECT_EQ(0, packChk.Check(2, argv, nullptr)); + } + + EXPECT_FALSE(RteFsUtils::Exists(workDir + "/RTE")); +} + // Validate invalid software pack TEST_F(PackChkIntegTests, CheckInvalidPack) { const char* argv[3]; @@ -1301,4 +1344,3 @@ TEST_F(PackChkIntegTests, CheckConditionComponentDependency_Neg) { FAIL() << "error: warning M317 count != 4"; } } -