| // Copyright 2014 The Flutter 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:file/file.dart'; |
| import 'package:file/memory.dart'; |
| import 'package:flutter_tools/src/base/file_system.dart'; |
| import 'package:flutter_tools/src/dart/pub.dart'; |
| |
| import '../../src/common.dart'; |
| |
| void main() { |
| testWithoutContext('join two folders', () async { |
| final MemoryFileSystem fileSystem = MemoryFileSystem(); |
| final Directory target = fileSystem.currentDirectory.childDirectory('target'); |
| final Directory extra = fileSystem.currentDirectory.childDirectory('extra'); |
| target.createSync(); |
| target.childFile('first.file').createSync(); |
| target.childDirectory('dir').createSync(); |
| |
| extra.createSync(); |
| extra.childFile('second.file').writeAsBytesSync(<int>[0]); |
| extra.childDirectory('dir').createSync(); |
| extra.childDirectory('dir').childFile('third.file').writeAsBytesSync(<int>[0]); |
| extra.childDirectory('dir_2').createSync(); |
| extra.childDirectory('dir_2').childFile('fourth.file').writeAsBytesSync(<int>[0]); |
| extra.childDirectory('dir_3').createSync(); |
| extra.childDirectory('dir_3').childFile('fifth.file').writeAsBytesSync(<int>[0]); |
| joinCaches( |
| fileSystem: fileSystem, |
| globalCacheDirectory: target, |
| dependencyDirectory: extra, |
| ); |
| |
| expect(target.childFile('second.file').existsSync(), true); |
| expect(target.childDirectory('dir').childFile('third.file').existsSync(), false); |
| expect(target.childDirectory('dir_2').childFile('fourth.file').existsSync(), true); |
| expect(target.childDirectory('dir_3').childFile('fifth.file').existsSync(), true); |
| expect(extra.childDirectory('dir').childFile('third.file').existsSync(), true); |
| }); |
| |
| group('needsToJoinCache()', (){ |
| testWithoutContext('make join', () async { |
| final MemoryFileSystem fileSystem = MemoryFileSystem(); |
| final Directory local = fileSystem.currentDirectory.childDirectory('local'); |
| final Directory global = fileSystem.currentDirectory.childDirectory('global'); |
| |
| for (final Directory directory in <Directory>[local, global]) { |
| directory.createSync(); |
| directory.childDirectory('hosted').createSync(); |
| directory.childDirectory('hosted').childDirectory('pub.dartlang.org').createSync(); |
| } |
| final bool pass = needsToJoinCache( |
| fileSystem: fileSystem, |
| localCachePath: local.path, |
| globalDirectory: global, |
| ); |
| expect(pass, true); |
| }); |
| |
| testWithoutContext('detects when global pub-cache does not have a pub.dartlang.org dir', () async { |
| final MemoryFileSystem fileSystem = MemoryFileSystem(); |
| final Directory local = fileSystem.currentDirectory.childDirectory('local'); |
| final Directory global = fileSystem.currentDirectory.childDirectory('global'); |
| local.createSync(); |
| global.createSync(); |
| local.childDirectory('hosted').createSync(); |
| local.childDirectory('hosted').childDirectory('pub.dartlang.org').createSync(); |
| |
| expect( |
| needsToJoinCache( |
| fileSystem: fileSystem, |
| localCachePath: local.path, |
| globalDirectory: global |
| ), |
| false |
| ); |
| }); |
| testWithoutContext("don't join global directory null", () async { |
| final MemoryFileSystem fileSystem = MemoryFileSystem(); |
| final Directory local = fileSystem.currentDirectory.childDirectory('local'); |
| const Directory? global = null; |
| local.createSync(); |
| local.childDirectory('hosted').createSync(); |
| local.childDirectory('hosted').childDirectory('pub.dartlang.org').createSync(); |
| |
| expect( |
| needsToJoinCache( |
| fileSystem: fileSystem, |
| localCachePath: local.path, |
| globalDirectory: global |
| ), |
| false |
| ); |
| }); |
| }); |
| } |