@@ -313,4 +313,70 @@ void main() {
313
313
),
314
314
);
315
315
});
316
+
317
+ // Regression test for https://github.com/dart-lang/pub/issues/4644.
318
+ test (
319
+ 'Lockfile persists tag-pattern when `pub get`ing already locked file' ,
320
+ () async {
321
+ ensureGit ();
322
+ await d.git ('foo.git' , [
323
+ d.libPubspec ('foo' , '1.0.0' , sdk: '^3.9.0' ),
324
+ ]).create ();
325
+ await d.git ('foo.git' , []).tag ('1.0.0' );
326
+
327
+ await d
328
+ .appDir (
329
+ dependencies: {
330
+ 'foo' : {
331
+ 'git' : {
332
+ 'url' : p.join (d.sandbox, 'foo.git' ),
333
+ 'tag_pattern' : '{{version}}' ,
334
+ },
335
+ },
336
+ },
337
+ pubspec: {
338
+ 'environment' : {'sdk' : '^3.9.0' },
339
+ },
340
+ )
341
+ .create ();
342
+
343
+ await pubGet (
344
+ output: allOf (contains ('+ foo 1.0.0' )),
345
+ environment: {'_PUB_TEST_SDK_VERSION' : '3.9.0' },
346
+ );
347
+ final lockfile = loadYaml (
348
+ File (p.join (d.sandbox, appPath, 'pubspec.lock' )).readAsStringSync (),
349
+ );
350
+ final s = Platform .pathSeparator;
351
+ final foo = ((lockfile as Map )['packages' ] as Map )['foo' ];
352
+ expect (foo, {
353
+ 'dependency' : 'direct main' ,
354
+ 'description' : {
355
+ 'path' : '.' ,
356
+ 'resolved-ref' : isA <String >(),
357
+ 'tag-pattern' : '{{version}}' ,
358
+ 'url' : '${d .sandbox }${s }foo.git' ,
359
+ },
360
+ 'source' : 'git' ,
361
+ 'version' : '1.0.0' ,
362
+ });
363
+ await pubGet (environment: {'_PUB_TEST_SDK_VERSION' : '3.9.0' });
364
+ final lockfile2 = loadYaml (
365
+ File (p.join (d.sandbox, appPath, 'pubspec.lock' )).readAsStringSync (),
366
+ );
367
+ final foo2 = ((lockfile2 as Map )['packages' ] as Map )['foo' ];
368
+
369
+ expect (foo2, {
370
+ 'dependency' : 'direct main' ,
371
+ 'description' : {
372
+ 'path' : '.' ,
373
+ 'resolved-ref' : isA <String >(),
374
+ 'tag-pattern' : '{{version}}' ,
375
+ 'url' : '${d .sandbox }${s }foo.git' ,
376
+ },
377
+ 'source' : 'git' ,
378
+ 'version' : '1.0.0' ,
379
+ });
380
+ },
381
+ );
316
382
}
0 commit comments