Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Side by Side Diff: pkg/analyzer/test/src/dart/sdk/sdk_test.dart

Issue 2406353002: Validate patch file paths. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.generated.sdk_test; 5 library analyzer.test.generated.sdk_test;
6 6
7 import 'package:analyzer/file_system/file_system.dart'; 7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart'; 8 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator; 9 import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
10 import 'package:analyzer/src/dart/sdk/sdk.dart'; 10 import 'package:analyzer/src/dart/sdk/sdk.dart';
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 r''' 520 r'''
521 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> { 521 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
522 'foo' : const LibraryInfo( 522 'foo' : const LibraryInfo(
523 'foo/foo.dart', 523 'foo/foo.dart',
524 patches: { 524 patches: {
525 VM_PLATFORM: [42]}), 525 VM_PLATFORM: [42]}),
526 };'''); 526 };''');
527 }, throwsArgumentError); 527 }, throwsArgumentError);
528 } 528 }
529 529
530 void test_readFrom_patches_invalid_path_hasDotDot() {
531 _assertPathIsInvalid('foo/../bar.dart');
532 _assertPathIsInvalid('../foo/bar.dart');
533 _assertPathIsInvalid('foo/bar..dart');
534 }
535
536 void test_readFrom_patches_invalid_path_isAbsolute() {
537 _assertPathIsInvalid('/foo.dart');
538 _assertPathIsInvalid('/foo/bar.dart');
539 }
540
541 void test_readFrom_patches_invalid_path_notPosix() {
542 _assertPathIsInvalid(r'foo\bar.dart');
543 }
544
530 void test_readFrom_patches_invalid_platformCombinator() { 545 void test_readFrom_patches_invalid_platformCombinator() {
531 expect(() { 546 expect(() {
532 new SdkLibrariesReader(false).readFromFile( 547 new SdkLibrariesReader(false).readFromFile(
533 resourceProvider.getFile('/libs.dart'), 548 resourceProvider.getFile('/libs.dart'),
534 r''' 549 r'''
535 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> { 550 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
536 'foo' : const LibraryInfo( 551 'foo' : const LibraryInfo(
537 'foo/foo.dart', 552 'foo/foo.dart',
538 patches: { 553 patches: {
539 DART2JS_PLATFORM + VM_PLATFORM: ['X']}), 554 DART2JS_PLATFORM + VM_PLATFORM: ['X']}),
(...skipping 24 matching lines...) Expand all
564 };'''); 579 };''');
565 expect(libraryMap, isNotNull); 580 expect(libraryMap, isNotNull);
566 expect(libraryMap.size(), 1); 581 expect(libraryMap.size(), 1);
567 SdkLibrary library = libraryMap.getLibrary('dart:my'); 582 SdkLibrary library = libraryMap.getLibrary('dart:my');
568 expect(library, isNotNull); 583 expect(library, isNotNull);
569 expect(library.path, 'my/my.dart'); 584 expect(library.path, 'my/my.dart');
570 expect(library.shortName, 'dart:my'); 585 expect(library.shortName, 'dart:my');
571 expect(library.getPatches(SdkLibraryImpl.VM_PLATFORM), isEmpty); 586 expect(library.getPatches(SdkLibraryImpl.VM_PLATFORM), isEmpty);
572 expect(library.getPatches(SdkLibraryImpl.DART2JS_PLATFORM), isEmpty); 587 expect(library.getPatches(SdkLibraryImpl.DART2JS_PLATFORM), isEmpty);
573 } 588 }
589
590 void _assertPathIsInvalid(String patchPath) {
591 expect(() {
592 new SdkLibrariesReader(false).readFromFile(
593 resourceProvider.getFile('/libs.dart'),
594 '''
595 final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
596 'foo' : const LibraryInfo(
597 'foo/foo.dart',
598 patches: {
599 VM_PLATFORM: [r'$patchPath']}),
600 };''');
601 }, throwsArgumentError);
602 }
574 } 603 }
575 604
576 @reflectiveTest 605 @reflectiveTest
577 class SdkLibraryImplTest extends EngineTestCase { 606 class SdkLibraryImplTest extends EngineTestCase {
578 void test_patches() { 607 void test_patches() {
579 SdkLibraryImpl library = new SdkLibraryImpl('dart:foo'); 608 SdkLibraryImpl library = new SdkLibraryImpl('dart:foo');
580 // Set patches. 609 // Set patches.
581 library.setPatchPaths( 610 library.setPatchPaths(
582 SdkLibraryImpl.DART2JS_PLATFORM | SdkLibraryImpl.VM_PLATFORM, 611 SdkLibraryImpl.DART2JS_PLATFORM | SdkLibraryImpl.VM_PLATFORM,
583 ['a', 'b']); 612 ['a', 'b']);
584 library.setPatchPaths(SdkLibraryImpl.DART2JS_PLATFORM, ['c', 'd']); 613 library.setPatchPaths(SdkLibraryImpl.DART2JS_PLATFORM, ['c', 'd']);
585 library.setPatchPaths(SdkLibraryImpl.VM_PLATFORM, ['e']); 614 library.setPatchPaths(SdkLibraryImpl.VM_PLATFORM, ['e']);
586 // Get patches. 615 // Get patches.
587 expect(library.getPatches(SdkLibraryImpl.DART2JS_PLATFORM), 616 expect(library.getPatches(SdkLibraryImpl.DART2JS_PLATFORM),
588 unorderedEquals(['a', 'b', 'c', 'd'])); 617 unorderedEquals(['a', 'b', 'c', 'd']));
589 expect(library.getPatches(SdkLibraryImpl.VM_PLATFORM), 618 expect(library.getPatches(SdkLibraryImpl.VM_PLATFORM),
590 unorderedEquals(['a', 'b', 'e'])); 619 unorderedEquals(['a', 'b', 'e']));
591 } 620 }
592 } 621 }
OLDNEW
« pkg/analyzer/lib/src/generated/sdk.dart ('K') | « pkg/analyzer/lib/src/generated/sdk.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698