blob: eb88a91c76751f701593a1b59d1be6180df90c92 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:telemetry/src/pii_regexp.dart';
import 'package:test/test.dart';
void main() {
group('filterPiiFromErrorMessage', () {
test('filters paths greedily', () {
expect(filterPiiFromErrorMessage(r'a message: C:\My\Special Path'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(
r'a message: C:\My\Overly\..\Complicated\Special Path'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(r'a message: ..\A\Relative\Windows Path'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(
r'a message: A\Relatively\..\Complicated\Windows Path'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(r'a message: \\My\Windows\Network Share'),
equals('a message: <path>'));
expect(filterPiiFromErrorMessage(r'a message: Q:\I Have A Lot of Drives'),
equals('a message: <path>'));
expect(filterPiiFromErrorMessage(r'a message: R:\'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(r'a message: /Users/macuser/Desktop/dart/'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(
r'a message: ../relative_path/to_some/dart'),
equals('a message: <path>'));
expect(
filterPiiFromErrorMessage(
r'a message: embedded_dots/./../to_some/dart'),
equals('a message: <path>'));
});
test('filters some complex examples derived from real exceptions', () {
// Real world examples may not actually be perfectly readable due to the
// greediness of the matchers, but that's the tradeoff for making sure we
// get everything.
expect(
filterPiiFromErrorMessage(
r'Could not resolve "package:an_important_package/an_important_package.dart" in C:\Users\AUser\dart\files\foo.dart'),
equals('Could not resolve "<path>'));
});
test('filters filenames without path separators without being greedy', () {
expect(filterPiiFromErrorMessage(r'mine.dart: a special file'),
equals('<filename>: a special file'));
expect(filterPiiFromErrorMessage(r'foo.js: a special file'),
equals('<filename>: a special file'));
expect(filterPiiFromErrorMessage(r'something.exe: a special file'),
equals('<filename>: a special file'));
});
test('does not filter things that should not match', () {
expect(filterPiiFromErrorMessage('User ran a Commodore 64 executable'),
equals('User ran a Commodore 64 executable'));
expect(
filterPiiFromErrorMessage(
'franchiseError: somehow Palpatine returned'),
equals('franchiseError: somehow Palpatine returned'));
});
});
}