test: possibly fix rename-test flakes (#3653)

* test: possibly fix rename-test flakes

* ci: add gettext-dev to alpine workflow

* ci: make utils if tests change, since transmission-show is needed

* ci: add linux-headers to alpine workflow
This commit is contained in:
Charles Kerr 2022-08-16 17:47:02 -05:00 committed by GitHub
parent 6278ea7017
commit 988d8ff9ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 37 deletions

View File

@ -20,7 +20,7 @@ jobs:
make-qt: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.qt-changed == '1' }} make-qt: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.qt-changed == '1' }}
make-source-tarball: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.any-code-changed == '1' }} make-source-tarball: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.any-code-changed == '1' }}
make-tests: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.tests-changed == '1' }} make-tests: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.tests-changed == '1' }}
make-utils: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.utils-changed == '1' }} make-utils: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.utils-changed == '1' || steps.check-diffs.outputs.tests-changed == '1' }}
make-web: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.web-changed == '1' }} make-web: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.web-changed == '1' }}
test-style: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.our-code-changed == '1' }} test-style: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.our-code-changed == '1' }}
steps: steps:
@ -243,13 +243,14 @@ jobs:
apk add \ apk add \
ca-certificates \ ca-certificates \
cmake \ cmake \
g++ \
gettext \
git \
curl-dev \ curl-dev \
fmt-dev \ fmt-dev \
g++ \
gettext-dev \
git \
libevent-dev \ libevent-dev \
libpsl \ libpsl \
linux-headers \
miniupnpc-dev \ miniupnpc-dev \
ninja \ ninja \
pkgconfig \ pkgconfig \

View File

