Skip to content

Commit

Permalink
fix unsorted bug
Browse files Browse the repository at this point in the history
  • Loading branch information
jalal246 committed Mar 16, 2020
1 parent c1b0470 commit 9e1d9d9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
16 changes: 9 additions & 7 deletions src/packageSorter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ let sortingMap;
let unSorted;
let coreDep;
let elemAdded;

let indexes;
let indexesAdded;

/**
* Checks if targeted dependency is already added to sorted array.
Expand Down Expand Up @@ -63,6 +62,7 @@ function addTo(packages, at, isSorted) {
const target = isSorted ? sorted : unSorted;

const to = target.push(packages[at]) - 1;
indexesAdded[at] = true;

if (isSorted) {
sortingMap.push({
Expand All @@ -86,8 +86,10 @@ function sort(packages) {
let hasCoreDep = false;
let dep = {};

let lastI = 0;

for (let i = 0; i < packages.length; i += 1) {
if (!indexes[i]) {
if (!indexesAdded[i]) {
const pkg = packages[i];

const { dependencies } = pkg;
Expand All @@ -102,12 +104,12 @@ function sort(packages) {
isAddToSorted = !hasCoreDep || isDepInSorted(dep);

if (isAddToSorted) {
indexes[i] = true;

addTo(packages, i, true);

break;
}

lastI = i;
}
}

Expand All @@ -117,7 +119,7 @@ function sort(packages) {
* - remove it form packages.
*/
if (!isAddToSorted && hasCoreDep) {
addTo(packages, 0, false);
addTo(packages, lastI, false);
}
}

Expand All @@ -135,7 +137,7 @@ function sort(packages) {
function packageSorter(packages = [], coreDependency) {
unSorted = [];
sortingMap = [];
indexes = {};
indexesAdded = {};

/**
* Nothing to sort when:
Expand Down
4 changes: 1 addition & 3 deletions test/packageSorter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,6 @@ describe("sortPackages test", () => {
]);
});

// bug here:
it("returns all unsorted packages that have core dep", () => {
const pkg10 = {
name: "@folo/withcontext",
Expand All @@ -181,10 +180,9 @@ describe("sortPackages test", () => {

const packages = [pkg10, pkg11, pkg12];
const { sorted, unSorted } = sortPackages(packages, "@folo");
console.log("unSorted", unSorted);

expect(sorted.length).to.be.equal(0);
expect(unSorted).to.have.ordered.members([pkg10, pkg11, pkg12]);
expect(unSorted).to.have.ordered.members([pkg12, pkg11, pkg10]);
});

it("returns only packages that able to sort them, ignore the other", () => {
Expand Down

0 comments on commit 9e1d9d9

Please sign in to comment.