| // Copyright 2013 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:engine_tool/src/label.dart'; | |
| import 'package:litetest/litetest.dart'; | |
| void main() { | |
| group('Label', () { | |
| test('rejects relative paths', () { | |
| expect(() => Label.parse('../foo/bar'), throwsFormatException); | |
| expect(() => Label.parse('./foo/bar'), throwsFormatException); | |
| expect(() => Label.parse('foo/bar'), throwsFormatException); | |
| }); | |
| test('rejects starting with a number', () { | |
| expect(() => Label.parse('//foo/1bar'), throwsFormatException); | |
| expect(() => Label.parse('//foo/bar:1baz'), throwsFormatException); | |
| }); | |
| test('rejects other invalid characters', () { | |
| expect(() => Label.parse('//foo/bar!baz'), throwsFormatException); | |
| expect(() => Label.parse('//foo/bar:baz!'), throwsFormatException); | |
| }); | |
| test('rejects ending with a slash', () { | |
| expect(() => Label.parse('//foo/bar/'), throwsFormatException); | |
| expect(() => Label.parse('//foo/bar:baz/'), throwsFormatException); | |
| }); | |
| test('rejects empty target name', () { | |
| expect(() => Label.parse('//foo:'), throwsFormatException); | |
| }); | |
| test('rejects empty package name', () { | |
| expect(() => Label.parse(':bar'), throwsFormatException); | |
| }); | |
| test('parses valid labels', () { | |
| expect(Label.parse('//foo/bar'), Label('//foo/bar')); | |
| }); | |
| test('parses valid labels with target', () { | |
| expect(Label.parse('//foo/bar:baz'), Label('//foo/bar', 'baz')); | |
| }); | |
| test('parses valid labels with underscores', () { | |
| expect(Label.parse('//foo/bar_:_baz'), Label('//foo/bar_', '_baz')); | |
| }); | |
| test('parses the GN format', () { | |
| expect(Label.parseGn('//foo/bar'), Label('//foo/bar')); | |
| expect(Label.parseGn('//foo/bar:baz'), Label('//foo/bar', 'baz')); | |
| }); | |
| test('converts to string', () { | |
| expect(Label('//foo/bar').toString(), '//foo/bar:bar'); | |
| expect(Label('//foo/bar', 'baz').toString(), '//foo/bar:baz'); | |
| }); | |
| test('converst to the ninja format', () { | |
| expect(Label('//foo/bar').toNinjaLabel(), 'foo/bar:bar'); | |
| expect(Label('//foo/bar', 'baz').toNinjaLabel(), 'foo/bar:baz'); | |
| }); | |
| }); | |
| group('TargetPattern', () { | |
| test('parses a valid label', () { | |
| expect(TargetPattern.parse('//foo/bar'), TargetPattern('//foo/bar')); | |
| expect(TargetPattern.parse('//foo/bar:baz'), TargetPattern('//foo/bar', 'baz')); | |
| }); | |
| test('parses a wildcard package', () { | |
| final TargetPattern result = TargetPattern.parse('//foo/...'); | |
| expect(result, TargetPattern('//foo/...')); | |
| expect(result.target, isNull); | |
| }); | |
| test('parses a wildcard target', () { | |
| expect(TargetPattern.parse('//foo/bar:all'), TargetPattern('//foo/bar', 'all')); | |
| }); | |
| test('converts to string', () { | |
| expect(TargetPattern('//foo/bar').toString(), '//foo/bar:bar'); | |
| expect(TargetPattern('//foo/bar', 'baz').toString(), '//foo/bar:baz'); | |
| }); | |
| test('converts to the GN format', () { | |
| expect(TargetPattern('//foo/bar/...').toGnPattern(), 'foo/bar/*'); | |
| expect(TargetPattern('//foo/bar', 'baz').toGnPattern(), 'foo/bar:baz'); | |
| expect(TargetPattern('//foo/bar', 'all').toGnPattern(), 'foo/bar:*'); | |
| }); | |
| }); | |
| } |