Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 217839e

Browse files
committed
fix(generator): Write URI in sorted order to prevent SHA churn
1 parent 5ef3656 commit 217839e

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

lib/tools/template_cache_generator.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,13 @@ printTemplateCache(Map<String, String> templateKeyMap,
8989
outSink.write(fileHeader(outputLibrary));
9090

9191
List<Future> reads = <Future>[];
92-
templateKeyMap.forEach((uri, templateFile) {
92+
templateKeyMap.keys.toList()..sort()..forEach((uri) {
93+
var templateFile = templateKeyMap[uri];
9394
reads.add(new File(templateFile).readAsString().then((fileStr) {
9495
fileStr = fileStr.replaceAll('"""', r'\"\"\"');
9596
String resultUri = uri;
96-
urlRewriters.forEach((regexp, replacement) {
97+
urlRewriters.keys.toList()..sort()..forEach((regexp) {
98+
var replacement = urlRewriters[regexp];
9799
resultUri = resultUri.replaceFirst(regexp, replacement);
98100
});
99101
outSink.write(
@@ -139,7 +141,7 @@ class TemplateCollectingVisitor {
139141
var srcDirUri = new Uri.file(srcPath);
140142
Source currentSrcDir = sourceCrawler.context.sourceFactory
141143
.resolveUri2(null, srcDirUri);
142-
cacheUris.forEach((uri) => storeUriAsset(uri, currentSrcDir));
144+
cacheUris..sort()..forEach((uri) => storeUriAsset(uri, currentSrcDir));
143145
}
144146
});
145147
}
@@ -172,7 +174,8 @@ class TemplateCollectingVisitor {
172174
var paramName = namedArg.name.label.name;
173175
if (paramName == 'preCacheUrls') {
174176
assertList(namedArg.expression).elements
175-
.forEach((expression) =>
177+
..sort()
178+
..forEach((expression) =>
176179
cacheUris.add(assertString(expression).stringValue));
177180
}
178181
if (paramName == 'cache') {

test/io/template_cache_generator_spec.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ main() => describe('template_cache_generator', () {
5959
'\n'
6060
'primeTemplateCache(TemplateCache tc) {\n'
6161
'tc.put("rewritten/cssUrls/one.css", new HttpResponse(200, r"""body {}"""));\n'
62-
'tc.put("rewritten/cssUrls/two.css", new HttpResponse(200, r"""body {}"""));\n'
6362
'tc.put("rewritten/cssUrls/three.css", new HttpResponse(200, r"""body {}"""));\n'
63+
'tc.put("rewritten/cssUrls/two.css", new HttpResponse(200, r"""body {}"""));\n'
6464
'}');
6565
}).whenComplete(() {
6666
//tmpDir.deleteSync(recursive: true);

0 commit comments

Comments
 (0)