Future verify()

in pkg/pub_integration/lib/script/dev_version.dart [29:166]


  Future<void> verify(bool stableFirst) async {
    _pubToolClient = await DartToolClient.create(
        pubHostedUrl: pubHostedUrl,
        credentialsFileContent: credentialsFileContent);
    _temp = await Directory.systemTemp.createTemp();
    try {
      _pubCacheDir = Directory(p.join(_temp.path, 'pub-cache'));
      await _pubCacheDir.create(recursive: true);
      await File(p.join(_pubCacheDir.path, 'credentials.json'))
          .writeAsString(credentialsFileContent);

      if (stableFirst) {
        await _publishVersion('0.9.0');
        _expectContent(
          await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
          present: [
            '_dummy_pkg 0.9.0',
          ],
          absent: [
            '<a href="/packages/_dummy_pkg">0.9.0</a>',
            '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
          ],
        );
        await _publishVersion('1.0.0-beta');
      } else {
        await _publishVersion('1.0.0-beta');
        _expectContent(
          await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
          present: [
            '_dummy_pkg 1.0.0-beta',
          ],
          absent: [
            '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
            '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
          ],
        );
        await _publishVersion('0.9.0');
      }

      // At this point both 0.9.0 and 1.0.0-beta is published.
      // We display both versions.
      _expectContent(
        await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
        present: [
          '_dummy_pkg 0.9.0',
          '<a href="/packages/_dummy_pkg">0.9.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
        ],
        absent: [
          '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
        ],
      );

      // Publishing a stable version that is not larger than the dev version
      // keeps it on the page.
      await _publishVersion('0.9.1');
      _expectContent(
        await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
        present: [
          '_dummy_pkg 0.9.1',
          '<a href="/packages/_dummy_pkg">0.9.1</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
        ],
        absent: [
          '<a href="/packages/_dummy_pkg">0.9.0</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0">0.9.1</a>',
        ],
      );

      // Publishing a new dev version updates the dev version link.
      await _publishVersion('1.0.0-gamma');
      _expectContent(
        await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
        present: [
          '_dummy_pkg 0.9.1',
          '<a href="/packages/_dummy_pkg">0.9.1</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-gamma">1.0.0-gamma</a>',
        ],
        absent: [
          '<a href="/packages/_dummy_pkg">0.9.0</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-gamma</a>',
          '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0">0.9.1</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
        ],
      );

      // Publishing the stable version removes the dev version link.
      await _publishVersion('1.0.0');
      _expectContent(
        await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
        present: [
          '_dummy_pkg 1.0.0',
        ],
        absent: [
          '<a href="/packages/_dummy_pkg">0.9.0</a>',
          '<a href="/packages/_dummy_pkg">0.9.1</a>',
          '<a href="/packages/_dummy_pkg">1.0.0</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-gamma</a>',
          '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0">0.9.1</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-gamma">1.0.0-gamma</a>',
        ],
      );

      // Publishing a new dev version will trigger the re-appear of the dev link.
      await _publishVersion('1.1.0-dev');
      _expectContent(
        await _pubHttpClient.getLatestVersionPage('_dummy_pkg'),
        present: [
          '_dummy_pkg 1.0.0',
          '<a href="/packages/_dummy_pkg">1.0.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.1.0-dev">1.1.0-dev</a>',
        ],
        absent: [
          '<a href="/packages/_dummy_pkg">0.9.0</a>',
          '<a href="/packages/_dummy_pkg">0.9.1</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg">1.0.0-gamma</a>',
          '<a href="/packages/_dummy_pkg/versions/0.9.0">0.9.0</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0">0.9.1</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-beta">1.0.0-beta</a>',
          '<a href="/packages/_dummy_pkg/versions/1.0.0-gamma">1.0.0-gamma</a>',
        ],
      );
    } finally {
      await _temp.delete(recursive: true);
      await _pubToolClient!.close();
      _pubToolClient = null;
      await _pubHttpClient.close();
    }
  }