Skip to content

Commit 5421a21

Browse files
authored
[test] interfere with TChain reading other tree from first file
Closes https://its.cern.ch/jira/browse/ROOT-7973 or rather adds a test for it. It has been solved
1 parent 0ae05af commit 5421a21

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

tree/tree/test/TChainRegressions.cxx

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,67 @@
99

1010
class TTreeCache;
1111

12+
// https://its.cern.ch/jira/browse/ROOT-7973
13+
TEST(TChain, WrongCacheReadTwoTrees)
14+
{
15+
const auto treename1 = "tree1";
16+
const auto filename1 = "tchain7973_file1.root";
17+
const auto filename2 = "tchain7973_file2.root";
18+
{
19+
TFile f(filename1, "RECREATE");
20+
TTree t1(treename1, treename1);
21+
int var = 0;
22+
t1.Branch("bInt", &var);
23+
var = 1;
24+
t1.Fill();
25+
TTree t2(treename2, treename2);
26+
double var2 = 0.0;
27+
t2.Branch("bDouble", &var2);
28+
var2 = 2.0;
29+
t2.Fill();
30+
f.Write();
31+
f.Close();
32+
}
33+
{
34+
TFile f(filename2, "RECREATE");
35+
TTree t1(treename1, treename1);
36+
int var = 0;
37+
t1.Branch("bInt", &var);
38+
var = 3;
39+
t1.Fill();
40+
f.Write();
41+
f.Close();
42+
}
43+
{
44+
TChain chain(treename1);
45+
chain.AddFile(filename1);
46+
chain.AddFile(filename2);
47+
48+
// first entry in first file in chain
49+
Long64_t entry = 0;
50+
Long64_t treeEntry = chain.LoadTree(entry);
51+
52+
// read another tree from the same file
53+
TFile *f1 = chain.GetTree()->GetCurrentFile();
54+
TTree *tree2 = f1->Get<TTree>("tree2");
55+
tree2->GetEntry(0);
56+
57+
// first entry in second file in chain
58+
Long64_t entry2 = 1;
59+
Long64_t treeEntry2 = chain.LoadTree(entry2);
60+
EXPECT_EQ(treeEntry2, 0);
61+
}
62+
gSystem->Unlink(filename1);
63+
gSystem->Unlink(filename2);
64+
}
65+
1266
// ROOT-10672
1367
TEST(TChain, GetReadCacheBug)
1468
{
1569
const auto treename = "tree";
1670
const auto filename = "tchain_getreadcachebug.root";
1771
{
18-
TFile f(filename, "recreate");
72+
TFile f(filename, "RECREATE");
1973
ASSERT_FALSE(f.IsZombie());
2074
TTree t(treename, treename);
2175
t.Fill();

0 commit comments

Comments
 (0)