Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions lib/metadata/find-owners.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
"use strict";
var github = require('../github'),
paths = require('./paths'),
uniq = require('../uniq'),
yaml = require('js-yaml');

// https://github.com/web-platform-tests/rfcs/blob/master/rfcs/web_features.md#step-4-adjust-the-wpt-pr-bot-to-handle-reviews-of-the-changes
var webFeaturesReviewers = ['foolip', 'jcscottiii'];

function getReviewersFile(path, reviewers) {
return github.get("/repos/:owner/:repo/contents/:path", { path: path + "/META.yml" })
.then(function(file) {
Expand Down Expand Up @@ -40,15 +36,9 @@ function parentDir(path) {
return path.join("/");
}

module.exports = async function(filenames) {
// If only WEB_FEATURES.yml files are touched, route the review to
// web-features contributors.
if (filenames.every((filename) => filename.endsWith('/WEB_FEATURES.yml'))) {
return webFeaturesReviewers;
}

module.exports = async function(_directories) {
var reviewers = [];
var directories = paths(filenames).slice(0);
var directories = _directories.slice(0);
// Reversing the array here keeps compatibility with a previous version of
// this code, which used a recursive structure and called pop() on the
// array each time. This could likely be removed with some investigation.
Expand Down
4 changes: 3 additions & 1 deletion lib/metadata/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";

const getFilenames = require('./filenames'),
paths = require('./paths'),
findSpecs = require('./find-specs'),
findOwners = require('./find-owners'),
findRemovedReviewers = require('./find-removed-reviewers'),
Expand Down Expand Up @@ -49,6 +50,7 @@ module.exports = async function getMetadata(number, author, title, content) {
author = author.toLowerCase();

metadata.filenames = await getFilenames(number);
metadata.paths = paths(metadata.filenames);
const fileLabels = labels.fromFiles(metadata.filenames);
metadata.isRoot = metadata.filenames.some(function(path) {
return path.split('/').length == 1;
Expand All @@ -61,7 +63,7 @@ module.exports = async function getMetadata(number, author, title, content) {
fileLabels, labels.fromWorkingGroups(metadata.workingGroups)
);

let reviewers = await findOwners(metadata.filenames);
let reviewers = await findOwners(metadata.paths);

const removedReviewers = await findRemovedReviewers(number);
reviewers = reviewers.filter(function(reviewer) {
Expand Down
34 changes: 6 additions & 28 deletions test/find-owners.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ suite('parse META', function() {

suite('integration', function() {
test('directory contains file', function() {
return findOwners(['resources/testharness.js'])
return findOwners(['resources'])
.then(function(reviewers) {
reviewers.sort();

Expand All @@ -40,46 +40,24 @@ suite('integration', function() {
});

test('parent directory contains file', function() {
return findOwners(['dom/nodes/attributes.html'])
return findOwners(['2dcontext/scroll'])
.then(function(reviewers) {
reviewers.sort();

assert.deepEqual(reviewers, [
'annevk', 'jdm', 'zqzhang'
'AmeliaBR', 'annevk', 'fserb', 'jdashg', 'kenrussell'
]);
});
});

test('consolidation of multiple directories', function() {
return findOwners(['resources/testharness.js', 'dom/nodes/attributes.html'])
return findOwners(['resources', '2dcontext'])
.then(function(reviewers) {
reviewers.sort();

assert.deepEqual(reviewers, [
'annevk', 'ayg', 'gsnedders',
'jdm', 'jgraham', 'zqzhang'
]);
});
});

test('only WEB_FEATURES.yml changes', function() {
return findOwners(['dom/WEB_FEATURES.yml'])
.then(function(reviewers) {
reviewers.sort();

assert.deepEqual(reviewers, [
'foolip', 'jcscottiii'
]);
});
});

test('WEB_FEATURES.yml and test changes', function() {
return findOwners(['dom/WEB_FEATURES.yml', 'dom/nodes/attributes.html'])
.then(function(reviewers) {
reviewers.sort();

assert.deepEqual(reviewers, [
'annevk', 'jdm', 'zqzhang'
'AmeliaBR', 'annevk', 'ayg', 'fserb', 'gsnedders',
'jdashg', 'jgraham', 'kenrussell'
]);
});
});
Expand Down
6 changes: 6 additions & 0 deletions test/get-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ suite('getMetadata', function() {
],
rootReviewers: [ 'jgraham' ],
filenames: [ 'WebIDL/interfaces.html', 'interfaces/WebIDL.idl' ],
paths: [ 'WebIDL', 'interfaces' ],
labels: [ 'WebIDL', 'interfaces', 'wg-webplatform' ],
isRoot: false,
isWebKitVerified: false,
Expand Down Expand Up @@ -166,6 +167,10 @@ suite('getMetadata', function() {
permission: "write"
}
],
paths: [
"svg/coordinate-systems",
"svg/coordinate-systems/parsing",
],
reviewedDownstream: null,
reviewers: [
"ameliabr",
Expand Down Expand Up @@ -375,6 +380,7 @@ suite('getMetadata', function() {
'media-source/webm/test-a-1s.webm-manifest.json',
'media-source/webm/test-v-1s-blue.webm',
'media-source/webm/test-v-1s-blue.webm-manifest.json' ],
paths: [ '', 'media-source', 'media-source/mp4', 'media-source/webm' ],
isRoot: true,
specs:
{ 'media-source':
Expand Down