|  | // 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')); | 
|  | }); | 
|  | }); | 
|  | } |