diff --git a/packages/mason/lib/src/bricks_json.dart b/packages/mason/lib/src/bricks_json.dart index 562843dfa..05abe1732 100644 --- a/packages/mason/lib/src/bricks_json.dart +++ b/packages/mason/lib/src/bricks_json.dart @@ -440,11 +440,13 @@ class BricksJson { if (environment.containsKey('MASON_CACHE')) { return Directory(environment['MASON_CACHE']!); } else if (isWindows) { + const longPathPrefix = r'\\?\'; final appData = environment['APPDATA']!; - final appDataCacheDir = Directory(p.join(appData, 'Mason', 'Cache')); - if (appDataCacheDir.existsSync()) return Directory(appDataCacheDir.path); + final appDataCacheDir = + Directory(longPathPrefix + p.join(appData, 'Mason', 'Cache')); + if (appDataCacheDir.existsSync()) return appDataCacheDir; final localAppData = environment['LOCALAPPDATA']!; - return Directory(p.join(localAppData, 'Mason', 'Cache')); + return Directory(longPathPrefix + p.join(localAppData, 'Mason', 'Cache')); } else { return Directory(p.join(environment['HOME']!, '.mason-cache')); } diff --git a/packages/mason/lib/src/path.dart b/packages/mason/lib/src/path.dart index 7b616b1e7..1a589b9fb 100644 --- a/packages/mason/lib/src/path.dart +++ b/packages/mason/lib/src/path.dart @@ -7,8 +7,8 @@ import 'package:path/path.dart' as p; /// However, it does not change the ASCII case of the path. /// See https://github.com/dart-lang/path/issues/102. String canonicalize(String path) { - return p.normalize(p.absolute(path)).replaceAll(r'\', '/'); + return p.normalize(p.absolute(path)); } /// Normalizes the [path]. -String normalize(String path) => p.normalize(path).replaceAll(r'\', '/'); +String normalize(String path) => p.normalize(path); diff --git a/packages/mason/test/src/bricks_json_test.dart b/packages/mason/test/src/bricks_json_test.dart index 8558e3c5e..4f205c93a 100644 --- a/packages/mason/test/src/bricks_json_test.dart +++ b/packages/mason/test/src/bricks_json_test.dart @@ -717,7 +717,10 @@ environment: )..createSync(recursive: true); BricksJson.testEnvironment = {'APPDATA': directory.path}; BricksJson.testIsWindows = true; - expect(BricksJson.rootDir.path, equals(appDataCacheDirectory.path)); + expect( + BricksJson.rootDir.path, + equals('${r'\\?\'}${appDataCacheDirectory.path}'), + ); }); test( @@ -732,7 +735,10 @@ environment: 'LOCALAPPDATA': directory.path }; BricksJson.testIsWindows = true; - expect(BricksJson.rootDir.path, equals(appDataCacheDirectory.path)); + expect( + BricksJson.rootDir.path, + equals('${r'\\?\'}${appDataCacheDirectory.path}'), + ); }); test('uses HOME by default', () {