// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

@TestOn('vm')
@Skip('Intended to run in analyze stage on stable SDK only, see mono_pkg.yaml')
import 'dart:io';

import 'package:pub_semver/pub_semver.dart';
import 'package:pubspec_parse/pubspec_parse.dart';
import 'package:test/test.dart';

void main() {
  test('webdev pubspec has the stable as min SDK constraint', () {
    var pubspec = Pubspec.parse(File('pubspec.yaml').readAsStringSync());
    var sdkVersion = Version.parse(Platform.version.split(' ')[0]);
    sdkVersion = Version(sdkVersion.major, sdkVersion.minor, 0);

    var sdkConstraint = VersionConstraint.compatibleWith(sdkVersion);
    var pubspecSdkConstraint = pubspec.environment!['sdk']!;
    expect(sdkConstraint.allowsAll(pubspecSdkConstraint), true,
        reason:
            'Min sdk constraint is outdated. Please update SDK constraint in '
            'pubspec to allow latest stable and backwards compatible versions.'
            '\n  Current stable: $sdkVersion, '
            '\n  Webdev pubspec constraint: $pubspecSdkConstraint');
  });
}
