Skip to content

Commit

Permalink
fix: parse version number with multiple digits
Browse files Browse the repository at this point in the history
  • Loading branch information
Merrit committed Jan 30, 2023
1 parent cfa9f02 commit 6891da3
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 3 deletions.
16 changes: 13 additions & 3 deletions lib/app_version/app_version.dart
@@ -1,5 +1,6 @@
import 'dart:convert';

import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:package_info_plus/package_info_plus.dart';
import 'package:pub_semver/pub_semver.dart' as semver;
Expand Down Expand Up @@ -41,13 +42,22 @@ class AppVersion {
final data = List<Map>.from(json);
final tag = data.firstWhere((element) => element['prerelease'] == false);
final tagName = tag['tag_name'] as String;
// Strip the leading `v` and anything trailing.
// May need to be updated if we starting using postfixes like `beta`.
_latest = tagName.substring(1, 6);
_latest = parseVersionTag(tagName);
} else {
log.w('Issue getting latest version info from GitHub, '
'status code: ${response.statusCode}\n');
}
return _latest;
}

/// Returns the version number without the leading `v` or any postfix.
///
/// Examples:
/// `v1.2.3` becomes `1.2.3`.
/// `v1.2.3-beta` becomes `1.2.3`.
@visibleForTesting
String parseVersionTag(String tag) {
final version = tag.split('v').last.split('-').first;
return version;
}
}
50 changes: 50 additions & 0 deletions test/app_version/app_version_test.dart
@@ -0,0 +1,50 @@
import 'package:mocktail/mocktail.dart';
import 'package:nyrna/app_version/app_version.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:test/test.dart';

class MockPackageInfo extends Mock implements PackageInfo {}

final packageInfo = MockPackageInfo();

AppVersion appVersion = AppVersion(packageInfo);

void main() {
setUp(() {
appVersion = AppVersion(packageInfo);
});

group('AppVersion:', () {
group('parseVersionTag:', () {
test('parses versions with 1 digit in each place', () {
final version = appVersion.parseVersionTag('v1.2.3');
expect(version, '1.2.3');
});

test('parses versions with 2 digits in each place', () {
final version = appVersion.parseVersionTag('v12.23.34');
expect(version, '12.23.34');
});

test('parses versions with 3 digits in each place', () {
final version = appVersion.parseVersionTag('v123.234.345');
expect(version, '123.234.345');
});

test('parses versions with 1 digit in each place and a postfix', () {
final version = appVersion.parseVersionTag('v1.2.3-beta');
expect(version, '1.2.3');
});

test('parses versions with 2 digits in each place and a postfix', () {
final version = appVersion.parseVersionTag('v12.23.34-beta');
expect(version, '12.23.34');
});

test('parses versions with 3 digits in each place and a postfix', () {
final version = appVersion.parseVersionTag('v123.234.345-beta');
expect(version, '123.234.345');
});
});
});
}

0 comments on commit 6891da3

Please sign in to comment.