// Copyright 2016 The Chromium Authors. 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:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:test/test.dart'; void main() { setUp(() { String flutterRoot = platform.environment['FLUTTER_ROOT']; if (flutterRoot == null) throw new Exception('Please set FLUTTER_ROOT env var before running tests.'); String flutterTools = fs.path.join(flutterRoot, 'packages', 'flutter_tools'); assert(fs.path.equals(fs.currentDirectory.path, flutterTools)); }); test('no unauthorized imports of dart:io', () { bool _isNotWhitelisted(FileSystemEntity entity) => entity.path != fs.path.join('lib', 'src', 'base', 'io.dart'); for (String path in <String>['lib', 'bin']) { fs.directory(path) .listSync(recursive: true) .where(_isDartFile) .where(_isNotWhitelisted) .map(_asFile) .forEach((File file) { for (String line in file.readAsLinesSync()) { if (line.startsWith(new RegExp('import.*dart:io')) && !line.contains('ignore: dart_io_import')) { fail("${file.path} imports 'dart:io'; import 'lib/src/base/io.dart' instead"); } } } ); } }); test('no unauthorized imports of package:path', () { for (String path in <String>['lib', 'bin', 'test']) { fs.directory(path) .listSync(recursive: true) .where(_isDartFile) .map(_asFile) .forEach((File file) { for (String line in file.readAsLinesSync()) { if (line.startsWith(new RegExp('import.*package:path/path.dart'))) { fail("${file.path} imports 'package:path/path.dart'; use 'fs.path' instead"); } } } ); } }); } bool _isDartFile(FileSystemEntity entity) => entity is File && entity.path.endsWith('.dart'); File _asFile(FileSystemEntity entity) => entity;