// 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')
library;

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('dwds pubspec has the stable as min SDK constraint', () {
    final pubspec = Pubspec.parse(File('pubspec.yaml').readAsStringSync());
    var sdkVersion = Version.parse(Platform.version.split(' ')[0]);
    sdkVersion = Version(sdkVersion.major, sdkVersion.minor, 0);

    final sdkConstraint = VersionConstraint.compatibleWith(sdkVersion);
    final pubspecSdkConstraint = pubspec.environment['sdk'];
    expect(pubspecSdkConstraint, isNotNull);
    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  Dwds pubspec constraint: $pubspecSdkConstraint',
    );
  });
}
