/
magnusroot
/
flutter
Обзор
Документация
Войти
/
magnusroot
/
flutter
Код
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
dev/devicelab/test/utils_test.dart
77 строк
2 KB
Ben Konyi
[flutter_tools, devicelab] Add safety filesystem guard to tests (#186748)
27 май 2026, 00:32
Не верифицирован
27 май 2026, 00:32
69a048f
Код
Авторство
О чём код?
// 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 'dart:io' as io; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:path/path.dart' as path; import 'common.dart'; void main() { group('grep', () { test('greps lines', () { expect(grep('b', from: 'ab\ncd\nba'), <String>['ab', 'ba']); }); test('understands RegExp', () { expect(grep(RegExp('^b'), from: 'ab\nba'), <String>['ba']); }); }); group('parse service', () { const badOutput = 'No uri here'; const sampleOutput = 'A Dart VM Service on ' 'Pixel 3 XL is available at: http://127.0.0.1:9090/LpjUpsdEjqI=/'; test('uri', () { expect(parseServiceUri(sampleOutput), Uri.parse('http://127.0.0.1:9090/LpjUpsdEjqI=/')); expect(parseServiceUri(badOutput), null); }); test('port', () { expect(parseServicePort(sampleOutput), 9090); expect(parseServicePort(badOutput), null); }); }); group('engine environment declarations', () { test('localEngine', () { expect(localEngineFromEnv, null); expect(localEngineHostFromEnv, null); expect(localEngineSrcPathFromEnv, null); }); }); group('filesystem safety guard', () { test('isolates modifications to system temp directory', () { final tempFile = io.File( path.join(io.Directory.systemTemp.path, 'devicelab_fs_guard_test_safe.txt'), ); addTearDown(() { if (tempFile.existsSync()) { tempFile.deleteSync(); } }); // Writing under system temp should succeed tempFile.writeAsStringSync('safe-devicelab-content'); expect(tempFile.readAsStringSync(), 'safe-devicelab-content'); // Modifying outside system temp should fail and throw our guarded exception final String root = path.rootPrefix(io.Directory.current.absolute.path); final unsafeFile = io.File(path.join(root, 'tmp_unsafe_devicelab.txt')); expect(unsafeFile.existsSync(), false); expect( () => unsafeFile.writeAsStringSync('unsafe-content'), throwsA( isA<io.FileSystemException>().having( (e) => e.message, 'message', contains('Test attempted to modify file outside of temp directory'), ), ), ); }); }); }