@ -230,17 +230,17 @@ TEST_F(RenameTest, multifileTorrent)
{ {
char* str; char* str;
auto constexpr TotalSize = size_t{ 67 }; auto constexpr TotalSize = size_t{ 67 };
auto const expected_files = std::array<std::string, 4>{ auto constexpr ExpectedFiles = std::array<std::string_view, 4>{
"Felidae/Felinae/Acinonyx/Cheetah/Chester", "Felidae/Felinae/Acinonyx/Cheetah/Chester"sv,
"Felidae/Felinae/Felis/catus/Kyphi", "Felidae/Felinae/Felis/catus/Kyphi"sv,
"Felidae/Felinae/Felis/catus/Saffron", "Felidae/Felinae/Felis/catus/Saffron"sv,
"Felidae/Pantherinae/Panthera/Tiger/Tony", "Felidae/Pantherinae/Panthera/Tiger/Tony"sv,
}; };
auto const expected_contents = std::array<std::string, 4>{ auto constexpr ExpectedContents = std::array<std::string_view, 4>{
"It ain't easy bein' cheesy.\n", "It ain't easy bein' cheesy.\n"sv,
"Inquisitive\n", "Inquisitive\n"sv,
"Tough\n", "Tough\n"sv,
"Theyre Grrrrreat!\n", "Theyre Grrrrreat!\n"sv,
}; };
auto* ctor = tr_ctorNew(session_); auto* ctor = tr_ctorNew(session_);
@ -263,7 +263,7 @@ TEST_F(RenameTest, multifileTorrent)
for (tr_file_index_t i = 0; i < 4; ++i) for (tr_file_index_t i = 0; i < 4; ++i)
{ {
EXPECT_EQ(expected_files[i], tr_torrentFile(tor, i).name); EXPECT_EQ(ExpectedFiles[i], tr_torrentFile(tor, i).name);
} }
// sanity check the (empty) stats // sanity check the (empty) stats
@ -300,12 +300,12 @@ TEST_F(RenameTest, multifileTorrent)
// rename a branch... // rename a branch...
EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/catus", "placeholder")); EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/catus", "placeholder"));
EXPECT_EQ(expected_files[0], tr_torrentFile(tor, 0).name); EXPECT_EQ(ExpectedFiles[0], tr_torrentFile(tor, 0).name);
EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Kyphi", tr_torrentFile(tor, 1).name); EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Kyphi", tr_torrentFile(tor, 1).name);
EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Saffron", tr_torrentFile(tor, 2).name); EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Saffron", tr_torrentFile(tor, 2).name);
EXPECT_EQ(expected_files[3], tr_torrentFile(tor, 3).name); EXPECT_EQ(ExpectedFiles[3], tr_torrentFile(tor, 3).name);
EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, 1, expected_contents[1])); EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, 1, ExpectedContents[1]));
EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, 2, expected_contents[2])); EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, 2, ExpectedContents[2]));
// (while the branch is renamed: confirm that the .resume file remembers the changes) // (while the branch is renamed: confirm that the .resume file remembers the changes)
tr_resume::save(tor); tr_resume::save(tor);
@ -313,18 +313,18 @@ TEST_F(RenameTest, multifileTorrent)
tor->setFileSubpath(1, "gabba gabba hey"sv); tor->setFileSubpath(1, "gabba gabba hey"sv);
auto const loaded = tr_resume::load(tor, tr_resume::All, ctor, nullptr); auto const loaded = tr_resume::load(tor, tr_resume::All, ctor, nullptr);
EXPECT_NE(decltype(loaded){ 0 }, (loaded & tr_resume::Filenames)); EXPECT_NE(decltype(loaded){ 0 }, (loaded & tr_resume::Filenames));
EXPECT_EQ(expected_files[0], tr_torrentFile(tor, 0).name); EXPECT_EQ(ExpectedFiles[0], tr_torrentFile(tor, 0).name);
EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Kyphi", tr_torrentFile(tor, 1).name); EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Kyphi", tr_torrentFile(tor, 1).name);
EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Saffron", tr_torrentFile(tor, 2).name); EXPECT_STREQ("Felidae/Felinae/Felis/placeholder/Saffron", tr_torrentFile(tor, 2).name);
EXPECT_EQ(expected_files[3], tr_torrentFile(tor, 3).name); EXPECT_EQ(ExpectedFiles[3], tr_torrentFile(tor, 3).name);
// ...and back again // ...and back again
EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/placeholder", "catus")); EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/placeholder", "catus"));
for (tr_file_index_t i = 0; i < 4; ++i) for (tr_file_index_t i = 0; i < 4; ++i)
{ {
EXPECT_EQ(expected_files[i], tr_torrentFile(tor, i).name); EXPECT_EQ(ExpectedFiles[i], tr_torrentFile(tor, i).name);
EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, i, expected_contents[i])); EXPECT_TRUE(testFileExistsAndConsistsOfThisString(tor, i, ExpectedContents[i]));
} }
/*** /***
@ -343,7 +343,7 @@ TEST_F(RenameTest, multifileTorrent)
tr_free(str); tr_free(str);
sync(); sync();
blockingTorrentVerify(tor); blockingTorrentVerify(tor);
testFileExistsAndConsistsOfThisString(tor, 0, expected_contents[0]); testFileExistsAndConsistsOfThisString(tor, 0, ExpectedContents[0]);
for (tr_file_index_t i = 1; i <= 2; ++i) for (tr_file_index_t i = 1; i <= 2; ++i)
{ {
@ -352,21 +352,21 @@ TEST_F(RenameTest, multifileTorrent)
tr_free(str); tr_free(str);
} }
testFileExistsAndConsistsOfThisString(tor, 3, expected_contents[3]); testFileExistsAndConsistsOfThisString(tor, 3, ExpectedContents[3]);
// rename a branch... // rename a branch...
EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/catus", "foo")); EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/catus", "foo"));
EXPECT_EQ(expected_files[0], tr_torrentFile(tor, 0).name); EXPECT_EQ(ExpectedFiles[0], tr_torrentFile(tor, 0).name);
EXPECT_STREQ("Felidae/Felinae/Felis/foo/Kyphi", tr_torrentFile(tor, 1).name); EXPECT_STREQ("Felidae/Felinae/Felis/foo/Kyphi", tr_torrentFile(tor, 1).name);
EXPECT_STREQ("Felidae/Felinae/Felis/foo/Saffron", tr_torrentFile(tor, 2).name); EXPECT_STREQ("Felidae/Felinae/Felis/foo/Saffron", tr_torrentFile(tor, 2).name);
EXPECT_EQ(expected_files[3], tr_torrentFile(tor, 3).name); EXPECT_EQ(ExpectedFiles[3], tr_torrentFile(tor, 3).name);
// ...and back again // ...and back again
EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/foo", "catus")); EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae/Felinae/Felis/foo", "catus"));
for (tr_file_index_t i = 0; i < 4; ++i) for (tr_file_index_t i = 0; i < 4; ++i)
{ {
EXPECT_EQ(expected_files[i], tr_torrentFile(tor, i).name); EXPECT_EQ(ExpectedFiles[i], tr_torrentFile(tor, i).name);
} }
EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae", "gabba")); EXPECT_EQ(0, torrentRenameAndWait(tor, "Felidae", "gabba"));
@ -379,7 +379,7 @@ TEST_F(RenameTest, multifileTorrent)
for (tr_file_index_t i = 0; i < 4; ++i) for (tr_file_index_t i = 0; i < 4; ++i)
{ {
EXPECT_STREQ(strings[i], tr_torrentFile(tor, i).name); EXPECT_STREQ(strings[i], tr_torrentFile(tor, i).name);
testFileExistsAndConsistsOfThisString(tor, i, expected_contents[i]); testFileExistsAndConsistsOfThisString(tor, i, ExpectedContents[i]);
} }
// rename the root, then a branch, and then a leaf... // rename the root, then a branch, and then a leaf...
@ -394,7 +394,7 @@ TEST_F(RenameTest, multifileTorrent)
for (tr_file_index_t i = 0; i < 4; ++i) for (tr_file_index_t i = 0; i < 4; ++i)
{ {
EXPECT_STREQ(strings[i], tr_torrentFile(tor, i).name); EXPECT_STREQ(strings[i], tr_torrentFile(tor, i).name);
testFileExistsAndConsistsOfThisString(tor, i, expected_contents[i]); testFileExistsAndConsistsOfThisString(tor, i, ExpectedContents[i]);
} }
tr_ctorFree(ctor); tr_ctorFree(ctor);

View File

@ -459,13 +459,7 @@ protected:
{ {
EXPECT_NE(nullptr, tor->session); EXPECT_NE(nullptr, tor->session);
tr_wait_msec(100); tr_wait_msec(100);
EXPECT_TRUE(waitFor( EXPECT_TRUE(waitFor([tor]() { return tor->verifyState() == TR_VERIFY_NONE && tor->checked_pieces_.hasAll(); }, 4000));
[tor]()
{
auto const activity = tr_torrentGetActivity(tor);
return activity != TR_STATUS_CHECK && activity != TR_STATUS_CHECK_WAIT && tor->checked_pieces_.hasAll();
},
4000));
} }
void blockingTorrentVerify(tr_torrent* tor) const void blockingTorrentVerify(tr_torrent* tor) const