// 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:code_assets/code_assets.dart'; import 'package:flutter_tools/src/isolated/native_assets/macos/native_assets_host.dart'; import '../../../src/common.dart'; void main() { test('framework name', () { expect(frameworkUri('libfoo.dylib', {}), equals(Uri.file('foo.framework/foo'))); expect(frameworkUri('foo', {}), equals(Uri.file('foo.framework/foo'))); expect(frameworkUri('foo_foo', {}), equals(Uri.file('foo_foo.framework/foo_foo'))); expect(frameworkUri('foo-foo', {}), equals(Uri.file('foo-foo.framework/foo-foo'))); expect(frameworkUri(r'foo$foo', {}), equals(Uri.file('foofoo.framework/foofoo'))); expect(frameworkUri('foo.foo', {}), equals(Uri.file('foofoo.framework/foofoo'))); expect( frameworkUri('libatoolongfilenameforaframework.dylib', {}), equals(Uri.file('atoolongfilenameforaframework.framework/atoolongfilenameforaframework')), ); }); test('framework name conflicts', () { final alreadyTakenNames = {}; expect(frameworkUri('libfoo.dylib', alreadyTakenNames), equals(Uri.file('foo.framework/foo'))); expect( frameworkUri('libfoo.dylib', alreadyTakenNames), equals(Uri.file('foo1.framework/foo1')), ); expect( frameworkUri('libfoo.dylib', alreadyTakenNames), equals(Uri.file('foo2.framework/foo2')), ); expect( frameworkUri('libatoolongfilenameforaframework.dylib', alreadyTakenNames), equals(Uri.file('atoolongfilenameforaframework.framework/atoolongfilenameforaframework')), ); expect( frameworkUri('libatoolongfilenameforaframework.dylib', alreadyTakenNames), equals(Uri.file('atoolongfilenameforaframework1.framework/atoolongfilenameforaframework1')), ); expect( frameworkUri('libatoolongfilenameforaframework.dylib', alreadyTakenNames), equals(Uri.file('atoolongfilenameforaframework2.framework/atoolongfilenameforaframework2')), ); }); group('parseOtoolArchitectureSections', () { test('single architecture', () { expect( parseOtoolArchitectureSections(''' /build/native_assets/ios/buz.framework/buz (architecture x86_64): @rpath/libfoo.dylib '''), >{ Architecture.x64: ['@rpath/libfoo.dylib'], }, ); }); test('single architecture but not specified', () { expect( parseOtoolArchitectureSections(''' /build/native_assets/ios/buz.framework/buz: @rpath/libfoo.dylib '''), >{ null: ['@rpath/libfoo.dylib'], }, ); }); test('multiple architectures', () { expect( parseOtoolArchitectureSections(''' /build/native_assets/ios/buz.framework/buz (architecture x86_64): @rpath/libfoo.dylib /build/native_assets/ios/buz.framework/buz (architecture arm64): @rpath/libbar.dylib '''), >{ Architecture.x64: ['@rpath/libfoo.dylib'], Architecture.arm64: ['@rpath/libbar.dylib'], }, ); }); test('multiple lines in section', () { expect( parseOtoolArchitectureSections(''' /build/native_assets/ios/buz.framework/buz (architecture x86_64): @rpath/libfoo.dylib @rpath/libbar.dylib '''), >{ Architecture.x64: ['@rpath/libfoo.dylib', '@rpath/libbar.dylib'], }, ); }); test('trim each line in section', () { expect( parseOtoolArchitectureSections(''' /build/native_assets/ios/buz.framework/buz (architecture x86_64): @rpath/libfoo.dylib '''), >{ Architecture.x64: ['@rpath/libfoo.dylib'], }, ); }); }); }