Skip to content

Commit f6f54ca

Browse files
committed
refs #12834 - du-duplicate some input paths by comparing simplified paths
1 parent 3a99f41 commit f6f54ca

3 files changed

Lines changed: 14 additions & 64 deletions

File tree

cli/cmdlineparser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,10 @@ bool CmdLineParser::fillSettingsFromArgs(int argc, const char* const argv[])
269269
{
270270
auto it = filesResolved.begin();
271271
while (it != filesResolved.end()) {
272-
const std::string& name = it->path();
272+
const std::string& sname = it->spath();
273273
// TODO: log if duplicated files were dropped
274274
filesResolved.erase(std::remove_if(std::next(it), filesResolved.end(), [&](const FileWithDetails& entry) {
275-
return entry.path() == name;
275+
return entry.spath() == sname;
276276
}), filesResolved.end());
277277
++it;
278278
}

test/cli/more-projects_test.py

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -687,28 +687,13 @@ def test_project_file_duplicate_3(tmpdir):
687687
</project>""".format(in_file_a, in_file_b, in_file_c, in_file_d, in_file_e, in_file_f, tmpdir))
688688

689689
args = ['--project={}'.format(project_file)]
690-
args.append('-j1') # TODO: remove when fixed
691690

692691
exitcode, stdout, stderr = cppcheck(args, cwd=tmpdir)
693692
assert exitcode == 0
694693
lines = stdout.splitlines()
695-
# TODO: only a single file should be checked
696-
if sys.platform == 'win32':
697-
assert lines == [
698-
'Checking {} ...'.format(test_file_a),
699-
'1/3 files checked 33% done',
700-
'Checking {} ...'.format(test_file_a),
701-
'2/3 files checked 66% done',
702-
'Checking {} ...'.format(test_file_a),
703-
'3/3 files checked 100% done'
704-
]
705-
else:
706-
assert lines == [
707-
'Checking {} ...'.format(test_file_a),
708-
'1/2 files checked 50% done',
709-
'Checking {} ...'.format(test_file_a),
710-
'2/2 files checked 100% done'
711-
]
694+
assert lines == [
695+
'Checking {} ...'.format(test_file_a)
696+
]
712697
assert stderr == ''
713698

714699

@@ -756,19 +741,12 @@ def test_project_file_duplicate_4(tmpdir):
756741
args2[0], args2[1], args2[2], args2[3], args2[4], args2[5], args2[6]))
757742

758743
args = ['--project={}'.format(project_file)]
759-
args.append('-j1') # TODO: remove when fixed
760744

761745
exitcode, stdout, stderr = cppcheck(args, cwd=tmpdir)
762746
assert exitcode == 0
763747
lines = stdout.splitlines()
764-
# TODO: only a single file should be checked
765748
assert lines == [
766-
'Checking {} ...'.format(test_file_a),
767-
'1/3 files checked 33% done',
768-
'Checking {} ...'.format(test_file_a),
769-
'2/3 files checked 66% done',
770-
'Checking {} ...'.format(test_file_a),
771-
'3/3 files checked 100% done'
749+
'Checking {} ...'.format(test_file_a)
772750
]
773751
assert stderr == ''
774752

test/cli/other_test.py

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,32 +1236,12 @@ def test_file_duplicate_3(tmpdir):
12361236
assert exitcode == 0, stdout if stdout else stderr
12371237
lines = stdout.splitlines()
12381238
# TODO: only a single file should be checked
1239-
if sys.platform == 'win32':
1240-
assert lines == [
1241-
'Checking {} ...'.format('a.c'),
1242-
'1/6 files checked 16% done',
1243-
'Checking {} ...'.format('a.c'),
1244-
'2/6 files checked 33% done',
1245-
'Checking {} ...'.format('a.c'),
1246-
'3/6 files checked 50% done',
1247-
'Checking {} ...'.format(test_file_a),
1248-
'4/6 files checked 66% done',
1249-
'Checking {} ...'.format(test_file_a),
1250-
'5/6 files checked 83% done',
1251-
'Checking {} ...'.format(test_file_a),
1252-
'6/6 files checked 100% done'
1253-
]
1254-
else:
1255-
assert lines == [
1256-
'Checking {} ...'.format('a.c'),
1257-
'1/4 files checked 25% done',
1258-
'Checking {} ...'.format('a.c'),
1259-
'2/4 files checked 50% done',
1260-
'Checking {} ...'.format(test_file_a),
1261-
'3/4 files checked 75% done',
1262-
'Checking {} ...'.format(test_file_a),
1263-
'4/4 files checked 100% done'
1264-
]
1239+
assert lines == [
1240+
'Checking {} ...'.format('a.c'),
1241+
'1/2 files checked 50% done',
1242+
'Checking {} ...'.format(test_file_a),
1243+
'2/2 files checked 100% done'
1244+
]
12651245
assert stderr == ''
12661246

12671247

@@ -1292,17 +1272,9 @@ def test_file_duplicate_4(tmpdir):
12921272
# TODO: only a single file should be checked
12931273
assert lines == [
12941274
'Checking {} ...'.format('a.c'),
1295-
'1/6 files checked 16% done',
1296-
'Checking {} ...'.format('a.c'),
1297-
'2/6 files checked 33% done',
1298-
'Checking {} ...'.format('a.c'),
1299-
'3/6 files checked 50% done',
1300-
'Checking {} ...'.format(test_file_a),
1301-
'4/6 files checked 66% done',
1302-
'Checking {} ...'.format(test_file_a),
1303-
'5/6 files checked 83% done',
1275+
'1/2 files checked 50% done',
13041276
'Checking {} ...'.format(test_file_a),
1305-
'6/6 files checked 100% done'
1277+
'2/2 files checked 100% done'
13061278
]
13071279
assert stderr == ''
13081280

0 commit comments

Comments
 (0)