import 'package:test/test.dart'; import '../../tool/src/release/targets.dart'; import '../../tool/src/release/version.dart'; void main() { const apps = {'learn', 'todo', 'train'}; test('one app, as before, with or without the version asked for', () { expect(parseTargets(['learn'], apps), [const ReleaseTarget('learn')]); expect(parseTargets(['train', 'minor'], apps), [ const ReleaseTarget('train', Bump.minor), ]); }); test('several apps, one after another in the order named, each with its ' 'own version asked for after a colon or not at all', () { expect(parseTargets(['train:minor', 'learn'], apps), [ const ReleaseTarget('train', Bump.minor), const ReleaseTarget('learn'), ]); expect(parseTargets(['learn', 'train', 'patch'], apps), [ const ReleaseTarget('learn'), const ReleaseTarget('train', Bump.patch), ]); }); test('refuses no app, an unknown one, one named twice, a version without ' 'its app or asked for twice, and an unknown version', () { for (final words in [ [], ['meditate'], ['learn', 'learn:minor'], ['minor'], ['learn:minor', 'patch'], ['learn', 'minor', 'patch'], ['learn:huge'], ['learn:'], ]) { expect( () => parseTargets(words, apps), throwsFormatException, reason: '$words', ); } }); }